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