回測專家
基於專業方法論的系統化交易策略回測方法,優先考慮穩健性而非樂觀結果。
核心哲學
目標:找到「最不易失效」的策略,而非紙上「獲利最多」的策略。
原則:增加摩擦、壓力測試假設,然後觀察哪些策略能夠存活下來。如果一個策略在悲觀條件下依然表現良好,它在實盤交易中更有可能成功。
何時使用此技能
在以下情況使用此技能:
- 開發或驗證系統化交易策略
- 評估一個交易想法是否足夠穩健,能夠實盤執行
- 除錯為何回測結果可能具有誤導性
- 學習正確的回測方法論
- 避免常見陷阱(曲線擬合、未來函數偏誤、生存者偏差)
- 評估參數敏感性和市場狀態依賴性
- 為滑價和執行成本設定現實預期
先決條件
- Python 3.9+(用於評估腳本)
- 無需 API 金鑰
- 無需外部資料依賴 — 指標由使用者提供
工作流程
1. 陳述假設
用一句話定義優勢。
範例:「在財報季跳空高開 >3% 並在首小時內回補至前日收盤價的股票,提供均值回歸的機會。」
如果你無法清楚表達優勢,請不要繼續測試。
2. 明確編碼規則,不留主觀空間
以完全明確的細節定義:
- 進場:確切條件、時機、價格類型
- 出場:停損、獲利目標、基於時間的出場
- 倉位規模:固定金額、投資組合百分比、波動率調整
- 篩選條件:市值、成交量、產業、波動率條件
- 標的池:哪些標的有資格參與
關鍵:不允許任何主觀判斷。每個決策都必須基於規則且明確無歧義。
3. 執行初步回測
在以下條件下進行測試:
- 至少 5 年(最好是 10 年以上)
- 多種市場狀態(牛市、熊市、高/低波動率)
- 現實成本:佣金 + 保守的滑價
檢查初步結果的基本可行性。如果從根本上存在缺陷,則反覆迭代假設。
4. 壓力測試策略
這是 80% 的測試時間應該花費的地方。
參數敏感性:
- 測試停損在基準值的 50%、75%、100%、125%、150%
- 測試獲利目標在基準值的 80%、90%、100%、110%、120%
- 將進出場時間變動 ±15-30 分鐘
- 尋找穩健表現的「平台區域」,而非狹窄的峰值
執行摩擦:
- 將滑價增加至典型估計值的 1.5-2 倍
- 模擬最差情況的成交(買入在賣一價+1 tick,賣出在買一價-1 tick)
- 加入現實的訂單拒絕情境
- 使用悲觀的佣金結構進行測試
時間穩健性:
- 逐年分析績效
- 要求大多數年份具有正期望值
- 確保策略不依賴於 1-2 個特殊時期
- 分別在不同市場狀態下測試
樣本數:
- 絕對最低:30 筆交易
- 建議:100 筆以上交易
- 高信心度:200 筆以上交易
5. 樣本外驗證
滾動最佳化分析:
- 在訓練期間最佳化參數(例如,第 1-3 年)
- 在驗證期測試(第 4 年)
- 向前滾動並重複
- 比較樣本內與樣本外績效
警示訊號:
- 樣本外績效 < 樣本內績效的 50%
- 需要頻繁重新最佳化參數
- 不同時期之間參數變化劇烈
6. 評估結果
需要回答的問題:
- 優勢在悲觀假設下是否仍然存在?
- 績效在參數變化時是否穩定?
- 策略在多種市場狀態下是否有效?
- 樣本數是否足以提供統計信心?
- 結果是否現實,而非「好到難以置信」?
決策標準:
- ✅ 部署:通過所有壓力測試,且績效可接受
- 🔄 改進:核心邏輯健全,但需要調整參數
- ❌ 放棄:未通過壓力測試,或依賴於脆弱的假設
使用評估腳本進行結構化的量化評估:
python3 skills/backtest-expert/scripts/evaluate_backtest.py \
--total-trades 150 \
--win-rate 62 \
--avg-win-pct 1.8 \
--avg-loss-pct 1.2 \
--max-drawdown-pct 15 \
--years-tested 8 \
--num-parameters 3 \
--slippage-tested \
--output-dir reports/
該腳本從 5 個維度(樣本數、期望值、風險管理、穩健性、執行現實性)進行評分,檢測紅旗標誌,並輸出「部署/改進/放棄」的決策。
關鍵測試原則
懲罰策略
在各處增加摩擦:
- 佣金高於實際
- 滑價為典型值的 1.5-2 倍
- 最差情況的成交
- 訂單拒絕
- 部分成交
理由:能夠在悲觀假設下存活的策略,通常在實盤交易中表現更佳。
尋找平台,而非峰值
尋找績效穩定的參數範圍,而非造成績效尖峰的最佳值。
良好:策略在停損範圍為 1.5% 到 3.0% 時都能獲利 糟糕:策略僅在停損恰好為 2.13% 時有效
穩定的績效表示真正的優勢;狹窄的最佳值則暗示曲線擬合。
測試所有案例,而非精心挑選的範例
錯誤方法:研究精心挑選的「市場領頭羊」 正確方法:測試每個符合條件的股票,包括那些失敗的
選擇性範例會產生生存者偏差並高估策略品質。
將靈感產生與驗證分離
直覺:有助於產生假設 驗證:必須純粹由數據驅動
永遠不要讓對某個想法的執著影響對測試結果的解讀。
常見失敗模式
及早識別這些模式以節省時間:
- 參數敏感性:僅在特定參數值下有效
- 市場狀態特定:在某些年份表現良好,在其他年份則表現糟糕
- 滑價敏感性:加入現實成本後無法獲利
- 小樣本:交易數量太少,缺乏統計信心
- 未來函數偏誤:「好到難以置信」的結果
- 過度最佳化:參數過多,樣本外結果不佳
詳細範例和診斷框架請參閱 references/failed_tests.md。
輸出
reports/backtest_eval_<timestamp>.json— 結構化評估,包含各維度評分、紅旗標誌和決策reports/backtest_eval_<timestamp>.md— 可讀報告,包含維度表格、關鍵指標和紅旗詳細資訊
資源
方法論參考
檔案:references/methodology.md
何時閱讀:需要有關特定測試技術的詳細指引時。
內容:
- 壓力測試方法
- 參數敏感性分析
- 滑價與摩擦建模
- 樣本數要求
- 市場狀態分類
- 常見偏誤與陷阱(生存者偏差、未來函數偏誤、曲線擬合等)
失敗測試參考
檔案:references/failed_tests.md
何時閱讀:當策略未通過測試,或從過去的錯誤中學習時。
內容:
- 為什麼失敗有價值
- 常見失敗模式及範例
- 案例研究記錄框架
- 評估回測的紅旗檢查清單
關鍵提醒
時間分配:花 20% 的時間產生想法,80% 的時間嘗試打破它們。
無上下文要求:如果策略需要「完美的背景」才能運作,則它不夠穩健,不適合系統化交易。
紅旗標誌:如果回測結果看起來太好(勝率 >90%、最小回撤、完美時機),請仔細審查是否存在未來函數偏誤或數據問題。
工具限制:了解你的回測平台