自己開發的程序化交易策略如何驗證測試和使用歷史數據回測?
2018-9-11 / 已閱讀:6771 / 上海邑泊信息科技
程序化交易策略開發完畢后,僅僅完成了第一不。從事程序化交易最終目的還是想在期貨或股票市場獲得更多盈利,程序化交易策略只是幫助實現更多盈利的工具,如何在投入實盤之前對新開發出來的程序化交易策略可能實際運行的性能狀況有個大概了解呢?
我們無法預測并使用未來的行情數據來測試統計程序化交易策略。但是可以通過2種方法來對已經開發完畢的程序化交易策略進行定量分析,并根據分析數據結果判斷策略優劣。
一種方法是使用相同品種歷史上的數據,將開發出來的程序化交易策略按照歷史行情的演化執行并統計盈利虧損總額、盈利虧損次數、平均盈利金額、平均虧損金額、最大回撤比例等度量數據。
另一種方法是采用蒙特卡洛模擬的辦法,隨機產生不同組未來行情數據,針對每一組模擬運行程序化交易策略,并統計上述同樣的統計數據,最后合計平均得到總體度量數據。要想完全實現蒙特卡洛模擬,其實很復雜的,除了指數爆炸增長的計算量外,還有一個技術問題就是每個品種它有獨特內在的行情演化規律,按照簡單平均數產生的蒙特卡洛行情無法考慮其特定品種內在特性引起的非均勻概率分布情況。而要考慮這種特定品種內在特性引起的非均勻概率分布情況,則增加了問題復雜性。純邏輯的研究方法是要找出這種規律并表達出來,這種工作量是巨大的,有點類似行業研究員研究具體的行業,并給出邏輯嚴謹的行業研究報告。另一種方法是使用人工智能神經網絡,通過大量歷史數據訓練,將這種品種獨有的特性存儲到人工神經網絡神經鏈接權重矩陣里,但是無法用嚴謹的邏輯語言表達這種特性,但后再以該人工智能神經網絡作為參數輸入影響蒙特卡洛行情的輸入概率分布。
對于第一種方法來說,實現起來簡單,并且需要的硬件成本也很低,一般一臺普通電腦就可以了。而第二種方法實現起來復雜,后續運行可能也需要大量計算機服務器集群,可能還需要GPU對人工智能神經網絡進行加速。
第一種方法由于使用了該特定品種的歷史行情數據,里面已經包括了該品種都有的一些內在行情演化特性,用它來測試開發完畢的程序化交易策略更具代表性。但是第一種方法的一個弱點是:歷史的行情數據并不完全代表未來的行情,在歷史數據上測試獲得的好的收益率并不一定在未來行情上能獲得同樣的收益率,所以在進行歷史測試時,需要考慮更多統計數據,比如最大回撤、盈利波動率或穩定性,通過考慮這些因素來降低策略投入實盤后的風險來控制虧損。