程式交易回測資料的正確性很重要,我相信所有的人都很認同
有正確的資料我們在最佳化的過程才能找到最適合的參數。
因此最正確的資料在哪裡呢?期交所每日公布的盤後資料TICK會是最正確的!
相信許多人都習慣到期交所抓RPT檔來回補資料的習慣
但我今天要提出一點疑問~為何要用最"正確"而非最"真實"的資料呢?
真實中的交易情況是:從券商接收報價可能透過api或是dde來接收報價
dde的話漏價會非常的嚴重
api雖然會比較好一些但使用需求相對的也較高(要去記指令)
以上兩個是終端(個人電腦)的部分
那麼還有一個環節~券商的報價是正確的嗎?
答案當然是"錯"
因為券商也是向資訊廠商購買報價的。
將報價送到券商伺服器後,再發送到客戶端
他們不會給最完整的報價因為他們的伺服器也吃不消
因此伺服器封包傳送速度是有所保留的!
所以光是報價的環節就有2種錯誤的可能性
1.券商報價漏價(不論哪一家券商都一樣)
2.報價接收器dde傳送到TS或MC過程中的漏價
最後到達DATABASE中的報價有沒有50%正確性我們對此都還有所疑問
那麼到底數據源要多正確才能讓回測結果與真實交易相符呢?
the answer is ....... 97%
但光是券商報價可能就只剩下7~80%的正確率了
所以在交易中往往會發生
怎麼回測績效與實單積效差很大的情況
我們都是用最正確的數據去回測得出的結果用在真實的環境下丟單這績效怎麼會好看??
這時就會問~那要怎麼去克服呢?
1.不斷的累積真實的漏價數據,永不回補,累計久了就是最貼近真實的數據
回測績效自然等於實單績效(雖然他的實踐難度很高)
2.花費購買報價源,跳過券商直接與資訊廠商連線接收報價
以上兩種是報價源的改善方法
那有沒有可以較簡單降低誤差的方式呢?
.........有的!!!!將策略的進出場次數降低(出手頻率減少,誤差相對也會縮小)
實際的做法就是將交易周期拉長,但相對的要承受的波動較大,資金要準備充足一些