怎樣讓高頻策略測試更貼近現實?
做出來高頻策略,設定了一些限制條件後回測結果還是嚇人。現實中還需要考慮哪方面影響?如何讓回測更接近真實情況?
在股指期貨還很活躍,收益曲線比山峰還陡峭的美好年代,有一天我做出一個單腿策略。兩個小信號,非常簡單,調調參數,一天5,6百次交易。年化收益300%(無槓桿)多,回撤才3%,不由地心中一喜,心想又要發了。然而現實骨感,實盤一跑打對手價的成交率才30%,打兩個tick的成交率也才60%,最後還是要調低交易次數才能勉強盈利。我一聲長嘆,從此對回測嚴格程度嚴抓猛打。。。。
當然,實盤測試是檢驗真理的最佳標準。但是如果你捨不得實盤成本,或者想省下implement半天最後徒勞的時間成本。那麼,可以試試以下一些方法。 (1)用下一個tick(甚至2個tick,不過做到兩個tick之後還能盈利的基本是神策略了)的book上的bid和ask對手價作為你的成交價,如果此時策略仍舊錶現尚可,啥也別說了趕緊熬夜寫代碼抓緊上實盤翻滾去吧少年。 (2)用當前tick到下個tick之間的平均成交價vwap或者下一tick的close(什麼?你問我兩個tick之間的vwap怎麼算?)作為判斷標準,若vwap低於你的買價或者高於你的賣價,你的掛單也成功成交了。如果此時策略表現不錯,那麼只要你沒欠電信網費,電腦不是586,應該還是挺有賺頭。 (3)如果是掛單策略,需要做一個掛單隊列的Model,你可以設置參數假設自己排在隊列的最後或者生成一個隨機分布隨機你在隊列的哪個位置,然後根據市場上的實際成交量數據測算自己在什麼時間成交。這種Model如果你假設合理不插隊,那麼應該還是有希望的。 (4)咦,貌似不需要四了。。祝樓主成功。。實盤高頻回測害死人啊...各種美好各種曲線,通通都是虛幻的...
切記,實盤中即時你用對手價做回測,也有可能不成交。
因為做微觀結構預判的,預判對的,等你下單的時候,行情已經走遠,你的單子很有可能成交不了。而讓你一次性成交的,又有很大的可能是你預判錯誤的。這裡面的差距和回測差太大。所以一定要做開倉成功率和滑點的估算。而這些,只有通過實盤拿到足夠的數據以後才能有更真實的評估。這些實盤測試的成本是無法省的。
我個人以前做股指實盤的時候,高頻單邊策略開倉成功率在40%以下。套利的第一腿開倉成功率在10%以下。平倉未成功情況下,平均追單滑點3跳。
你目前的盈利手續費比才1.3左右,這個我敢肯定說上實盤就是虧錢的份。說一種最粗糙的基於level1數據的回測方法,可將訂單劃分為「必得單」與「或得單」進行考慮。
以做多1手、基於賣一價加價AddPrice為例:
設:交易觸發tick為t1,下一個tick為t2,無成交明細數據則視為t1行情延續。若(賣一價t1+AddPrice)&>=賣一價t2,則該單為「必得單」,成交價介於賣一價t2與真實成交價之間。若(賣一價t1+AddPrice) &< 賣一價t2,則該單為「或得單」,成交價為空或某一概率水平下的(賣一價t1,賣一價t1+AddPrice) 區間內的真實成交價中的某期望值。「必得單」說明你要下單時市場上並無其他參與者跟你爭搶,反之就是「或得單」。實踐中如果是高頻策略發出的信號且自己又缺乏高速信號產生與搶單的IT平台(即普通交易者),可以直接視為搶不到。對於有專業軟硬體解決方案的高頻交易者而言,可以基於實盤情況視為能以一定概率搶到。不過,由於越好的訂單越難搶到,所以均勻估計下的收益其實是高估的。
在此之上可以思考更多:比如市場上既然存在成交,說明就一定有人成功搶到單了,而你是否能夠搶到單取決於跟你搶單的是誰。可以簡單地假設如果搶同一訂單,則專業高頻交易者一定能搶過普通交易者(99.9%),而高頻交易者之間搶單則是軟硬體解決方案最強的一方能夠搶到(贏者通吃),或者無顯著差異的最強多方分別以一定概率能夠搶到。籠統地說,高頻交易者和中低頻交易者的目標單是錯位的,因此一般高頻策略的搶單對手也是高頻交易者,互相PK或虐殺。基於level2數據的訂單流分析,你可以估計某一tick下跟你搶單的是中低頻交易者還是高頻交易者,進而輔助判定你能否拿到某個訂單,但實踐中搞這麼複雜並沒卵用,還是以實盤結果為準吧。此外,上述只談到了搶單1手的最簡單情況,實踐中除非調試策略,否則一般不會只下1手。不過建議先在下1手實盤能盈利的情況下再說吧,那時候你自己就明白了。要真的回測高頻策略的話,需要自己做撮合model,這是個大活 ,看你有多少人幹活吧。實際上,高頻策略拿一點錢跑一周,可能比一堆人搞個撮合model更便宜,測試結果還真實。
1) data leakage?2) 平均每筆收益?3) 成交概率?
測試的啥品種?現在股指沒流動性了啥品種還能做高頻?
商品的人工高頻倒是見過...
從邏輯上就不可能實現,錢有這麼好賺還成世界嗎。。人人都是富翁了。
未來總在變化,靠歷史數據不可能預測未來,你自己的資金介入後未來就會改變,在一些敏感位置還會引起無法估量的蝴蝶效應。歷史走勢只是冰山一角,當時的各種消息、整體局勢動向、錯綜複雜的變化,都看不出,就像從一件出土文物上去推導整個歷史,就算能時光倒流穿越回去,也不一定能掌控全局。歷史經驗只能看出人性規律,這也不是什麼驚天大咪咪,自己克服不了人性弱點也是徒勞。樹哥有短時間預測未來的直覺天賦,時間之簡訊息量之大到目前人類最強電腦也來不及算出,就是算出那天文數字般的電費也賺不回來。。因此直覺不強最好別幻想高頻了。華爾街沒新鮮事,除非有本事和技術去創新。題外話,人工智慧也就只能捉捉棋欺負人類,機器人卻連走路這種簡單的事都做不好。別說類似體育競技一般的高頻交易了,高頻策略這個詞本身就不妥,策略只能是宏觀的,微觀必須靠敏捷的實操。玩概率不如去賭場,資本市場有人心叵測這混沌的因素在搗亂規律。交易測試就是意淫 沒用
你的報價在隊列里的位置 才是高頻alpha的來源
回測sharpe才2的高頻策略還是暫時不要考慮實盤了
小規模資金投入實盤測試是必須的,別無他法。
我覺得這段話值得讀十遍。
「一些公司也運用模型,然而它們的宗旨是,他們有一個模型,用這個模型得出的結論給交易員提供參考意見,如果他們贊成這個結論那就照著執行,如果他們不贊成那就不執行。這不是科學,你不可能模擬出13 年前當你看見市場行情數據時的那種感覺。而且回溯測試是一件很困難的事情。」
——Mathematics, Common Sense, and Good Luck
高頻要用真實的錢 實打實的測試。
然後分析數據日誌,分析交易記錄不能用普通交易的思路來玩高頻不要被測試迷惑了。實際實盤的時候,盤口的容量和成交率是個最大的問題。國內數據本身沒那麼快,所以成交率一直是個最大的問題,除非像前幾天商品大暴走,螺紋一天能走出將近2000萬張的總量。其他品種的量也十分巨大。如果量達不到,這種測試在實盤幾無意義。實盤的數據你還要在真實生產環境繼續跑。至少4萬筆成交穩定以後,在評價模型和演算法的穩定性,以及修改參數。
推薦閱讀:
※演算法交易 (Algorithm trading) 與程序交易 (Program trading) 有什麼區別?
※手工交易和程序化交易比起來優勢在哪裡?
※如何評價劉鵬的《計算廣告-互聯網商業變現的市場與技術》?
※個人投資者怎麼實現簡單的程序化交易?
※高手都說行情不可預測,那麼策略是怎麼出來的?所有的策略不都是基於判定未來是漲還是跌而做出來的嗎?