程序化系統的構建,有以下幾個流程:
第一,程序主體的設計:
這通常又有兩種思路:其一是,自上而下的構建,也就是現有交易理念,再通過理念推導出交易系統,并將其程序化。比如索羅斯的交易系統,便是由他的反射理論,推導構建出的交易程序。
其二是,自下而上的構建,也就是通過反復的觀察,得出經驗,并將其程序化。比如題主說的單純用指標,或者指標的混合。
顯而易見,第一種思路的可靠性要遠遠高于第二種思路。其后會慢慢說道。
第二,交易程序的初步檢驗:
交易系統的檢驗,原則是“接近實戰”,也就是必須考慮手續費和滑點的影響。
在初步檢驗里,因為沒有進行任何優化,檢驗的結果是比較能夠反映出上一步所設計的交易系統是否具有持續盈利的潛力,如果在這一步就已經失敗,那么說明交易思路或者經驗是錯誤的,不具備持續盈利的能力。
個人認為,在這一步,系統的勝率應該在50%以上,最大回撤時間不能超過90個周期(不同級別的交易系統不能統一按時間計算),連續虧損次數不能超過5次,那么這個系統基本具備持續盈利的能力。
第三,交易系統的優化:
經過初步檢驗的交易系統,可以進入優化階段,很多程序化交易者反對優化,因為優化會使交易系統適用于過去而無用于將來,即優化陷阱。
我認為主要還是交易者優化的時候,是采用了數據優化,還是理念優化。
打個比方,一個交易系統設計的理念是順勢突破交易法,如海龜交易法(突破N周高點做多,跌破N周低點做空)數據優化就是尋找N的最合適數值,而理念優化,就是尋找比單純的突破法更優秀更高效的交易思維。
這里就可以看出程序設計時候的兩種思路之優劣了。
第四,交易系統的外推檢驗:
通過了優化的系統,已經初步成熟,外推檢驗就像生產線中的質檢一樣,一個產品能否上市,這是最重要的一個環節,具有一票否決權。
外推檢驗分兩種,一種是時間外推。即用更多的數據進行回測,觀察交易系統是否穩定。
二種是品種外推。如題主的螺紋程序,拿去橡膠,銅,豆粕,股指這些大品種上進行回測,甚至在外匯,國外商品,國外股市上進行檢驗。
一套具備實盤盈利前景的系統,必須適用于絕大部分品種的交易。如果不能經過外推檢驗,那么這個系統很可能只是一個偶然,或者已經過度優化了。
第五,交易系統的實盤使用和維護:
很少有系統是能經過第四條檢驗的,如果走到這一步,恭喜了,你可以安心的用它來賺錢了。
當然也不是睡睡覺數數錢那么簡單,電腦有時候也是會出問題的,這個問題暫且不討論,一個非常嚴重的現象是,行情波動的特征是會變的。
其變化表現在:其一,波動特性改變了。
舉例來說:2002到2009年,你只要有個最簡單最簡單的均線系統,你就發財了。但是2005年以后,這樣簡單的系統獲利已經不穩定,而09年以后,基本就不可能再用來獲利了。又如前幾年,做股指高頻交易的人都發財了,我聽到最高的一年有30倍,但是現在呢,高頻交易都已經開始自相殘殺了。為什么?因為市場上精明的交易者越來越多了,當你的對手還在用肉搏的時候,你有一把手槍就可以稱王,但是現在,別人都開上飛機坦克了。
其二,交易環境變化。
比如近幾年,期貨夜盤的大量推出,導致不同時間段的交易分布不再均勻,很多交易系統便不能適應了。大合約的變動,也導致了很多微觀波動結構的改變。所以交易系統必須時時進行維護和修補,甚至必要時直接宣布它死亡。
從這一點上看,又可以發現,第一步設計交易系統的兩種方式的優劣。自下而上開發的系統,永遠只是根據開發時期的數據作為樣本,日后修改起來也將非常困難,而自上而下開發的系統,它是基于本質的,而市場波動的本質特征,幾百年來都未曾改變,只是表現方式變了而已。