組合回測(portfolio backtest)的做法,是把一套已經寫死的買賣規則放回歷史數據上重演一次,然後觀察它在不同市況下產生的持倉、回報、波幅與回撤。跑出一條漂亮的資產淨值曲線不難,難的是判斷那條曲線裡面有多少是真本事,有多少是數據處理與假設留下來的產物。讓策略在歷史數據上賺錢很容易,讓它在未來市場中站得住腳,困難得多。
回測能回答的問題比想像中少
一個設計得當的回測,可以釐清幾件核心事實:規則在歷史上實際觸發過多少次、平均持倉多久、換手率有多高、在哪些年份出現過深度回撤、回撤之後花了多長時間才收復、策略對交易成本有多敏感、同一套邏輯套用到不同市場或不同資產類別時行為是否一致。這些都是「規則的行為特徵」,跟未來會不會賺錢是兩回事,卻是判斷一個策略是否值得繼續研究的關鍵材料。
回測沒有能力回答未來的精確回報,無法保證單段亮眼成績不是由偶發事件撐起,也無法預測投資者在帳面大幅虧損時能否維持紀律執行。回測真正的核心價值在於淘汰不合格的策略,而不是單純挑選歷史最優解。跑一百個想法,能通過層層檢驗的通常只剩少數幾個,淘汰過程省下的是真金白銀去市場試錯的成本。
把回測定位成「可證偽的工具」,標準就會完全不同。研究重點不再是尋找回報最亮眼的那條曲線,而是設計一連串能讓策略露出破綻的壓力測試。通過不了這些測試的策略,無論歷史年化回報多高,都應當直接捨棄。
動手之前:把投資想法寫成可執行的規則
回測最常見的失敗起點,是規則還在腦中浮動時就開始寫程式。程式一跑,看到結果不理想,便隨手微調條件直到曲線好看為止。這個過程會把歷史數據裡的隨機噪音一併固化成策略邏輯。
穩健的做法是在打開任何分析工具之前,先用文字把規則完整記錄下來,達到第三方也能照章執行的精確程度。必須明確界定的內容包括:
- 投資宇宙:包含哪些市場、哪些資產類別、市值或流動性下限是多少、有沒有排除細價股、REITs、封閉式基金或槓桿產品。
- 訊號來源:用哪些數據產生買賣決定、這些數據在當時的公布時點是什麼、需不需要等待財報或官方統計正式發布。
- 進場與離場條件:包括正常離場,也包括強制離場,例如退市、被收購、長期停牌、成分股被剔除。
- 持倉數量與權重:等權、市值加權、風險平價還是波動率目標,單一持倉的權重上限。
- 再平衡頻率:固定每月、每季,還是按偏離幅度觸發;再平衡時是全額重算還是僅調整偏離部位。
- 現金處理:未投入資金的利息基準、閒置資金比例上限。
- 比較基準:用什麼衡量策略成效,如對應市場指數、股債平衡組合或無風險利率。
- 成本假設:佣金、印花稅、交易所規費、買賣價差與滑價的具體數值。
規則文件確立後即應凍結版本。後續任何調整均視為新版本並保留舊版記錄,以確保研究軌跡透明可溯。
數據層:歷史數據的品質決定回測的上限
模型無法修正存在缺陷的底層數據。回測的大量阻礙來自資料處理細節,以下幾類偏差在實務中極為常見:
生存者偏差
使用當前指數成分股去回測歷史表現,等於預設選中了未來存續下來的企業。此偏誤會系統性高估歷史回報,在中小市值與強週期行業中尤為顯著。解決方法是採用包含歷史已退市、破產、被收購標的的完整時點數據庫(point-in-time database),確保在歷史每個時間點,策略只能看到當時真實存在的股票池。
價格還原與公司行動
除息、拆股、供股、分拆等公司行動都會改變價格序列。若使用未除息價格計算賣出、除息後價格計算買入,會虛構不存在的獲利;若完全不計股息回報,則會嚴重低估長期持有的總收益。實務上需採用雙軌處理:以還原價格序列計算持有期總回報,以歷史真實成交價模擬下單金額與股數。
財務數據的重述問題
財務數據庫中的歷史每股盈利可能已經過後續重述修訂,若直接調用最新版歷史數值,形同調用未來資訊。應嚴格使用帶有發布時間戳記的時點數據,或在財報法定公布截止日後加上保守的安全延遲期。
時間對齊與跨市場處理
跨市場(如同時涵蓋美股與港股)策略中,各交易所結算時區與休市日不同,訊號觸發時點與成交時點必須嚴格對齊。外幣計價資產必須按當日真實匯率換算回基準貨幣,未考慮匯率波動與兌換成本會導致回測與實盤感受產生巨大偏差。
停牌、缺失值與衍生品定價
標的停牌期間不可視為自由流動,亦不可按零回報簡單帶過。缺失值需按一致邏輯填補並記錄填補佔比;債券與場外衍生品若採用模型估值而非撮合成交價,價格波動往往會被平滑化,解讀風險指標時需扣除此項影響。
組合回測的完整流程
1. 定義投資宇宙與基準
確立各時點可交易的資產範圍,並設定反映資金機會成本的基準組合。若策略持有七成股票,拿全股票指數作單純對比並不客觀,基準應當反映不執行該策略時的真實替代方案。
2. 建立時點對齊的數據面板
整合價格、財務數據、公司行動與宏觀指標,確保數據矩陣中每一格皆為歷史當日已公開可得的數據。正式計算前,建議抽樣核對典型公司行動案例的股數與現金流計算。
3. 產生訊號與配置權重
將交易規則代碼化,計算目標權重。核心原則為:訊號計算僅能使用盤前或收盤已確認的資訊,實際撮合成交必須安排在訊號確認後的下一個可交易窗口。
4. 設定再平衡機制
依據規則執行定期或閾值觸發的再平衡。調倉頻率越高,持倉越貼近目標權重,但換手產生的摩擦成本也隨之成倍增加。
5. 納入摩擦成本模型
按筆扣除佣金、稅收、規費與滑價,避免使用單一靜態的年化費率代替,因為不同市場波動週期下的換手強度差異極大。
6. 計算收益與風險時間序列
生成每日或每期的淨值序列,統計年化回報、最大回撤、波動率與下行風險指標,同時保存完整的逐筆交易日誌以供覆核。
7. 收益來源歸因分析
拆解超額收益來源,區分資產配置效應、選股選券效應、匯率變動與成本耗損。若多數超額收益僅來自少數極端交易或特定年份,需高度警惕其不可持續性。
8. 穩健性檢驗與樣本外測試
依序執行子期間切分、參數敏感度測試、成交延遲模擬與成本加倍壓力測試,排查過度擬合問題。
9. 歸檔可重現的研究日誌
完整保存代碼、隨機種子、數據版本、測試參數矩陣及被否決的歷史版本,確保任何第三方均可完整重現回測結果。

