2009年4月1日 星期三

交易策略歷史模擬/回溯測試所使用的資料

在前文所提到歷史模擬對任何投資策略都是重要的分析步驟. 錯誤的分析就會導致錯誤的結果和錯誤的決策. 歷史模擬所使用的資料可以分為幾種:

依資料時間點來分:
  1. 每日收盤價 Day End/Closing: 每日收盤價是最容易取得的資訊, 幾乎所有集中交易的金融商品的收盤價都是可以免費下載過去一段時間的歷史資料. 但是利用收盤價模擬的問題很大, 大部份的商品收盤價都是受到某種程度的人為操弄, 無法反應出實際的價格, 更不要說當多檔商品加入到一個策略時, 商品間的價格關係其實並不準確. 如果在系統支援可能的情況下, 應該避免用每日收盤價來模擬.
  2. 日內定時資料 Intraday Bar/Candle: 將盤中交易資訊定時擷取下來做為模擬的資料, 利如每一分鐘或每五分鐘的最後一筆價格. 這類的資料沒有收盤價格扭曲的問題, 但是要取得過去長時間的資料並不容易, 模擬也需要比較長的時間.
  3. 每筆成交/報價資料 Tick: 如果能使用每筆交易或報價的資料來做模擬是最好的, 不過實務上有其困難. 要保存長時間的每筆交易記錄並不容易, 通常都需要向資料供應商購買. Tick 資料有另外一個好處是可以有買賣價甚至買賣量的資訊可以使用.
依模擬時間區間來分
  1. 一段固定時間: 只取一段時間的資料來做模擬, 例如過去三年的收盤價或過去一個月的每五分鐘價格. 這會造成最佳結果的謬誤. 因為所模擬的區間可能是用來做為參數調整的來源, 當參數調整過後當然會獲得最佳的報酬率. 如果模擬只做一段時間, 通常結果是有問題的.
  2. 多段不固定時間: 如果不需要訓練參數, 可以採用多段不同的區間來評估績效. 不同時間區間的績效一定會不同, 可以參考策略平均的持有期間或是隨機決定持有期間來評估.
  3. 策略訓練+實證: 訓練其實是策略做參數調整的過程, 有些策略的參數是長時間不變的, 有些參數是需要動態改變. 訓練的過程依策略的不同需要有不同的考量, 訓練過後參數決定了, 就需要再取一段歷史資料來做實證, 實證的結果才能做為策略是否採用的依據. 實證也可能需要做很多次, 每一次評估績效的區間也不同, 針對一周/兩周/一個月/兩個月/六個月等不同時間區間來做績效的評估.