學習目標
- 按資料何時為人所知來標註時間戳,避免前視偏差。
- 建立包含已除牌證券的歷史樣本池。
數據必須按可得時間標註
回測只應使用決策當時已存在的資訊。因此每個數據點都需要可得時間戳,即它公開的時刻,而不是它所描述的期間。12 月年結的全年業績,可能要兩三個月後才公佈。
重述令情況更複雜。供應商往往以更正後的數字覆蓋舊數字,因此只顯示最終數值的數據庫,會洩漏來自未來的資訊。時點數據庫(point-in-time database)會連同發佈日期保留每一個版本。
前視偏差的常見來源
當信號使用某根價格柱的收市價而交易也在該收市價執行、當平均數或標準差等統計量以整個樣本計算,或當參數在看過全部歷史後才選定,前視偏差便會出現。
預防方法是:以截至時間 t 的數據所作的決定,最早在下一根價格柱執行;統計量以滾動或擴展窗口計算;並手動檢查一個例子:交易者當時能否知道這個數值?
樣本池構建與倖存者偏差
樣本池是每個日期符合資格的工具集合。以今日的上市公司去測試多年前開始的區間,會剔除失敗、以低價被收購或除牌的公司。這種倖存者偏差會誇大結果。
應按歷史成員資格建立樣本池,例如過去的指數成分股,並連同最終回報保留已除牌的證券。任何流動性或規模篩選,須採用各日期當時的數值,而非今日的數值。
逐步例解: 倖存者偏差增添了多少
某虛構等權重測試由 10 隻股票開始,每隻價值 100,合共 1,000。七隻存活,各以 200 結束,合共 1,400。三隻除牌,各以 20 結束,合共 60。誠實的結果是 1,460 ÷ 1,000 = +46%。若只測試七隻倖存者,則為 1,400 ÷ 700 = +100%,高估了 54 個百分點。
檢查理解程度
某測試由 20 隻等權重股票開始。其中 16 隻上升 50%,4 隻在虧損 90% 後除牌。整個樣本池與僅計倖存者的平均回報各是多少?
顯示答案及解釋
整個樣本池的平均為 (16 × 1.50 + 4 × 0.10) ÷ 20 = 24.4 ÷ 20 = 1.22,即升 22%。僅計倖存者則為 50%,所以倖存者偏差增加了 28 個百分點。剔除失敗的公司會實質改變結論。