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