程式交易的各種疑難雜症
一、什麼是程式交易
這標頭很廢話,文章內容也很廢話,但是我覺得有一些很重要的觀念是新手必須知道的(雖然以我的年資好像沒資格寫這類的文章)
程式交易或農場一點稱之為智能交易,國外稱之為演算法交易(AlgoTrading)
在演算法交易中,最基本的就是條件式演算法
也就是說你的程式裡面寫了一些條件,例如由下向上穿過近五根K棒高點就買進,然後停損停利兩百點
高竿一點的可能就會用一些數學的演算法,例如模糊理論、決策樹、類神經網路等方式實踐演算法交易
但是,他一點也不智能
所謂的智能就是程式會自動去學習,然後自己避開可能會虧損的情況
但是就現今的演算法交易而言他是做不到這件事的
即使你用機器學習演算法也一樣
因此,對於現在很多廠商為了推行程式交易而說這東西是智能,我實在是很不以為然
二、有什麼是程式交易做不到的
程式交易並非萬能
他寫不出M頭W底,也很難寫出形態學(三角收斂之類的)
另外承上所說,他無法自動增加條件避開會虧損的情況(當然你可以自己增加條件)
跟頂尖的主觀交易者比起來他也無法賺到那麼多的錢
他更無法幫你擺脫所有人性的缺點,例如不守紀律,自動拉高甚至關掉停損停利點
所以如果你對程式交易有這些迷思,奉勸你還是早點洗洗睡比較好
三、所以我說那個優點呢?
數落了這麼多程式交易的缺點,他總該有些優點的
程式交易雖然不像主觀可以賺那麼多,但是透過正確的程式交易他還是有可能幫助你穩定獲利的
透過正確的程式設計,你可以知道你的策略的獲利程度以及可能的最大虧損
藉由這樣的方式,你可以在市場上省下許多學費
比起主觀交易,程式交易需要比較多一點硬體投資
除了跑最佳化所需要的硬體,你可能還需要一台24小時幫你盯盤的電腦
這樣一來即使在上班時間你還是可以進行交易
四、程式交易該準備什麼?
你需要一台桌機,一條夠穩的網路,還有根據你的商品準備對應的平台
當然你可以自己用券商API寫一套武器,但是相信我,光是Debug就夠你受的了
因此用現成的平台問題可能會少一點
另外如果是下外匯保證金,你可能會需要一台24小時開機的電腦
若想省下硬體費用,可以選擇使用VPS,因為你開的券商可能是在海外,若使用國內的電腦可能會導致Ping很高
五、如何避免寫出錯誤的程式
在交易的程式設計上,我們應該盡可能的減少使用參數或是邏輯
越複雜的邏輯或參數,越容易使程式overfitting
因此在設計的過程中,一定要設定樣本內與樣本外
設計過程只看樣本內,樣本外做為參考績效
如果你願意,甚至可以將設計過成弄得更嚴苛,將資料分成三等份
不過樣本內的樣本依然最好要包含多頭與空頭市場
今年上完機器學習,我覺得程式交易的設計跟機器學習Model某些方面很像(詳見機器學習的如何選擇模型篇)
我們可以把市場想像成目標函數,而我們寫的策略或是投資組合的loss就是績效*(-1)
在設計上,我們要努力降低loss(提升績效),並且盡可能避免使用過多的參數或條件以減少overfitting的機率
換言之,你當然可以在設計上使用一拖拉庫的指標語法,但是這樣overfitting的機會就會非常高
另外,以這個觀點來說,每一個策略都是一個函數,而你的model就是投資組合
使用越多的函數你的loss越容易降低,同時在OOS(樣本外)的loss也越容易跟IS(樣本內)相同
若這個model能夠適用更多的市場(樣本),那麼他的失效機率就會越低
總結
在交易的程式設計上,我們應該盡可能的減少使用參數或是邏輯