飛狐金魔方大交易師智能交易使用教程(12)-歷史回測 [仁 心 慧 能]
前兩節(jié)我們介紹了測評報告,測評報告是由歷史回測產(chǎn)生的統(tǒng)計結(jié)果。
歷史回測(BackTest)的意義
編寫好交易策略后,不要以為就可以等著發(fā)財了,除非“確認”這套策略應該有效,不然毫無意義。有多種方式測試所準備應用的策略是否有效,可以直接用實戰(zhàn)來測試,但萬一失敗會很受傷,也可進行模擬交易,但費時費力。最有效的方法,就是先用歷史數(shù)據(jù)進行測試,通過了,再進行模擬交易或?qū)崙?zhàn)測試。
用歷史數(shù)據(jù)進行測試,可以了解到交易策略在實際運用中可能遇到的狀況和大體的績效。一套策略如果不適用于過去的市場狀況,就更沒理由相信它適用于未來。在拿資金冒險之前,應該首先了解交易策略的各種可能的表現(xiàn)。
值得注意的是,歷史測試的績效并不等于未來績效,一套策略在測試過程中,即使表現(xiàn)完美,也不能保證在實際運用中不會發(fā)生嚴重虧損,但只要經(jīng)過適當?shù)臏y試,就可以了解到策略可能發(fā)生的最嚴重虧損的程度,避免實戰(zhàn)時才發(fā)現(xiàn),自己的資金無法承受或交易風格不愿意承受這類損失,而導致被迫中途放棄一套原本可以成功的策略。
在測試過程中,應該把歷史數(shù)據(jù)分為兩部分,一部分用來調(diào)整交易策略或參數(shù)的數(shù)據(jù),稱為樣本內(nèi)數(shù)據(jù);另外一部分對策略來說是全新的“陌生”數(shù)據(jù)用來做真正的測試,稱為樣本外數(shù)據(jù)。
在測試策略尤其是短線、高頻策略時,要重視交易成本,對于交易傭金和滑移價差,預估、設(shè)置必須符合實際。當市場出現(xiàn)突發(fā)消息、價格大幅波動時,滑移價差往往很大,此時實際交易的表現(xiàn)可能遠不如模擬交易。一些看起來不錯的策略,考慮傭金和滑價后卻虧錢。千萬不要忽視這些必然發(fā)生的成本,否則測試結(jié)果是不靠譜的。
由于歷史測試往往是以最近成交價作為開平倉價格,對于不活躍的缺乏流動性的品種來說,由于買賣價差大,最近成交價顯然不能作為能夠?qū)嶋H成交的價格,所以也應該設(shè)定較大的滑移價差。
運用歷史數(shù)據(jù)進行測試,其功能如同試婚,這并不保證婚姻成功,但這是一種很好的方式可以增進對雙方關(guān)系的信心,并避免一些不愉快的意外。通過歷史測試,可以了解該策略的運作程序與限制。
應注意兩個傾向,第一種想盡快賺錢而迫不及待地展開交易,因此很少用歷史數(shù)據(jù)測試其策略以驗證有效性。另一個傾向是認為,過去有杰出表現(xiàn)的策略在未來也一定能夠帶來利潤,過去績效越佳,用于實際交易時,博取豐厚利潤的機會也越大。上述兩種想法都同樣危險。
歷史數(shù)據(jù)
歷史數(shù)據(jù)的正確性,是確保真實交易信號的關(guān)鍵,是得出有意義結(jié)論的基礎(chǔ)。
測試所用的歷史數(shù)據(jù),應該充分反映實際的市場狀況,包括各種可能發(fā)生的情形,需要知道該策略在上升趨勢、下跌趨勢、區(qū)間盤整、劇烈波動等各種市場狀況的表現(xiàn)。如果數(shù)據(jù)太少,很難判斷測試結(jié)果究竟是偶然因素造成的,還是交易策略確實有效。持倉時間越長,相應需要越長時間的數(shù)據(jù)。測試期間的交易筆數(shù)應足夠多,否則不能歸納出任何有意義的統(tǒng)計結(jié)論。
但是,數(shù)據(jù)越多未必意味著越好,回溯的時間越久,其結(jié)果可能越不能反映最近的市場動態(tài)。
為了數(shù)據(jù)的連續(xù)性,股票數(shù)據(jù)需要進行除權(quán)處理,期貨數(shù)據(jù)需要解決合約到期的問題。
期貨合約涉及到交易截止日前換月移倉的問題,由于合約間的基差,如果只是簡單地接上后續(xù)合約的價格數(shù)據(jù),往往會出現(xiàn)跳空缺口,需要進行平準連續(xù)處理,生成人工合成的合約。
一種方法是對每個合約的價格序列進行持倉量或成交量加權(quán)平均,計算出該品種的價格指數(shù),這種指數(shù)反映整個市場價格重心的走勢,避免價格跳空。它的優(yōu)點是價格相當平滑,可以消除合約轉(zhuǎn)換之間的價格缺口,缺點是與實際可交易的合約價格并無關(guān)聯(lián)。可以利用指數(shù)來測試,再用實際合約價格產(chǎn)生交易信號,或者用指數(shù)產(chǎn)生交易信號,用實際價格來下單。這使得測試以及實際交易都很繁瑣,難以實現(xiàn)。
另一種方法是將不同時段的主力合約的價格序列直接進行連接。在實際交易中,我們希望交易流動性最好的主力合約,當之后的某個合約的成交量逐漸增加并大于當前成交量逐漸減少的主力合約時(一般是連續(xù)3天,對于會快速換月的品種例如股指則是1天),之后的這個合約成為新的主力合約,數(shù)據(jù)相應切換到這個新的主力合約。舊合約與新合約的價格往往存在一定的差異,這個差值有可能形成巨大的跳空缺口,使技術(shù)指標和交易信號的計算產(chǎn)生錯誤,需要對數(shù)據(jù)序列進行平準連續(xù)處理,我們的處理方法是把切換日前的數(shù)據(jù)統(tǒng)一加上切換日前的收盤價差,這樣就實現(xiàn)了兩個合約之間的平滑過渡。由于資金利息和商品期貨的倉儲費用,后續(xù)新合約的價格在多數(shù)情況下高于舊合約,加減差價的連續(xù)處理基本不會導致歷史數(shù)據(jù)變成零值或負值。這種處理我們也稱之為“復權(quán)處理”,在軟件中與股票類別共用復權(quán)處理菜單。在國內(nèi)品種中,只有滬銅由于在04-06年初一直保持較大的負基差,導致其01、02年的復權(quán)處理數(shù)據(jù)出現(xiàn)負價格,如下圖所示:
注意,帶帽的S圖標表示經(jīng)過復權(quán)處理的主連數(shù)據(jù),點擊復權(quán)處理按鈕或在主菜單選擇不復權(quán),則相同位置的S圖標不帶三角帽。鼠標移動到圖標可看到換月價差數(shù)據(jù)。
這種處理方式帶來的問題是,價格經(jīng)過人為的加減修改,連續(xù)數(shù)據(jù)與其對應的實際合約數(shù)據(jù)相差某個數(shù)值。如果指標計算、交易信號或止盈止損用到價格的百分比時,會與實際情況不符,所以應注意策略中是否用了比值計算導致與當時真實狀況不一致的結(jié)果。只要不用比值的算法,例如,移動平均交叉,平均真實波幅ATR、價格形態(tài)或其它類似指標及其產(chǎn)生的交易信號,基本上完全相同,不受影響。
另外,當缺乏或忽略分筆明細數(shù)據(jù)時,應注意K線開高低收發(fā)生的先后順序?qū)灰仔盘柡徒Y(jié)果的影響。在歷史測試中,有兩種方法解決此問題,第一種方法,限制一周期(bar)內(nèi)僅能開倉一次,止損、止盈單則至次周期才有效,確保歷史測試的明確性和唯一性。但其缺陷是,行情波動劇烈時,在開倉的同一周期內(nèi),可能希望平倉或反手,如果必須等到次周期,可能會增加虧損、減少盈利。另一種是我們采用的方法,根據(jù)高、低價與開、收盤價的關(guān)系,來推測高、低價發(fā)生的先后順序。如果開盤價較接近最高價,則價格走勢是開盤價到最高價,再到最低價,再到收盤價;如果開盤價較接近最低價,則價格走勢是開盤價到最低價,再到最高價,再到收盤價。如果在同一周期內(nèi)同時滿足止盈、止損條件,則按這個假設(shè)的走勢判斷是止盈平倉還是止損平倉。更為嚴格的假設(shè)是,同一個周期中達到止盈和止損,如果沒有真實分筆明細數(shù)據(jù),一律作為止損處理。
更好的解決方案當然是以真實的帶買賣盤的分筆數(shù)據(jù)對K線進行插值計算。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容