成本與摩擦:回測與實盤最大的落差來源
實盤表現大幅落後回測淨值,主因往往在於對摩擦成本的低估。買賣價差(bid-ask spread)在進出時各承擔一次,流動性較差的標的滑價衝擊顯著,資金規模擴大後的市場衝擊成本更會呈非線性增長。
不同交易所的費用結構存在顯著不對稱性:
- 香港市場:買賣港股涉及印花稅、證監會交易徵費、會計及財務匯報局交易徵費與聯交所交易費等多項稅費,買賣雙方均需各自繳納,一次完整的買入與賣出會產生雙向扣費。
- 美股市場:多數主流券商提供零佣金交易,但賣出交易仍需依法繳納美國證券交易委員會(SEC)監管費與金融業監管局(FINRA)交易活動費(TAF),買入則通常不徵收該等費用。
- 跨境與做空成本:涉及跨境資產需計算股息預扣稅(Withholding Tax)及換匯點差;做空策略則需額外納入融券借券利息與借券困難度(hard-to-borrow)成本。
被低估最嚴重的維度是換手率與策略容量。高換手策略在低費率假設下看似有利可圖,長期累積的摩擦卻足以侵蝕全部超額收益。回測假設以當日收盤價無限制全額撮合,等於默認市場擁有無限流動性。壓力測試時,應當將基礎成本假設提高至兩倍到三倍,若策略在成本加倍後超額收益歸零,則該策略在實盤中缺乏安全邊際。
常見陷阱與排查方式
前視偏誤(Look-Ahead Bias)
使用當日收盤價計算當日訊號,又假設以同一收盤價立即成交;或在選股時調用尚未正式披露的當季財報。此類錯誤不會造成程式報錯,但會產生無法在現實中複製的高回報。
過度擬合與參數敏感(Overfitting)
在大量參數組合中挑選回報最高的一組。檢驗方式是觀察「參數鄰域」:若參數設為 20 時表現優異,但改為 18 或 22 即急劇惡化,該參數極可能是噪聲擬合的產物。穩健策略在合理的參數區間內應當呈現平緩的高原分佈。

