很多人在交易了三四年之后,就會開始考慮把自己的交易策略做量化。主要是因為到了這個交易階段,大部分的指標和交易系統都已經嘗試過了,也有了比較成型的交易邏輯,這個時候可能需要突破的就是自己的執行力和心態問題。
所以很多人就想著把自己的交易策略做量化,寫成交易程序,可以規避掉我們自身的一些人性問題。我自己在2016年就嘗試做過量化,寫過一些交易系統的程序,今天我就聊一下交易系統量化的步驟,以及可能會遇到的問題。
第1步:有一套成型的交易系統。
手動交易和量化交易其實就是執行的過程不同,不過最基礎的交易模型,或者說交易系統都是必須的。但這里有一個問題,不是所有手動交易的交易系統都能實現程序化,因為在寫程序的時候,會發現程序語言的局限性,一些手動交易中,人為觀察圖表做出判斷的行為,程序語言是比較難實現的,也取決于程序員的水平。
例如數波浪時,人為可以有自己的判斷,判斷出回撤的低點,次低點,但程序讀取不了這些點,這樣的手動程序就很難量化。
因此想將交易系統量化,就必須讓交易系統的細節標準化,做出調試和修改,并在兼顧程序語言能實現的基礎上,還要保證其盈利水平,其實是非常有難度的。
第二步:寫程序。
兩種方式:自己寫和找程序員寫。
如果你是自己寫。其實作為一個交易員,自己是最了解自己的交易系統的,各方面的細節,執行上的難度等等,自己心里有數。但是寫代碼這種事和做交易不一樣,門檻是擺在那邊的,讓一個交易員去自學代碼,難度還是挺高的。
之前也有朋友問我,如果自己本身就是程序員,是否更有優勢一些。當然,如果你本身就會寫代碼,肯定是有優勢的。但目前來看,沒有太多的程序員能做好交易,也是因為大家面對的人性問題是一致的,而且程序員可能會更注重策略的實現問題,而忽略了策略的盈利問題。這也是為什么一個項目團隊可能有程序員,產品經理,運營,每個人的關注點不同,只有綜合起來才能推動一個項目的前進。
如果你找程序員寫。我自己是不會寫代碼的,所以我當時也是找了專職的程序員來幫我實現。我們在溝通的過程中,也發生了很多意見不合的情況。更多的情況是,我需要實現的功能,程序員寫不出來,所以我們就得一再磨合,調試,妥協,最終尋求一個平衡點。(但后來再看,其實量化系統的交易成果是不如我自己的手動系統的)。
這里會有兩個小問題:
(1)程序員寫寫代碼能力的高低,決定了這個程序的質量。我之前第一次配合的程序員,我在測試的時候就bug不斷,這面對的可都是真金白銀,所以完整的量化程序我都是測試了大半年才敢開始用的。
(2)有人擔心自己把交易策略寫出來給程序員,會泄露自己的秘密。其實大可不必擔心這個問題,因為程序的參數通常不會被寫進去。例如程序員知道你的交易策略使用的是均線,但他不知道你用的是什么參數的均線,以及什么類型的均線。你可以在程序中設置一些手動可調試的參數標準,這樣對于你自己之后的策略變化,留出一些調試空間。
第三步:測試量化程序。
將程序放到交易軟件里,拿歷史數據測試程序的盈利情況。這個過程通常是比較漫長的,要跑很多組參數進行對比,甚至多品種多組參數回測對比。選出最優的參數,最優的品種。
最優參數組合并非最大盈利參數組合,要考慮程序運行過程中的資金回撤幅度,回撤的周期,倉位比例的使用等等。
得出最優參數之后,要做模擬交易的測試,可以多品種同時進行模擬回測,這樣回測交易數量比較大,如果程序有bug,在這種回測中就能顯現出來,再將程序完善無誤之后,再進入實戰。
完成以上三步,就基本實現了自己交易系統的量化。
最后聊一下,量化交易程序真的可以解決執行力的問題嗎?
答案是:No,作用很有限。
道理非常簡單,無論是手動交易還是程序化交易,交易者的情緒變化是一樣的。因為程序的開關在交易者自己手里。
舉一個例子:當你的程序進入了衰敗期,賬戶出現了連續虧損,你看著賬戶中的錢在不斷減少,你肯定會非常焦慮、恐懼,隨著時間過去,你大概率是會暫停程序的。如果產生了盈利,你也會忍不住關閉程序,想保留盈利。
一旦當你人工干預了程序,整個交易策略的一致性被打破,最終的盈利結果發生變化,跟你手動交易其實是一樣的。所以不管是量化交易系統,還是手動交易系統,其實最根本要解決的問題,是人的問題。
交易的形式并不重要,要解決的人性和心態問題更重要。