解讀量化投資-西蒙斯 - 第20章

上一章 下一章 首页
從概念上講,遺傳編程是一個很簡單、很直觀的尋找模型的方法,和一般的量化模型的設計開發相比,這是草根式的,從下到上:給電腦一大堆簡單的模型和規則,你們自己組合吧,生產出來的後代經過一代一代的擇優篩劣,最後剩下的那一組或者那幾組就是最適應環境的模型。不一定是最好的,但應該是最能生存的。與此相對,通常量化模型設計的方式是從上到下的,像上帝造人,之前已經有一個大模樣,用泥巴或者肋骨條,按照心裡的模樣造出來,然後放到伊甸園裡面試試車,也許做些小的修改。因為設計者事先已經考慮了各種問題,所以從他的角度來說,鑿出來的模型就是最好的。但是遺傳編程方法走的是不同的道路,應該說是集思廣益的一種算法:每一代、每一種組合單獨看上去不夠系統、不夠漂亮,但是經過多代演化之後的結果也許並不差。其實這種尋找最佳交易模型的出發點和市場交易的出發點類似:在市場交易中,每個人都想著自己的蠅頭小利,但是最後組合起來卻常常能找到效率很高的解決辦法。
這位美聯儲的學者最開始用了一些大家都常常使用的簡單規則,其中包括我們前面講過的雙移動平均線、通道突破系統,還有另外一些技術分析裡面常用的規則,給它們不同的參數,這算是第一代,然後使這些規則自由隨機組合、演變,「生」出很多第二代的規則,這些規則和第一代的規則一起接受歷史數據的檢驗,看看哪些賺錢,哪些賠錢。賠錢的清除,賺錢的留下當成第三代的標本,進一步組合和演變。
我們舉個簡單的例子吧:假定第一代有兩個規則,一個是前面說過的王老五的模型:今天的股價是否超過前面三天中兩天的收盤股價,超過的話買入,收市前平倉;另一個是大獎章過去用過的規則,如果今天的開盤價遠高於昨天的收盤價,比如高5%,拋出,為了簡單起見,我們假定收市前平倉。
這兩個規則可以產生突變:比如王老五的規則,變成今天看昨天的股價是否超過之前三天中兩天的收盤股價,超過的話買入,收市前平倉,這叫王老五第二代;大獎章規則,變為如果今天的開盤價高於昨天早市的收盤價5%,拋出,這可以叫大獎章第二代。在遺傳編程的計算中,上面的突變是由電腦隨機產生的,一次有可能產生多個。
這兩個規則也可以進行基因重組:比如一個新的規則可以是如果今天的開盤價高於前面三天中兩天的收盤價5%,早市拋出,午市買入,這是王老五和大獎章的混合體,可以叫大王第二代。這種重組也是由電腦隨機產生的,組合是無窮無盡的。
我們用歷史交易數據來檢驗第一代和第二代的交易規則究竟表現如何,然後留下比較好的,淘汰比較差的,接著進行下一步的突變和重組。
這樣重複下去,直到選出的投資模型基本上趨於穩定不再變化的時候,他就把這個模型當成是最適應生存的量化模型。這個模型裡面也許有很多不同的子模型,因為模型和模型之間可以組合起來,這樣做能夠減少風險。同時,因為要篩選很多代,各種規則可能一個套一個,套很多層,新的規則變得十分複雜,人腦可能根本不能看穿究竟是什麼樣的邏輯關係。不過這沒關係,電腦本來就是用來處理這些複雜規則的。
這位學者把這個新的模型用在金融行業裡面交易量最大的外匯市場上,發現在所有試過的匯率上,這個新的量化模型都賺錢。學者終歸是學者,他用數據分析的結果發表了數篇文章,最後的結論是外匯市場的有效性值得懷疑。這些文章加入了千千萬萬對有效市場假說提出質疑的洪流之中,也沒有什麼動靜,因為我們說過了,有效市場假說的確有很多問題,問題隨著數據的增多和研究方法的增多而增加,有些像英國的海岸線。
在我讀到這幾篇文章之前,類似遺傳編程的人工智能模型在我們銀行也被使用過。20世紀90年代人們用得比較多的人工智能方法之一叫神經網絡方法,模擬人的神經系統對各種數據進行簡單判斷,各路的神經首先獨自做出不同的簡單判斷,這些判斷再由「大腦」進行匯總,得出最後的結論。現在,神經網絡的分析方法在量化投資中用的並不是很多,因為這種模型一般需要的參數比較多,所以用歷史數據做模擬交易的時候它們能賺很多錢,因為這些參數「記憶」了歷史數據的溝溝回回。但是等到把這些模型用到實戰中的時候,它們的生存能力一般都比較差,所以這類「傳統」的人工智能模型在投資實戰中不是很有用。
20世紀末21世紀初,電腦的計算能力節節攀升,新的人工智能算法慢慢被應用到越來越多的行業,遺傳編程就是其中的一種算法。相對於神經網絡,遺傳編程對歷史數據並不總是委曲求全,因為每一代計算的時候只是將已經有的相對簡單的模型進行隨機交叉和變異,並不是一味地增加參數。
我當時對這種算法的興趣還源於另外一個考慮:那時候我接觸到不少的量化投資基金,對它們內部的營運也慢慢有所瞭解,我覺得遺傳編程所採取的計算方法其實和這些量化基金內部改進它們模型的過程是非常相似的。我們說過了,量化投資的模型一般會隨著時間的推移而出現「疲勞」,所以任何量化基金都需要不停地改進自己的模型,這個過程通常是交叉和變異的過程:對已有模型的參數進行更改,在模型上加上其他一些條件,或者將兩種模型套用,有時候也會加一些全新的模型,等等。新和舊的模型通常會在實際運作中混用一段,之後選出最適合的模型或者模型組合使用,而且這個過程是持續進行的,一撥完了接下來又是一撥。從某種意義上說,遺傳編程的運算過程其實是把量化基金不斷修改自己模型的實際運作過程放在電腦上進行模擬,所以我覺得這種算法挺有前途。當然要說一句,這種比較複雜的算法通常都存在過分依附歷史數據的毛病,所以並不是越高級、名頭越怪的算法就越好,更不能說越高級的算法越能賺錢。通常來說,高級的算法都只是對歷史數據的描述更好而已,這個問題我們在後面說到數據挖掘時要仔細來看,現在先按下不表。在使用遺傳編程算法來選擇模型的時候也要格外注意這個問題,好在美聯儲的學者在這方面考慮得比較周到。
我跟作者取得了聯繫,他澄清了我的幾個疑問,這更使我覺得這個模型能夠掙錢。我想複製他的研究結果,但是當時我們銀行正在經歷一場驚天動地的合併(前面說過了,由長期資本管理的倒閉引起的),所以人心惶惶,我找不到合適的技術支援來完成編程和運算,我自知自己的編程能力實在是不能向這樣的任務挑戰的,所以我跟作者建議說能不能向我們公開他的源代碼。給美聯儲的學者付錢自然是連想都不用想的事情,我提出的交換條件是我們可以向他提供一些我們銀行獨有的數據。數據對研究人員來說就像璞玉對於一個玉石匠人,尤其是我們銀行是很大的做市商,所以有很多質量很高的價格和交易量數據,外界沒有。他一聽就動心了,立即同意。我通過銀行的法律部門草擬了一份保密協定,發給了他,大意是說雙方都沒有觸犯知識產權法律等,所做的交換天知地知。可是他突然間沒有了音訊,過了一段時間我才聯繫到他。原來他拿著我們的保密協定給美聯儲的律師看的時候人家提出了意見:「美聯儲研究人員的研究成果被市場上的投機商拿去投機,這是不是有一些道德上的問題呢?」人家律師連著用了兩次「投機」這個詞,態度是很明確的。這位學者和我只能笑笑,最後作罷。雖說到了後來我還是沒有忘記這個模型,但是我的工作性質發生了變化,不再跟模型打交道,所以也沒有把過去這個斷了的線索撿起來過。再後來我見到一些資料,遺傳編程這種方法的確在那個時間前後被幾個比較大規模的量化基金所使用。
千奇百怪的量化方法
通過這個作為前菜的小故事我想要說的是:量化投資的模型和研究手段太多了,涉及很多貌似不相干的領域。可以毫不誇張地說,基本上所有理工科能用到的工具都已經在投資模型上試過了。除了高等統計學裡面所羅列的研究方法之外,在量化投資中紮下根的還包括許多常常被人提到的其他研究工具和方法,比如:模糊邏輯、神經網絡、基因編程、隱含馬爾可夫模型、小波變換、貝葉斯網絡、分型幾何、聚類分析,等等。既然這是一本講量化技術的書,我們不妨在這裡簡單介紹一下,沒有興趣的讀者盡可放心跳過這一節。
·模糊邏輯——一種進行邏輯判斷和運算的方法,假定各種概念不能完全用「是」或者「否」來代表,而可以是70%的「是」,30%的「否」,亦即我們通常說的似是而非;做邏輯判斷的時候也不能簡單地說如果「是」的情況下則如何如何,要麼如果「否」的情況下則如何如何,因為「是」或者「否」本來都不是完全確定的。在模糊邏輯中,判斷都是要通過一些特定的模糊運算來完成。可以看到,模糊邏輯的運算方法是針對現實生活中許多不能用涇渭分明的邏輯關係來表達的情況設計的,在量化投資分析中常常無法準確判斷,所以存在同樣的情況,使用模糊邏輯可能比較合適。
·神經網絡——前面提過,將很多小的模型組合起來,模擬人腦判斷方式的運算方法,每一個小的模型都相當於一個神經元,可以單獨簡單思考,然後由一個「大腦」做出總判斷。比如一個小模型只用雙移動平均線法判斷短期趨勢,另外一個判斷長期趨勢,還有一個使用通道突破法,等等。每種模型分別判斷,然後神經網絡會把它們綜合起來。這種方法也可以和模糊邏輯聯合使用。
·遺傳編程——前面也提過。模仿生物進化中基因突變和重組的過程,讓很多模型自由突變、組合,通過現實數據來尋找最能適應環境的模型組合。
·隱含馬爾可夫模型——馬爾可夫模型指某種價格或者系統從上一個狀態跳到下一狀態的隨機過程,下一步和上一步之間沒有什麼直接的關係,也就是說,這個系統沒有記憶。隱含的馬爾可夫模型是指有些變量無法直接觀測的情況,這個模型是在復興技術創業時代參與過的里昂納多·鮑姆首先提出來的,現在在很多領域都有應用。在金融中它可以被用來推測目前的市場狀態究竟是趨勢呢還是在區間徘徊,究竟是高波動性的狀態還是低波動性的狀態,等等。1993年加盟復興技術的劍橋大學數學博士尼克·帕特森就是全球這項分析技術公認的專家。2000年他離開復興技術,將這種分析技術用到人類基因的破譯工作上。復興技術使用這種模型的可能性非常大。
·子波變換——信號處理的一種技術。通俗地說,就是製造出一些特定的波動,叫小波,然後讓這些小波跟所要研究的對象互動,等到再把小波分離出來的時候,小波裡面就有關於研究對象的一些信息了。製造不同的小波,就能探聽出不同的信息,這種方法在很多行業都有應用。在處理金融數據的時候,用波的方法來分析應當算是一個比較獨特的角度,因為波的長度、頻率之類的概念是我們平常研究金融數據的時候不十分關注的東西。舉個例子,小波可以是一筆小的交易,通過市場價格對此的響應,你可以推斷出是不是有什麼大的交易潛伏在什麼價位。
·貝葉斯網絡——貝葉斯計算方法歸功於18世紀的英國數學家貝葉斯神父,主要的意思是說各種概率只是目前的一個不完全的信念,而不是上帝安排好的一成不變的東西(這當然不是貝葉斯神父的原話),人們應該按照最新出現的信息來更新各種概率。貝葉斯網絡就是按照這個思路建立起來的一個網絡,描述一系列不確定的數據和過程之間的可能存在的因果關係,並不斷更新。
·分型幾何——前面提過了。分數維數的空間和混沌系統,蝴蝶撲閃出來的龍捲風。
·聚類分析——一種統計工具,按照數據和一些事先制定的標準將各種不同的對象分成不同的組群,其實也就是我們通常說的個子大的人站後邊,個子小的往前站的複雜版本。當然,用機器來完成的聚類分析不僅僅能在很短的時間內將大量的數據分門別類,而且能找到我們並不知道的類別。
這些分析方法也許聽上去都很複雜,其實我們日常生活中接觸到的許多東西都使用過這些方法:比如互聯網的搜索、電網上電量的調整、天氣預報、疾病的診斷、基因的篩選、藥物的設計和測試、電子信號的壓縮和傳輸、手機上的手寫體輸入和語音撥號,等等,所以它們被用在金融投資上面並不是那樣奇怪。當然,我們猜這本書的讀者更關心的是點錢點到手發軟的西蒙斯所使用的量化模型,那麼我們就接著說回西蒙斯吧。
有關他的交易模型的消息自然不可能在學術雜誌上找到,但我們也不是一無所知。
你是否在撒謊
還記得1990年從埃克斯手中買走埃克斯有限公司股份的加州大學教授伯樂坎普嗎?他當年成為埃克斯有限公司總裁,1年以後他以6倍的價錢把股份出售給了西蒙斯。他應該是給西蒙斯的交易模型打下最早的基礎的人,但是他覺得跟搞金融的人打交道很悶,所以選擇留在校園裡面。
伯樂坎普在自己的簡歷上說:大獎章的交易模型所使用的分析數據的方法基本上都是源於他的統計信息理論。
統計信息理論應該說是一種從大量的噪音中尋找信號,最後做出結論的方法,跟我們前面提過的最大熵理論和隱含馬爾可夫過程都有關係。理論的本身非常學術化,三言兩語也說不清楚,但是伯樂坎普的研究是從一個大家熟悉的遊戲開始的。我們平常所玩的「猜人名」的遊戲是這樣的:兩個人,一個提問,一個回答是否。回答問題的人隨便想一個古今中外的人名,提問的人來問問題,而回答人只說「是」或者「否」,看看在多少個問題之後提問的人能猜出回答人想好的那個名字。雖說大千世界的人物那麼多,但是通常問問題的人都可以用十幾個問題確定回答人想的是誰。伯樂坎普關注的問題要比我們這個遊戲複雜一些,回答的人可能在回答問題的時候撒謊數次,所以猜的難度一下子增加了,因為你不知道回答的人說「是」的時候是在說真話還是在說謊。伯樂坎普的統計信息理論研究的是關於三個變量對提問的人能否猜出正確答案的影響。這三個變量是:第一,想名字的範圍有多大,1萬人?10萬人?範圍越大,越難猜;第二,問問題的人可以問幾個問題,問題越多,越容易找到結果;第三,提問的人能撒幾次謊,次數越多,越難猜。伯樂坎普的理論給出了這三個變量之間的關係。
我們不知道這個理論究竟是如何被伯樂坎普和西蒙斯用在價格規律的發現過程中的。一種可能性是研究過去一段時間(比如說1萬天,相當於上面說的範圍變量)的價格變化,每一次變化只有兩種可能,上或者下,相當於「是」和「否」;我們可以把每天價格變化之前的各種價格走勢當成是各種問題:比方有一天價格上漲了5%,之前價格連續三天上升,另有一天價格下跌了3%,當前這個月份第一個週四的上午價格先漲了2%之後又回落了1%,等等。我們把這些觀察到的東西當成是各種不同的問題,而把隨後那一天的價格變化當成是答案。前面的價格現象可以轉化為這樣的問答:
上一章 下一章