前視偏差
危害最大定義
前視偏差是指策略使用了在作出交易決定時實際上無法取得的資訊。最常見的形式,是以第 T 根 K 線的收市價產生訊號,再同樣以第 T 根 K 線的收市價執行交易。現實中,收市價要在 K 線收市後才能得知,而此時市場已經收市。
✗ 有偏差(多數散戶工具的做法)
於第 T 根 K 線收市時產生訊號 → 同樣於第 T 根 K 線收市價成交。這在現實中不可能做到——你無法以剛剛才得知的價格進行交易。
✓ 我們的做法
於第 T 根 K 線收市時產生訊號 → 交易排隊等候 → 於第 T+1 根 K 線開市價成交。這是現實中最早可以執行的價格。
我們同時防範的其他前視偏差形式
- 使用第 T 根 K 線的最高價/最低價觸發止損——這些數值要在 K 線收市後才能得知
- 指標計算引用了「未來」的期間(例如居中移動平均線)
- 使用整個數據集的最小值/最大值進行標準化,而非滾動最小值/最大值
- 策略參數在整段期間內優化,再於同一段期間內測試
- 盈利驚喜訊號在公布日期之前就使用了實際每股盈利(EPS)
倖存者偏差
高估風險倖存者偏差是指回測只納入目前仍在交易所上市的股票。在測試期間倒閉、被收購或被除牌的公司都被排除在外——儘管它們在當時都是有效的交易標的。結果是歷史回報看起來比實際好得多,因為所有「輸家」都已被悄悄地從數據集中剔除。
對恒生指數成分股範圍的量化影響:
~15–20%
在 10 年回測中,恒指成分股的歷史紀錄至少包含一隻已除牌股票
~3–8%
動量策略因倖存者偏差而高估的典型年度回報
100%
我們的回測在歷史股票範圍中全部包含已除牌證券
✗ 有偏差的股票範圍
只對目前標普 500 指數內的 500 隻股票進行測試,過往所有破產、除牌及被剔除的個案均被排除。回報偏差:每年 +3% 至 +8%。
✓ 我們的做法
每個歷史日期的股票範圍,均包含當日所有已上市的股票——包括其後被除牌或破產的股票。即時點(point-in-time)股票範圍建構。
過度擬合(曲線擬合)偏差
最為常見過度擬合是指策略在歷史數據上被過度優化,以致實際上只是「記住」了過去,而非學到可以推廣的規律。一個擁有 12 個參數、全部以 3 年數據調校的策略,會呈現亮麗的歷史表現,卻會在實盤交易中立即失效。
我們如何偵測及防止過度擬合
我們傾向採用自由參數少於 5 個的策略。每增加一個參數,曲線擬合的風險便會倍增。
我們將每個參數上下調整 ±10–20%,並衡量對回報的影響。穩健的策略會呈現平滑而平坦的曲面,而非尖銳的峰值。
我們把歷史期間分為 5 個互不重疊的區段,並衡量所有區段之間結果的一致性。
交易少於 50 次的回測,統計證據並不足夠。我們要求至少 100 次完整的來回交易。
我們將交易順序隨機打亂 10,000 次,以衡量回報分布,以及隨機排序下的最壞情況。
選擇偏差
經常被忽略選擇偏差是指選取哪些標的進行回測,在有意或無意之間受到這些標的過往表現的影響。若只在過去十年升幅最大的股票上測試動量策略,結果必然帶有偏差。
標的選擇
我們在查看結果之前先界定交易範圍。範圍準則建基於客觀篩選條件:市值、流動性、行業——而非歷史表現。
時間區間選擇
我們使用每個標的可得的完整歷史,而非刻意挑選的區間。若測試 2010–2024 年,便會包含 2015 年中國股災、2018 年調整及 2020 年新冠股災。
策略選擇
我們記錄所有測試過的策略,而不僅是有效的那些。發表偏差(只展示表現好的結果)也是選擇偏差的一種。
基準選擇
用作比較的基準在測試開始前已經確定。我們不會在看到結果後更換基準,以令相對表現看起來更好。
優化偏差
參數風險優化偏差是過度擬合的一種特定形式。當你對數百種參數組合進行網格搜尋並挑選表現最佳者時,你找到的並非「真正」的最優參數,而是因隨機雜訊而剛好在該段歷史期間表現最好的參數。
說明:為何「最佳」參數具有誤導性
我們的優化規則
- ● 策略參數在執行樣本內回測之前已經設定
- ● 若使用優化,只會在訓練集上進行——絕不會在驗證集上進行
- ● 我們會呈報優化曲面(而不僅是峰值),讓讀者可以看到穩健程度
- ● 我們傾向選用位於平坦高原的參數值,而非狹窄的峰值
- ● 滾動前推優化:定期重新優化參數,模擬真實的適應性管理
樣本外驗證
最後關卡樣本外(OOS)測試是最重要的驗證步驟。策略在訓練集上開發及優化完成後,會在一段完全獨立的保留期間內測試一次。OOS 結果不可用於進一步修改策略——否則該保留期間就不再是真正的樣本外。
15 年回測的典型數據分割
策略開發
(20%)
(20%)
滾動前推測試
滾動前推測試是更精密的 OOS 測試形式,模擬真實交易者定期重新優化策略的過程。我們並非採用單一固定的訓練/測試分割,而是使用滾動視窗:以最初 N 根 K 線優化,於其後 M 根 K 線測試,向前推進 M 根 K 線,然後重複。
滾動視窗
我們使用 12 個月的優化視窗,每次向前推進 3 個月,每個視窗各自獨立。
一致性檢查
我們衡量滾動前推表現與樣本內表現的比率。比率高於 50% 代表策略穩健。
兩者並列呈報
所有報告均並排顯示樣本內及滾動前推(樣本外)結果,確保完全透明。
偏差控制摘要
| 偏差類型 | 典型影響 | 我們的控制 | 狀態 |
|---|---|---|---|
| 前視偏差 | 影響極大——可令呈報回報倍增 | 下一根 K 線開市價執行;事件驅動引擎 | 已控制 |
| 倖存者偏差 | 年度回報高估 +3–8% | 包含已除牌股票的即時點股票範圍 | 已控制 |
| 過度擬合 | 策略在實盤交易中失效 | 參數敏感度;蒙地卡羅;≥100 次交易 | 已控制 |
| 選擇偏差 | 只展示刻意挑選的優勝者 | 預先界定股票範圍;完整歷史;呈報所有測試 | 已控制 |
| 優化偏差 | 虛假的「最優」參數 | 經濟邏輯;滾動前推;偏好平坦高原 | 已控制 |
| 缺少 OOS 驗證 | 樣本內結果 ≠ 實盤結果 | 60/20/20 分割;滾動前推測試 | 已控制 |