關閉選單

存活者偏差是什麼?拿今天的成分股回測,年化報酬會多出 5.3 個百分點

10 秒看懂
存活者偏差是你只看得到活下來的那些,倒下的已經從名單上消失了。我們拿今天的標普 500 成分股,假裝 2015 年初就等權重買下去抱到現在,總報酬 +462%。同樣等權重、可是成分股會跟著指數換的 RSP,實際只有 +226%。年化差 5.28 個百分點,其中 3.69 個來自「倒下的沒被算進去」,其餘來自「後來才入選的被當成一開始就買了」。更麻煩的是想修正也修不了。
下面直接回答這幾題
  1. 存活者偏差是什麼
  2. BOS 回測:只差在名單怎麼來的
  3. 名單換得比你以為的快
  4. 想把消失的補回來,也補不齊
  5. 換一個起點,幅度差不多
  6. 看到別人的回測,可以先問三個問題
  7. 這次回測要先講清楚的事
  8. 常見問題

存活者偏差是什麼

二戰的時候,盟軍統計返航飛機的彈孔分布,想知道該補強哪裡。彈孔最多的是機翼,於是有人主張加強機翼。統計學家沃德(Abraham Wald)指出這個推論整個反了,因為那些被打中引擎的飛機根本沒能飛回來,所以在他手上那份資料裡,引擎中彈的樣本數其實是零。

投資裡的版本長得一模一樣。你打開任何一份「過去十年報酬」的統計,裡面列出來的公司全部都是今天還在的,而下市的、被併購的、被踢出指數的那些,不會出現在你查得到的任何一份名單上。

那這個偏誤實際上有多大?大家都知道它存在,可是很少有人真的把它量出來過,所以我們自己量了一次。

BOS 回測:只差在名單怎麼來的

用今天的名單回測與指數實際報酬的年化對照

同一段期間、同樣等權重、同樣不扣成本。

做法很簡單。拿今天的標普 500 成分股,假裝 2015 年 1 月 2 日就等權重買下去、中間什麼都不管地一路抱到 2026 年 9 月 11 日,前後共 11.7 年。對照組是 RSP,它是等權重的標普 500 指數 ETF,成分股會跟著指數換,所以沒有這個偏誤。

三條線跑出來是這樣。今天的名單全部算進去(459 檔有完整報價),年化 15.92%;只留「2015 年當時就已經在指數裡」的那些(315 檔),年化 14.33%;RSP 的實際報酬,年化 10.64%。

差距要分成兩層看,因為它們是兩個不同的錯。

第一層是純粹的存活者偏差,值 3.69 個百分點。315 檔那一版只用了「當時在、今天也還在」的公司,等於把 2015 年在指數裡、後來被剔除的那些整批刪掉。光是這樣,年化就從 10.64% 變成 14.33%。

第二層是「事後才知道誰會入選」,兩者合計 5.28 個百分點。把今天的名單全部算進去,等於連 2015 年還不夠格、後來因為變強才被納入指數的公司,都被當成你 2015 年就買了。這是另一種偷看未來,跟未來函數是同一類毛病。

換成總報酬更直觀:用今天的名單是 +462%,實際只有 +226%。

名單換得比你以為的快

今天的標普 500 成分股與 2015 以來被剔除的代號數

指數的成分股一直在換,只是換掉的那些不會留在你看得到的地方。

為什麼差這麼多?因為名單換血的速度超乎多數人的想像。

今天的標普 500 有 503 檔,其中 188 檔是 2015 年之後才被加進來的。同一段期間,被剔除過的代號有 250 個。

所以拿今天的名單去回測 2015 年,等於兩件事同時發生。被剔除的那 240 家沒有被算進去,而後來才加入的那 188 家卻被當成你一開始就持有,兩個方向都讓報酬看起來更漂亮,而且它們會互相加成,這就是為什麼上面那個差距會大到讓人不太敢相信。

想把消失的補回來,也補不齊

被剔除的代號還查不查得到價格

被剔除的 250 個代號,在常見的資料源裡還剩下多少。

知道有這個偏誤之後,直覺的修法是把被剔除的那些公司補回來、整份資料重算一次,聽起來沒什麼難的,可是我們實際去試的時候,發現根本補不齊。

2015 年以來被剔除的 250 個代號,只有 38.4% 還查得到價格,61.6% 完全查不到。查不到的包括 Covidien、Safeway、PetSmart、Family Dollar 這些當年在名單上、規模都不小的公司。

這件事本身就是存活者偏差最麻煩的地方。消失的東西連在資料庫裡也跟著消失了,你甚至沒辦法知道自己漏掉了什麼。所以那個「補回來重算」的修法,聽起來合理,多數人實際上做不到。

換一個起點,幅度差不多

2015 與 2010 兩個起點的偏誤幅度對照

單位是年化報酬的百分點。

一個起點可能是巧合,所以我們把同一套做法往前推到 2010 年再跑一次,期間 16.7 年。

只留當時就在指數裡的 266 檔,年化 15.45%。今天的名單全部 419 檔,年化 17.28%。RSP 的實際報酬是年化 12.38%。

