敗因3》高同質性的模組過度使用
想像一下,數百張、甚至數千張單子在同一點位執行相同的動作,會發生什麼狀況?在同一個時間、同一個點位,突然湧入大量同向的委託,會瞬間將價格劇烈地往委託方向推擠,造成滑價推移過大,如果執行效率不佳,成本將大幅提高,除了獲利空間會因而縮小(詳見註2),進、出場及停損訊號也將因此更容易被觸發。
Tips_註2
較長線的波段模組也許可以稀釋此種因素,但對於短線模組的長期績效而言影響甚鉅。
如果此期間內的價格變化僅僅是因為同方向程式單迅速湧入所導致,並不是因為其他原因來推動及維持價位水準,那麼當委託單被消化、市場恢復理性之後,價格被推回到原點或甚至反向發展的機率就相對大增,結果間接促使該訊號成為虧損的交易,尤其是停損幅度較短的模組,很容易在這種刷盤過程中就被觸發訊號而虧損出場。
市場其實是有相對的「胃納量」,市場交易量愈小,剛剛所提到的問題,會更加地嚴重;在交易量比較大的市場裡,這種問題或許可以稍微被淡化,但也不是無上限地容許。任何結構嚴謹完整的交易邏輯,被過度而無限制地使用都會失去效用,這種現象在國外的文獻上已有許多相關的論述。
敗因4》模組過度最佳化
最佳化可分為兩個層面,一種是參數最佳化;另一種是策略最佳化。所謂策略最佳化是指在架構初步完成後,為了讓模組對於特定走勢的反應更符合預期效果,對於邏輯條件進行修改,或加入一些新的條件。在模組的修正過程中,這樣的行為當然是必要的,除了可以修正現有條件的缺點,也可以補強邏輯漏洞。但是過分地針對某些特定走勢,勉強拼湊出一些相對應的觸發條件,除了美化績效之外,對於未來將面對的行情並沒有實質幫助。所以「策略最佳化」在程度上必須拿捏準確,千萬不要過度,更不能違背主要邏輯,否則很容易讓你的模組成為中看不中用的花瓶。
而參數最佳化,就是利用程式交易系統針對模組中的參數以不同的數值去做運算,目的在算哪一個參數數值可以達到最好的績效。例如原本已經採用20 根K Bar 的均線作為模組的架構,為了知道到底是採用多少的參數,可以讓這個邏輯條件的績效達到最好,於是可以利用交易系統內的「最佳化功能」,來得知每一個參數或參數組合的績效數值。
參數最佳化雖可以獲得最佳績效,但畢竟是針對過去的歷史資料,對於未來的走勢是否真能產生相同的績效表現?歷史資料是已經發生的事實,利用電腦能夠迅速處理大量運算的特性,來找出一個最好的參數組合,造就出一個動人的結果,並非難事!但這就好像是「先射箭,再依照箭落定後的位置將靶心畫出來」,無論箭怎麼射,都能顯現最好結果。