
財務分析基礎:回測與偏誤——策略回測漂亮,可能只是資料錯覺,以 S&P 500 生存者偏誤為例
二戰時軍方想幫返航轟炸機補強彈孔最多的地方,統計學家 Wald 說錯了——該補強的是「沒有彈孔」的地方,因為中彈那裡的飛機根本沒飛回來。這就是生存者偏誤,也是最會騙人的回測陷阱:拿「今天的 S&P 500 成分股」回測歷史,你已經偷偷刪掉了所有破產下市的失敗者。本文拆解四種讓回測漂亮到假的偏誤,以及誠實回測的方法。這也是財務系列的最終章。
WRITTEN BY

- Name
- Harry Chang
財務系列走到最後一篇。前九篇我們學會了讀財報、算估值、辨盈餘品質、看穿組合風險與因子。這些工具最終都會匯集到一個動作——回測:用歷史資料驗證「這套方法過去有沒有用」。
但這一篇要告訴你一件掃興的事:回測是整個投資裡,最容易騙過你自己的工具。 而其中最陰險的一種騙術,藏在一個你以為最中立、最乾淨的資料裡——S&P 500 的成分股名單。
先從一個二戰的故事說起。
盟軍想強化轟炸機的裝甲,工程師統計了返航飛機的彈孔分布,發現機翼與機尾彈孔最密集,主張補強那裡。統計學家 Abraham Wald 卻說:你們完全搞反了——該補強的是「幾乎沒有彈孔」的引擎和駕駛艙。 因為被打中那些部位的飛機,根本沒能飛回來讓你統計。你看到的彈孔分布,是「倖存者」的分布,不是「被擊落者」的分布。
這,就是生存者偏誤 (Survivorship Bias)——而它每天都在你的回測裡,悄悄擊落你的判斷。
NOTE
回測 (Backtesting):用歷史資料模擬一套投資策略,看它過去的績效如何。 生存者偏誤 (Survivorship Bias):分析時只看得到「存活到今天」的樣本,看不到中途消失(破產、下市、清算)的失敗者,導致結論系統性地過度樂觀——你數的是飛回來的飛機。
- 1. 你看不見的那些飛機
- 2. S&P 500 的陷阱:一份會自動刪除失敗者的名單
- 3. 讓回測漂亮到假的四種偏誤
- 4. 誠實回測的五個紀律
- 5. 誠實的三個提醒
- 6. 總結
- 尾聲:這個系列,其實只講了一件事
- 參考資料 (References)
1. 你看不見的那些飛機
生存者偏誤的可怕,在於你缺的資料,正是最重要的資料——而且你完全感覺不到它不見了。
- 共同基金:資料庫裡「平均基金報酬」常被高估,因為績效爛的基金早就被清算或合併掉、從資料庫消失了。你看到的是活下來的那些。
- 創業神話:「輟學創業成為億萬富翁」的故事,忽略了成千上萬同樣輟學、卻血本無歸的人——他們不會上雜誌封面。
- 回測:這是本篇的主角,也是這個偏誤在投資裡最昂貴的形式。
2. S&P 500 的陷阱:一份會自動刪除失敗者的名單
假設你想驗證一套選股策略,你很聰明地說:「我就用 S&P 500 成分股來回測,這是最具代表性的大公司名單。」於是你抓了今天的 500 家公司名單,套回過去 30 年的股價——
你已經犯下生存者偏誤了。
因為 S&P 500 不是一份固定名單,它每年都在換血:平均每年約 20 家公司被踢出、換新血進來。被踢出的原因是什麼?破產、被購併、或衰退到不夠格。用「今天的成分股」回測歷史,等於偷偷把所有失敗者從歷史裡刪掉了:
- 1957 年 S&P 500 剛成立時的原始 500 家,到今天只剩約 53 家還留在指數裡——超過 85% 的原始成員已經消失或掉出。
- 你的回測名單裡,沒有 Enron(安隆,還記得第 7 篇嗎)、沒有 Lehman Brothers(雷曼)、沒有 Kodak(柯達)、沒有 Blockbuster——這些曾經風光、後來歸零的公司,全被你的「今日名單」無聲刪除。
結果就是:你的策略在回測裡表現亮眼,因為它在一個「事後才知道誰會活下來」的世界裡操作。上線後才發現,真實世界會發給你當時看起來一樣體面、後來卻爆雷的公司——而那些,正是你回測時被剔除的樣本。
IMPORTANT
關鍵陷阱:任何用「當前成分股名單」跑歷史回測的研究,報酬都被系統性高估。正確做法是用 point-in-time(時點還原) 資料——回測到 2001 年那一格時,名單裡就該有還沒破產的 Enron。
3. 讓回測漂亮到假的四種偏誤
生存者偏誤只是其中一種。回測會騙人的方式,至少有四大類:
| 偏誤 | 白話 | 後果 |
|---|---|---|
| 生存者偏誤 | 只用活到今天的樣本回測 | 報酬系統性高估 |
| 前視偏誤 (Look-ahead) | 用了當時還拿不到的資料(如事後重編的財報) | 假裝你有預知能力 |
| 過度擬合 (Overfitting) | 試了上千種參數,挑出剛好最漂亮的那組 | 擬合的是雜訊,不是規律 |
| 忽略交易成本 | 回測不算手續費、滑價、稅、流動性 | 帳面賺、實際賠 |
第三種過度擬合,正是上一篇「因子動物園」的兄弟:你在同一份歷史資料上測夠多次,純靠運氣總會挖到一組看起來完美的規則——但它只是背下了過去的雜訊,換一段時間就失效。一句華爾街老話:「把資料拷問得夠久,它什麼都會招」。
4. 誠實回測的五個紀律
- 納入下市股票:用包含已破產、已下市公司的資料庫(point-in-time),別讓失敗者被自動刪除。
- 樣本外測試 (Out-of-sample):用一段資料建立策略,用另一段從沒看過的資料驗證——在訓練資料上漂亮不算數(呼應 AI 系列的訓練/測試切分)。
- 算進所有摩擦成本:手續費、買賣價差、稅、以及大額下單推動價格的滑價。
- 參數越少越好:一套需要七八個神奇參數才成立的策略,幾乎肯定是過度擬合;穩健的策略通常簡單。
- 先紙上模擬再進場:回測是「對過去」,紙上交易 (paper trading) 是「對未來」——讓策略在真實但不下真金的環境跑一段,才知道它離開實驗室還活不活。
5. 誠實的三個提醒
- 再乾淨的回測,也只是假設,不是保證。它證明的是「這套方法在過去那段特定歷史裡有效」,不是「未來會有效」。過去發生過的,是所有可能世界裡的一種而已。
- 市場會適應。一個策略一旦被發表、被眾人採用,它的優勢就會被套利掉(回想 035 的因子衰減)——最好的回測策略,往往是還沒被寫進論文的那些。
- 體制會轉變 (Regime Change)。用零利率時代(2010s)資料回測出來的策略,搬到升息時代(2020s)可能完全失靈——歷史的「規律」有它的時空背景,回想 030 利率如何改寫一切。
6. 總結
- 生存者偏誤:你只數得到飛回來的飛機——用「今天的 S&P 500」回測歷史,等於刪掉所有破產下市的失敗者,報酬被系統性高估。
- 原始成員只剩約 53 家:S&P 500 每年換血約 20 家,超過 85% 的 1957 原始成員已消失——「當前名單」是一份會自動刪除失敗者的名單。
- 四種回測騙術:生存者、前視、過度擬合、忽略成本——把資料拷問夠久,它什麼都會招。
- 誠實回測五紀律:納入下市股、樣本外驗證、算摩擦成本、參數從簡、先紙上模擬。
- 回測是假設,不是保證:市場會適應、體制會轉變,過去有效不等於未來有效。
尾聲:這個系列,其實只講了一件事
財務系列十篇到這裡結束。回頭看這條路——三大財報連動(027)、自由現金流(028)、資本效率(029)、資金成本(030)、DCF(031)、相對估值(032)、盈餘品質(033)、組合風險(034)、因子(035)、到今天的回測偏誤——它們其實只在講同一件事:如何不被數字騙。
被公司的帳面獲利騙(虧損卻現金滿手,或獲利卻是假帳)、被單一估值倍數騙(便宜的其實更貴)、被「500 檔很分散」騙、被「我打敗大盤」騙(其實只是吃到因子)、最後被自己漂亮的回測騙。財報與估值的技術會過時,但對漂亮數字保持懷疑這個習慣,是投資裡唯一不會貶值的資產。
役物而不役於物——工具是拿來用的,別反過來被工具給的數字牽著走。這也是這整個系列,最想留下的一句話。
參考資料 (References)
- S&P 500 - Wikipedia
- S&P Releases List of Companies in the S&P 500 Since 1957
- Abraham Wald(1943)關於戰機裝甲的統計備忘錄——生存者偏誤的經典案例