多重檢驗與倖存策略偏差(Data Snooping)
反覆測試數百個不同指標,僅公開表現良好的版本,隱匿失敗結果。記錄並歸檔所有測試歷史,是對抗數據挖掘偏差的有效手段。
宏觀體系轉變(Regime Shift)
利率環境、交易微觀架構與監管法規隨時代演變。跨越數十年的回測可能混雜了完全不同的市場體系,掩蓋了規則在當前市場結構下的真實失效風險。
最大回撤的認知誤區
歷史最大回撤僅代表「過去發生過的最差情況」,並非未來虧損的上限。評估資金承擔能力時,應以歷史最大回撤的 1.5 倍至 2 倍作為極端情境參考。
關鍵指標解讀與誤讀防範
評估組合回測表現時,需兼顧收益、波動與尾部風險,單一指標極易產生誤導:
| 評估指標 | 核心衡量維度 | 實務解讀陷阱 |
|---|---|---|
| 年化複合回報(CAGR) | 資產長期複合增長率 | 易被單一極端行情的爆發年拉高,需結合幾何平均與滾動回報觀察。 |
| 年化波動率 | 收益序列的離散程度 | 無法衡量肥尾(Fat-tail)風險,對非對稱分佈資產不夠靈敏。 |
| 夏普比率(Sharpe Ratio) | 每承擔一單位總波動的超額回報 | 假設收益呈常態分佈,在包含期權或強烈負偏態的策略中會大幅高估表現。 |
| 索提諾比率(Sortino Ratio) | 每承擔一單位下行波動的超額回報 | 目標門檻收益率設定不同時數值無法跨策略橫向對比。 |
| 最大回撤與修復期 | 資產高點回落的最大幅度與經歷時間 | 回撤持續時間(Underwater Duration)過長往往導致投資者在中途放棄執行。 |
| 卡瑪比率(Calmar Ratio) | 年化回報與歷史最大回撤之比 | 對樣本區間長度高度敏感,短期樣本容易失真。 |
| 換手率與摩擦比 | 年度資產週轉率與摩擦損耗佔比 | 平均換手率常掩蓋劇烈震盪市況下的集中調倉摩擦。 |
穩健性驗證:判定策略合格的七重測試
一份未經嚴苛壓力測試的回測不具備實務參考價值。建議依序執行以下檢驗:
- 子區間分割測試:將樣本劃分為 5 至 8 個子區間(務必包含至少一輪完整熊市與流動性危機)。策略若僅在特定單一牛市賺錢,其邏輯通常不可泛化。
- 參數高原檢驗:在基準參數 ±20% 範圍內擾動參數,觀察回報分佈是否平滑。尖峰狀的分佈代表高度擬合,寬闊平緩的高原分佈才具備容錯能力。
- 執行延遲測試:將下單執行時間強制延後 1 至 2 個交易日。若超額收益迅速消失,說明策略嚴重依賴極端精準的擇時,實盤滑價容忍度極低。
- 摩擦成本倍增測試:將手續費、稅費與滑價假設調高至 200% 與 300%,檢視淨收益是否仍顯著為正。
- 蒙地卡羅隨機對照:固定資產池、持倉數量與調倉頻率,使用固定隨機種子生成 500 組隨機交易組合。真實策略的表現若無法位列前 20%(第 80 百分位以上),其超額收益很可能純屬隨機擾動。
- 滾動樣本外前進驗證(Walk-Forward Analysis):採用滑動窗口模式,以歷史區間優化規則,隨後在未參與優化的下一階段運行,逐段滾動向前評估。
- 經濟邏輯合理性審查:策略必須具備明確的收益來源依據——是承擔了流動性折價、結構性再平衡溢價,還是利用了具體的制度約束。無法用清晰經濟邏輯解釋的規律,多數是歷史數據巧合。
回測的核心使命是證明「該策略在何種市場條件下會失效、最大代價為何」,而非單純論證其過去多麼完美。
實務環境變化與回測認知更新
數據處理工具普及後,公開因子的使用更為廣泛,部分經典因子可能因資金過度擁擠而出現收益衰減。評估策略時,建議比對近五年與早期區間的表現結構,確認收益邏輯在現代市場環境中是否依然有效。
常見交易平台內建的回測工具多以簡化模型運作,往往預設以收盤價即時撮合、忽略買賣價差與分紅稅負。使用此類工具作為初篩後,必須導出原始數據,置入完整的摩擦模型進行二度校驗。
藉助自動化與代碼生成工具建構策略時,需特別核對每筆數據在回測歷史時點的可得性標記,防止未來數據在無意中滲入回測邏輯。工具的效率提升不能取代對數據時序的嚴格把關。
回測完成是實盤研究的起點
回測報告不是獲利保證書,而是風險排查清單。把標準定在「能否通過事先設定的證偽檢驗」,能有效避免在無效策略上浪費資金與時間。
策略進入小規模實盤驗證後,應當持續記錄真實撮合成交價與回測模擬價之間的偏差(Execution Drag)。這些實盤偏差數據將反哺成本模型,讓後續的研究與驗證更趨近於真實市場。
常見問題(FAQ)
Q1:回測時間跨度越長越好嗎?
並非越長越好。時間跨度太短(如少於 3 年)無法經歷完整的牛熊週期;但跨度過長(如超過 30 年)可能納入市場微觀架構與監管環境完全不同的時期。通常建議覆蓋 10 至 15 年,確保包含至少一輪完整經濟週期及流動性危機事件即可。
Q2:如何判斷一個策略是否出現了「過度擬合」?
主要觀察兩個特徵:一是參數敏感度,若輕微修改參數(如移動平均週期從 20 改為 22)回報大幅下跌,通常為擬合產物;二是樣本外表現,若策略在未參與參數調整的樣本外數據中表現出現斷崖式滑落,即屬過度擬合。
Q3:既然回測不等於未來實盤表現,為什麼還要做回測?
回測的主要作用在於「證偽與淘汰」,而非「預測未來」。回測能幫助投資者以低成本排除具備邏輯漏洞、換手過高被成本侵蝕或回撤不可承受的劣質策略,為實盤篩選出具備足夠安全邊際的方案。