在數(shù)學中,對于可導函數(shù),可以完美的定義最優(yōu)化問題: 對導數(shù)泰勒展開,相當于應用二階導數(shù)尋找極值方向,收斂速度更快。 和梯度下降法類似,僅需要一階導數(shù)信息,但是克服了收斂慢的缺點,算是解大型非線性最優(yōu)化最有效的算法之一。在各種優(yōu)化算法中,共軛梯度法是非常重要的一種。 由美國的J.Holland于1975年首先提出的啟發(fā)式算法。遺傳算法是一種智能隨機搜索算法。遺傳算法仿照自然界中生物的進化過程,種群的進化遵從自然選擇和適者生存,更適應環(huán)境的個體有更大機率存活和繁衍,適應性差的個體則會被淘汰,攜帶較高適應性基因的父母進行繁殖可能產生適應性更強的后代。遺傳算法模擬上述過程,其一般流程如下: 其基本思想是把某類優(yōu)化問題的求解過程與統(tǒng)計熱力學的熱平衡問題進行對比,試圖通過模擬高溫物體退火的過程來找到優(yōu)化問題的全局最優(yōu)解或近似全局最優(yōu)解。金屬退火原理是將金屬加溫至充分高,再讓其徐徐冷卻,加溫時,金屬內部粒子隨溫升變?yōu)闊o序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態(tài),最后在常溫時達到基態(tài),內能減為最小。 3.蟻群算法(Ant System, Ant Colony System) 是由意大利學者Dorigo、Maniezzo等人于20世紀90年代提出來的啟發(fā)式算法。 將蟻群算法應用于解決優(yōu)化問題的基本思路為:用螞蟻的行走路徑表示待優(yōu)化問題的可行解,整個螞蟻群體的所有路徑構成待優(yōu)化問題的解空間。路徑較短的螞蟻釋放的信息素量較多,隨著時間的推進,較短的路徑上累積的信息素濃度逐漸增高,選擇該路徑的螞蟻個數(shù)也愈來愈多。最終,整個螞蟻會在正反饋的作用下集中到最佳的路徑上,此時對應的便是待優(yōu)化問題的最優(yōu)解。 螞蟻找到最短路徑要歸功于信息素和環(huán)境,假設有兩條路可從蟻窩通向食物,開始時兩條路上的螞蟻數(shù)量差不多:當螞蟻到達終點之后會立即返回,距離短的路上的螞蟻往返一次時間短,重復頻率快,在單位時間里往返螞蟻的數(shù)目就多,留下的信息素也多,會吸引更多螞蟻過來,會留下更多信息素。而距離長的路正相反,因此越來越多的螞蟻聚集到最短路徑上來。比如下圖: 兩只螞蟻從A點出發(fā),一只走AD,一只走ACD,每個單位時間走一步,考慮9個單位時間之后,第一只走到了終點D,第二只剛走到C,僅僅是一半的路程。 第一只螞蟻開始返回,等到第二只螞蟻走到D時,第一只返回到了起點,這時過了18個單位時間。這時,AD中每一步的留下的信息素是ACD路徑中信息素的兩倍。36個單位時間后,第二只螞蟻剛返回起點,ACD每個點上留下2個信息素,但是ABD上留下4個信息素。然后蟻群在AD上增派螞蟻,ACD上依然一只螞蟻,再經過36個單位時間后,兩條路線上的信息素比例為4:1,這樣隨著時間的增加,蟻群在AD上增派的螞蟻越來越多,信息素也越來越多,最終所有螞蟻都放棄ACD,選擇AD。 螞蟻具有的智能行為得益于其同時具有多樣性和正反饋的行為規(guī)則。在覓食時,多樣性使螞蟻不會走進死胡同而無限循環(huán),是一種創(chuàng)新能力;正反饋使優(yōu)良信息保存下來,是一種學習強化能力。兩者的巧妙結合使智能行為涌現(xiàn),如果多樣性過剩,系統(tǒng)過于活躍,會導致過多的隨機運動,陷入混沌狀態(tài);如果多樣性不夠,正反饋過強,會導致僵化,當環(huán)境變化時蟻群不能相應調整。 蟻群算法可以用來解決經典的TSP(Travelling Salesman Problem)問題。 AS算法中,需要定義信息素強度,能見度,隨機選擇比例等一系列符號體系: 假和分別為起點和終點,就可以做如下定義:能見度,相當于兩個點之間距離的倒數(shù);信息素強度,然后就可以定義第只螞蟻在點選擇下一個目的地時的概率: 當 不滿足時候,概率為0,是第只螞蟻在時刻,尚未訪問過的節(jié)點集合。其中,和是常數(shù),表示對信息素和能見度的權重比例。 AS算法的大致步驟如下: 經典蟻群算法可以輕松應對城市小于75的問題,這些年,蟻群算法有大量的變種,越來越完善,可以解決更大型問題。經過對比,在大型TSP問題中(最多包括132個城市),蟻群算法表現(xiàn)要優(yōu)于遺傳算法和模擬熄火。 對于一組隨機數(shù)據,假設,我們可以擬合,使其和之間盡可能的接近,在平方損失準側下, 是理論最優(yōu)的函數(shù)形式,統(tǒng)計估計的任務就是對上述期望值進行估計。兩種常見的方式是: 2、對上述期望值直接用x領域附近的點進行平均估計,比如 .這就是局部近領的思想。 不管使用什么思路構造估計模型,估計的效果可以用平方損失進行衡量,可以構造一個叫做均方誤差(Mean Squared Error,MSE)的指標衡量估計值和真實值之間的差距,假設訓練數(shù)據集為,對于觀測值。 其中 (三)CTA策略的尋優(yōu)難題 CTA策略的參數(shù)尋優(yōu)問題,看起來很簡單,但問題的本質其實和前面介紹的理論背景息息相關,這個問題是數(shù)學的,又是統(tǒng)計的,同時更是藝術的。 回到CTA策略的本質,想想我們在構造一個什么樣的東西。 1、變量 CTA策略中,最本質的變量其實是價格,和數(shù)學問題相比,這個價格變量是隨機的,和一般統(tǒng)計問題相比,這個變量是個近似連續(xù)的隨機過程(每個tick都是一個隨機變量)。 當我們引入CTA這個語言體系,其實是已經假設要對趨勢進行刻畫和跟隨,tick層面的數(shù)據無法進行有效的趨勢跟隨,因此把tick數(shù)據抽樣成給定周期的K線數(shù)據,就是非常重要的一步。因此我們的面對的變量,可以看做是個離散時間的隨機過程。但是,我們處理這個隨機過程的方法并不是追求平穩(wěn)性變換,最終根據隨機過程各個變量在時間層面的穩(wěn)定性,發(fā)掘出整體的概率結構。 2、目標 CTA最核心的假設是,大部分時候隨機過程在震蕩,少部分時候,出現(xiàn)明顯的方向性趨勢,我們的目標就是根據方向性趨勢的出現(xiàn)進行趨勢研判的預測(gen sui),獲取收益,如果預測(gen sui)錯誤,或者方向回調,就止損出場,等待新的信號。 針對這個假設我們構造的交易系統(tǒng),其實就是一個用來解決上述問題的函數(shù),這個函數(shù)的輸入雖然是一維隨機過程,由于我們要使用隨機過程的時間信息,實際上是個高維向量,我們針對高維向量通過交易函數(shù)(入場、止損)計算出來對應的交易業(yè)績。 上面就是我們的交易系統(tǒng),是我們的自變量,也就是根線,根據使用的信息,每個變量從1到維(開高低收、成交量)不定。 表示交易系統(tǒng)涉及的個參數(shù),這里顯然,否則相當于直接擬合了所有線的信息,很大的時候,交易系統(tǒng)幾乎是不可用的,因為過度參與了市場的個性化波動,而沒能找到具有一般性規(guī)律的趨勢結構。通常我們希望。 CTA參數(shù)尋優(yōu)最尷尬的地方在于我們對線底層的隨機結構一無所知,盡管有效市場假說等從隨機過程的角度給出了解釋,但是交易是否賺錢很難用統(tǒng)計檢驗去驗證。統(tǒng)計假設檢驗可以以一定的概率證偽某種特定的隨機結構,但無法證實,證實接受可能是檢驗的功效不足無法證偽,也就是假設檢驗很難證實一個確定的結構,隨機游走只是一種猜想。CTA賺錢僅僅是說某些局部的趨勢結構具有延續(xù)性,整體上趨勢結構的盈利空間,大于震蕩結構的止損空間,因為樣本不足,這個函數(shù)結構很難直接去證偽。 回到CTA參數(shù)尋優(yōu),我們面臨的問題并不是數(shù)學優(yōu)化中梯度下降快速找到最優(yōu)解的問題,也不是統(tǒng)計估計中根據隨機結構平衡方差和偏差得到最優(yōu)估計的問題。真正的問題在于我們面對一個數(shù)據隨機,但是我們對隨機結構并不知曉的估計,同時我們的估計損失函數(shù)是一個復雜的交易系統(tǒng)(哪怕最簡單的均線系統(tǒng),也不是一個簡單的數(shù)學函數(shù)),如果我們在樣本內暴力尋優(yōu),可能可以讓估計偏差最小,但是這個交易系統(tǒng)的穩(wěn)定性非常差,因此大邏輯上可以做到的只能是讓交易函數(shù)盡可能保持簡單,,保證估計函數(shù)的方差較小,然后通過適當?shù)膬?yōu)化,減少估計偏差。 3、手段和方法 1)控制參數(shù)個數(shù) 一個優(yōu)秀的交易系統(tǒng),可變的參數(shù)應該是2,最多不要超過3,這一方面控制了交易系統(tǒng)的復雜度防止高度擬合,也防止在更高維度估計參數(shù)引起的高維詛咒。因為交易系統(tǒng)本身對K線進行了降維處理,參數(shù)的個數(shù)類似于變量的個數(shù)。 2)避免業(yè)績孤島 對于的CTA策略,由于涉及的計算并不是特別復雜,因此我們總是可以對參數(shù)進行窮舉式運算得到各種可能的業(yè)績值,這時候最主要的問題就是最優(yōu)的業(yè)績是歷史偶然事件,還是真正我們所捕捉到的隨機結構?這個時候最核心的方法是看最優(yōu)業(yè)績周圍的參數(shù)分布,如過周圍參數(shù)的業(yè)績是平滑和漸進的,那么最優(yōu)業(yè)績是可信的,否則只是偶然事件不可信。 漫長的技術分析發(fā)展史中,技術分析師們根據交易實踐矯正了很多有實際用途的參數(shù),比如5/10/20這種或者7/14/21這種和周、兩周、月等歷法對應的實踐,又比如1/2/3/5/8/13/21/34/55這種Fibonacci數(shù)列,經驗參數(shù)本身就是避免過度擬合的方法之一,如果經典參數(shù)和平滑業(yè)績相對應,那一般是可以接受的。 常見算法是: 上述方法是量邦天語定義的后驗方法,運行時日志如下: 其輸出的熱力圖示意如下: (二)局部線性估計 局部線性估計是一種非常重要的現(xiàn)代非參數(shù)統(tǒng)計方法,其核心思想是在每個局部用線性結構來擬合目標函數(shù),但是整體上保持靈活性和動態(tài)性,從而平衡估計函數(shù)的方差和偏差。我們將局部線性估計應用于參數(shù)尋優(yōu),最核心的思想是暴力尋優(yōu)后,把參數(shù)當做自變量,把業(yè)績當成函數(shù)值,然后對業(yè)績曲面進行局部線性估計平滑,從而掌握參數(shù)曲面的整體形態(tài),更好應用前面提到的幾個參數(shù)尋優(yōu)原則。 局部線性估計的平滑結果受核權重函數(shù)的影響并不大,但是受平滑窗寬的影響非常大,包含進平滑的樣本點個數(shù)決定了業(yè)績曲線的光滑度,會產生平滑不足或者過度平滑的問題。 精確最優(yōu)的平滑窗寬需要知道模型隨機誤差的分布信息,實際上這些信息完全不可知。通常的窗寬用一種經驗算法來確定,假設隨機誤差是正態(tài)分布,并用到業(yè)績樣本標準差信息 (三)移動平滑估計 如果是抽樣解決效率和精度問題,局部線性估計提高尋優(yōu)結果的可讀性,移動平滑方法從根本上改變尋優(yōu)的思路,通過對樣本的切割,把尋優(yōu)數(shù)據和評估數(shù)據加以區(qū)分,沿著樣本移動若干次之后,對若干對參數(shù)的樣本外業(yè)績進行綜合評估,這有些借鑒Cross Validation的統(tǒng)計學思想。 假設我們一共有根K線,首先需設置如下參數(shù): = 窗口樣本中訓練樣本的長度(K線數(shù)目) = 窗口樣本中測試樣本的長度(K線數(shù)目) = 窗口每次移動的的長度(K線數(shù)目) 綜合考慮所有窗口中的結果來確定策略表現(xiàn)的有效性和參數(shù)的穩(wěn)定性,輸出下表 我們對前面的優(yōu)化問題進行適當簡化,以200天為樣本內數(shù)據滾動尋優(yōu),可以得到下圖: 有些時候,人們喜歡把多參數(shù)和多策略、多品種、多周期并列為同一級別的四多,獲取實際意義上的分散。乍看參數(shù)尋優(yōu)并不屬于品種、策略思路和周期一個維度的問題,是要通過尋找分個彼此高下的問題,但是我們建議,不妨在一定的程度上,把參數(shù)也當做一個策略維度,進行配置,對于兩個距離較大,但是業(yè)績都還不錯的參數(shù)取值而言,這種分散相當于更加穩(wěn)健的策略結構,有些機器學習boosting的思路。最重要的是,多參數(shù)和多策略、多周期,其實也是一種平衡關系。 |
|