換算下來,純存活者偏差是 3.07 個百分點,加上事後入選合計 4.91 個百分點,跟 2015 年那一組的 3.69 與 5.28 相當接近,方向完全一樣。

要留意的是這個單位是年化。抱得越久,它累積起來的差距越大。2010 年那一組,用今天的名單算出來的總報酬是 +1329%,實際上是 +601%。

看到別人的回測,可以先問三個問題

不用會寫程式也能問。

第一,那份名單是什麼時候的?如果對方說「我測了標普 500 的成分股」,關鍵在他用的是哪一年的名單。用今天的名單測過去,上面那幾個數字就是他多出來的部分。

第二,下市或被併購的公司怎麼處理?答得出「用最後一個交易日的價格出場」是及格的。答不出來,或者說「那些資料找不到所以沒算」,那個回測的報酬就是被灌過水的。

第三,結果有沒有跟一個不會作弊的基準比?像我們這篇用 RSP,它的成分股會跟著指數換。基準線一擺出來,灌水的幅度自己就現形了。站上另有兩篇同一類的毛病可以一起看,過度擬合講的是參數在事後挑過,未來函數講的是時間軸接錯。

這次回測要先講清楚的事

第一,再平衡的方式不完全一樣。我們的組合用每日等權重,RSP 是每季再平衡,這個差異值 1.74 個百分點,而且方向對我們不利,因為我們的做法比完全不動還少賺,所以它不會是上面那個差距的來源。實際的偏誤如果改用完全不動的版本去算,只會更大。

第二,成本一律設 0。可是 RSP 的報酬已經扣掉它自己的內扣費用。這一點對我們的組合有利,所以實際的偏誤會比量到的再大一點點,結論的方向是安全的。

第三,只有 459 檔有完整報價。今天的 503 檔裡,有 44 檔在 2015 年還沒上市或查不到價格,那些只能排除。被排除的多半是近年才上市的公司,如果它們也能算進來,偏誤只會更大。

第四,加入日期取的是資料源給的欄位。被剔除又被加回來的公司,這個欄位可能只記最近一次,會讓「當時就在指數裡」的那份名單偏小。這同樣讓我們算出來的偏誤偏保守。

常見問題

存活者偏差是什麼?

你只看得到活下來的樣本,倒下的那些已經從名單上消失了,於是統計出來的結果比實際好。投資裡最常見的形式是拿今天還在的公司名單去回測過去。我們實測的規模是年化 5.28 個百分點,總報酬 +462% 對上實際的 +226%。

為什麼拿今天的成分股回測會高估?

因為同時犯了兩個錯。第一,2015 年在指數裡、後來被剔除的 240 家沒有被算進去。第二,2015 年還不夠格、後來才被納入的 188 家,卻被當成你一開始就買了。前者值 3.69 個百分點,兩者合計 5.28 個百分點。

那把下市的公司補回來不就好了?

理論上對,實際上補不齊。2015 年以來被剔除的 250 個代號,只有 38.4% 還查得到價格。Covidien、Safeway、PetSmart、Family Dollar 這些當年的成分股,在常見的資料源裡完全查不到。消失的東西連在資料庫裡也消失了。

買指數 ETF 也會有這個問題嗎?

不會。指數 ETF 持有的是當下的成分股,公司被剔除的時候它會跟著賣掉,虧損實實在在反映在淨值上。有問題的是「用今天的名單去推算過去」這個動作,不是持有指數本身。這篇的對照組 RSP 就是這樣運作的。

這個偏誤只有美股才有嗎?

任何有成分股汰換的市場都有,台股也一樣,差在資料取得的難度。美股的成分股異動紀錄公開而且完整,我們才能把它量出來,而資料越難取得的市場,這個偏誤就越不容易被發現,也就越危險。

怎麼判斷一份回測有沒有這個問題?

問三件事,名單是哪一年的、下市的公司怎麼處理、有沒有跟一個會汰換成分股的基準比。這三題裡第二題最關鍵,如果對方答不出來,或者回答「那些資料找不到所以沒算進去」,那份回測的報酬就是被灌過水的,差距大概就是這篇量到的規模。

這次回測有什麼限制?

有四個,而且四個都讓我們算出來的偏誤偏小。再平衡方式跟 RSP 不完全一樣,值 1.74 個百分點,方向對我們不利。成本設 0,可是 RSP 的報酬已經扣過內扣費用。今天的 503 檔裡只有 459 檔在 2015 年就有報價。加入日期用的是資料源的欄位,被剔除又加回來的公司可能只記最近一次。

林修禾 Joshua Lin

本文作者|林修禾 Joshua Lin

投資與教學資歷都超過二十年。教學橫跨三個階段:從兒童理財教育起步,到成人的價值投資,再到近年的量化交易。曾創立三間公司,並以價值投資建立起財務上的獨立與自信,也擔任過台積電的理財培訓師,是價值投資的國際級講師。他始終相信,理財是為了把生活過得更好,而看懂財報、獨立思考,遠比追逐明牌或現成的答案更重要。

延伸閱讀