外匯天眼:構建交易系統需明晰的三大陷阱

image.png

  對大多數交易員來說,策略的制定僅僅是一種手段,是獲利的必要路徑。交易系統開發的過程,相對最終投入使用,是比較艱難的:通常,實際交易遠比制定交易策略要更有意思。

  不過,這會使得交易員採取各種捷徑,這樣一來,他們在制定交易策略時就可能產生各種錯誤。儘管短期來看,交易方法是簡便了,但捷徑所帶來的錯誤最終還將影響即時交易。

  好在大多數交易員在策略開發時出現的錯誤基本類似,一旦確定後,就能加以糾正、改進。不過,排除這些問題並不容易;在無法使用捷徑的情況下,策略從制定到正確執行將變得更為困難。

  那麼,有哪些最常見的錯誤與捷徑呢?大致有三種。下麵我們將分別解釋這三種錯誤會產生怎樣的負面影響,如何發現並糾正這些錯誤。避免這些常見錯誤,將有助於建立一個更好的交易系統。

  陷阱1:策略過於複雜難懂

  在交易過程中,你不可避免地要遇到一些複雜的交易策略。對於自主交易員來說,可能會出現“分析癱瘓”中的情形。對於一個演算法交易員來說,一個複雜的方法將包含成千上萬行代碼,需要優化調整幾十個甚至上百個變數。

  這兩種方法有一個共同點:它們都極其複雜,涉及眾多內容。很多缺乏經驗的交易員會認為這就是開發系統的一種方式;他們認為,指標越多,演算法對過去數據的擬合程度也就越好,所制定的交易策略也就會更好。但事實並非如此。

  在衡量複雜策略時,存在一個謬誤,使我們得出這一策略優於一般策略的錯誤結論:在歷史數據上能取得較好結果的策略,並不意味著這一策略用於實際的交易中也能獲得同樣的成功。事實上,通過增加指標來不斷地調整策略,或在演算法中添加新的規則使得交易策略更為複雜;這種做法通常只能給交易員一種虛假的信心。在策略中,改進及添加更多的規則,並不意味著策略將變得更好。

  很多人可能很難相信,簡單的交易策略通常是最好的。對於自主交易員來說,只有一兩個技術指標的相對簡潔的圖表,加上對價格走勢與市場動態深刻的理解,往往比一個充斥著技術線與技術指標的圖表要好得多。對於演算法交易員來說,一條簡單的入場指令通常要比需要滿足5至10個條件才能執行交易的規則要好。

  陷阱2:沒有考慮市場摩擦的交易策略

  比較市面上的交易系統,你會發現大多數交易系統都會列出一小段免責條款:傭金與滑移價差不包括在內。同樣,許多自行開發系統的人也會忽略傭金與滑移成本;即使他們考慮了這些成本,通常也會低估實際的金額。

  你會聽到系統不包括傭金與滑移在內的各種原因。最常見的藉口是“不同券商通常收取不同傭金”;另一個常見的理由是“我的系統只使用限價指令”。但真正的原因則是:這樣的做法可以使系統看上去更好。如果考慮實際交易成本,能夠獲利的系統就更難找到。

  以一個交易E-Mini標普500指數期貨(CME:ESM14)的系統為例,該系統使用一種通過微小交易來捕捉非常小的市場變動的技術,並頻繁進行日內買賣對沖來進行投機。如果不考慮傭金與滑點,該系統每天進行20筆交易,平均每筆獲取15美元的利潤。交易員看到的是每天300美元的利潤,並會認為這些交易還算不錯。但如果加上每個交易回合5美元的傭金及1個基點的滑點(這可能已經是樂觀的估計),每天300美元的利潤就變成了每天50美元的虧損。

  對於不考慮傭金與滑移成本的交易策略來說,一個潛在的影響便是該系統可能會使交易員進行過多的交易。這裏有一個例子。假設系統A是上面所提到的小型投機系統,如果不考慮傭金與滑移成本,每天可以獲得300美元的利潤。相對來說,系統B每天只進行一次交易,不考慮交易成本,每筆交易平均可以獲得50美元的利潤。任何比較這兩個系統的人,都會選擇系統A。但是,當加入傭金與滑點,結果正好相反;系統B才是唯一有價值的策略;交易次數少了,傭金與滑點占總利潤的比例也要小很多。

  因此,在系統開發初期,就將一定數額的傭金與滑移成本考慮進來,是至關重要的。對於E-Mini標普500指數期貨來說,每個交易回合5美元的傭金,一兩個基點的滑點,這樣的假設是相對合理的。

image.png

  陷阱3:系統測試使用所有歷史數據

  在系統開發時,很多交易員可能出現的第三個錯誤就是在測試系統時使用所有可用的歷史數據。大多數缺乏經驗的交易員會對到今天為止所有的歷史數據進行優化與分析。之所以這麼做,是因為他們希望確保策略已經反映了對最新數據的調整。

  當然,如果第一次測試失敗,交易員將在系統中添加一些規則或篩選條件(這樣一來,就更可能出現前面提到的策略過於複雜的錯誤),然後再次運行所有數據。

  最終,交易員會找到一個可行的交易策略系統,並將這一系統運用到實際交易中。但在交易策略發生問題時,這種做法幾乎總是必然的解決方法。

  一個更好但難度也更高的方法是通過對樣本外數據的測試來驗證一個交易系統。比如說,交易員可能會用過去10年的數據來制定交易策略,但保留最近一年的數據。當系統開發完成後,使用未知的(也就是樣本外數據)進行測試;如果系統運行得較好,那麼這一系統可以被用於即時交易。

  此外,還能採取移動窗格測試。這種方法使用多個樣本外的時間段,更有可能獲得成功,因為產生的股票曲線已經完全包括了樣本外的優化結果。

  移動窗格測試或者樣本外測試的一個缺陷在於:一旦樣本外測試運行過一次,任何進一步的測試就不再是基於真正的“樣本外數據”而進行的。因此,如果測試運行過很多次之後,很容易在不經意間就使得樣本外測試變成了樣本內測試。不過,樣本外測試的方法還是要優於對所有數據進行優化的方法。

  系統開發沒有捷徑

  設計一個可行的交易策略是相當困難的。事實上,很多交易員從來沒有真正做到過這一點;很多時候,他們在開發系統時會走捷徑或者在系統開發過程中出現過於簡化的錯誤。當然,在系統中添加一條又一條規則、一個又一個篩選條件,比找到一條合適又簡潔的規則要容易得多。

  同樣地,如果不考慮傭金和滑移的摩擦成本,找到可行的策略也是相當容易的。

  最後,與移動窗格測試或者樣本外測試相比,對所有可用的歷史數據進行優化是一種相對簡單的方法,得到的結果看上去會更好。

  但問題的關鍵是,如果我們使用對所有數據進行優化的方法來建立交易策略系統,相當於設計出這樣一個交易策略:只有在測試的時間樣本內應用這一交易策略系統,才能獲利。當然,這需要有一個時間機器,而這顯然比建立一個有利可圖的系統更為複雜。

  我們從上述系統開發的常見錯誤中得到的啟示是:如果某一種方法使得系統設計變得更簡單,或者回測的成功率明顯提高,那麼,這實際是一個可能有錯誤發生的警示信號。一個合理、恰當的系統開發過程總是困難重重的。

  然而,從長期來看,用正確、恰當的方法開發交易系統,總是要好過因為系統開發中產生的錯誤而在市場上賠錢。