策略效果評估(策略評價與建立模擬)
2023-09-19 16:39:35
策略評價與建立模擬
摘要
評價策略回測的指標建立模擬交易未來函數運行過慢過擬合策略失效收益與風險的取捨自測與自學在學習了如何編寫策略後,我們將介紹下評價策略回測的指標,如何建立模擬交易,以及除回測之外還有哪些需要關注的方面。策略回測指標
如下圖,一個策略回測後會給出一些指標,可以在API文檔:風險指標查看這些指標的公式及基本說明。下文將補充介紹下幾個重要指標。建立模擬交易
之前講過回測是用歷史數據模擬執行策略,模擬交易是用未來的實際行情模擬執行策略,因此當策略完善的自以為差不多沒什麼問題時,建議建立一個模擬交易觀察一段時間,當作進一步的檢驗。建立的模擬交易的方法很簡單,點擊回測結果界面,如下圖,右上部紅色模擬交易按鈕,即可新建模擬交易。未來函數
未來函數的前文講過,即指策略利用了歷史當時無法得到的信息,造成回測結果極大失真。未來函數排查方法一般是人工查看,重點看一切跟時間有關的地方,尤其注意各個API關於時間的默認處理方法。當然有時未來函數隱藏的很隱蔽,而更好但稍花時間的方法是用策略建立模擬交易,一般讓模擬交易運行幾天,多數未來函數問題都能被發現,因為模擬交易是不可能引入未來數據的,所以往往引入未來函數的策略無法成功運行模擬交易。需要注意的是有時同一個代碼的策略在模擬交易中是沒有引入未來函數的,而是在歷史回測中引入未來函數。此時會發現歷史回測結果很好,模擬交易也能正常運行,但回測結果是失真的,而模擬交易運行時間長了往往也與回測相去甚遠。一個具體的情況是,策略無意中引入了未來信息,導致策略選的股票過去一年中漲的最好的股票買,那麼當然用過去一年做回測時效果會很好,但在模擬交易中可能就效果很差。一條判斷策略引入未來函數的經驗法則是,當你發現策略回測收益極高,回撤又極低,而且各個時間段表現都特別好,感覺自己發現了自動印鈔機式的交易策略時,則此策略大概率是引入未來函數了:)運行過慢
策略的運行效率也是需要關注的問題,儘管新手幾乎不會遇到,但需要簡單了解下,有個意識。有時策略比較複雜,計算量會很大,極端時可能會造成交易延遲,延誤買股票的時機,分鐘級策略尤其需要關注下耗時問題,而相關函數就是enable_profile API文檔-性能分析用法就是把enable_profile這行代碼複製粘貼放到策略代碼的第一行。然後你成功回測後可以在回測詳情頁面查看性能分析的結果,如下圖,從而可以查看哪行代碼耗時比較多,從而有目的性的去改進。過擬合
過擬合(overfitting)常用於描述這樣的情況。策略一般都有一些參數,如持股數量、交易頻率等,選擇不同的參數,固定的一份歷史數據下,策略的回測結果好壞也不同,人們往往會選回測結果最好的參數作為策略的參數使用,但隨後若換了一份歷史數據(換一個時間段)做回測或隨後用現實數據運行模擬或實盤,發現效果遠不如之前的回測結果,此時很可能策略的參數過擬合了,或說之前選回測結果最好的參數這一行為使參數過擬合了。當參數多的時候,更容易發生。過擬合的核心思想是,過度細緻的解讀樣本數據,從而沒有認識到本質的規律,從而使策略或系統失去了普適性,對原樣本數據表現極其優異,但對非原樣本數據外情況的有效性大大降低。一個關於幫助理解過擬合的比喻是,老師拿一個試卷(樣本數據)考學生(策略),學生成績不理想,老師要教學生(調整參數),此時老師不是教學生學科原理,而是教學生背試卷的答案(過度擬合),當然結果會導致,當再考同一個試卷時學生肯定表現極度優異,但因為只背了答案而沒理解原理,所以當換套題目或應用時學生就表現極差了。因此在選擇並優化策略的參數時,要考慮參數的魯棒性,即策略好壞對參數變化的敏感性。對於參數優化與選擇對應有複雜最優化理論與魯棒性測試,對初學者在此問題建議是,控制參數數量,多測幾組參數大致看下參數變化對策略的影響,另外考慮進行樣本外測試,即用一份樣本數據回測挑選參數,用另一份樣本數據回測看選擇的參數在樣本外情況下表現如何。策略失效
策略一般是有時效的。當你的策略十分完善,並且模擬效果理想,實盤效果也很理想,不要以為策略就會像印鈔機一樣一直賺錢,策略可以失效的,比如當策略運行中出現歷史上罕見的情形時往往就要警惕了,比如最大回撤創歷史新高,策略收益率不再增加甚至減少等。如何判斷策略是否失效以及找出失效的原因並無通法,但策略失效的原因可能有以下幾種,可供參考。策略生效的邏輯基礎不再成立。比如策略的有效性是建立在漲跌停製度下的、或是建立在某行業不斷成長前提下的、或是建立在全球某資源持續稀缺前提下的等,當這些制度或前提不再成立,如制度調整、新政發布、科技進步等,那麼策略自然也就失效了。因此,理解策略有效的邏輯是十分重要的。操作資金量過大。更大的操作資金,會導致更大的衝擊成本,即使買入時價更高、賣出時價更低,而當操作資金過大使市場流動性不足承載時,衝擊成本會極大的變高,大大降低利潤,甚至導致虧損。所以策略是有資金容量的,建議逐步增大策略操作資金量。市場上運行的相似策略過多。同類相似的策略都想賺市場上的同一份錢,然而這份錢是有限的,所以這些策略彼此間會競爭,導致策略賺錢變難,甚至完全失效賺不到錢。具體的表現可能是要買的股票買不到、想賣的股票賣不到理想價位等。因此,交易行業是非常注意保密且不適合分享的行業,而有志者則要注重培養自學能力。市場出現了寄生策略。當你的策略被發現市場中的有心人發現並足夠程度的監測時,他可以寫出一個針對你策略的策略,從而寄生在你的策略上,比如在比你買之前買入,在你買後拉升股價後賣。這種針對你策略的寄生策略,往往會壓縮你策略的盈利空間,使策略失效。收益與風險的取捨
往往策略的收益能力與抗風險能力是互相制約不能兼顧的,兩者之間如何取捨建議是,達到基本的收益能力後,極力追求低風險,理由是盈利水平往往可以通過增加資金量來提高。具體的講就是,策略a是一個年化收益率300%,最大回撤率50%的策略,策略b是一個年化收益率30%,最大回撤率5%的策略,只要給策略b提供相當於策略a的10倍的資金量,兩者盈利能力就是一樣的,但很難讓策略a有像策略b一樣的抗風險能力。自測與自學
嘗試下建立模擬以及用微信接收交易信號。到聚寬的策略擂臺欄目看看他人的策略。策略成功回測後,體驗下歸因分析這個新功能,位置如圖。