Backtest

投資組合回測:把一句市場說法放回長期資料裡算

回測能回答的是「歷史上這樣做會發生什麼」,不是「未來會發生什麼」。 這一系列每一頁問一個具體的問題,用同一組公開資料算,並把結果最容易騙人的地方一併寫出來。

先看一次全部
股債比例要怎麼配?七種配置的 155 年實測:1 元的成長1871-02 到 2026-08,各組合把 1 元變成多少(對數刻度)。股 0 / 債 100期末 38.9 元、股 20 / 債 80期末 240.0 元、股 40 / 債 60期末 1196.9 元、股 50 / 債 50期末 2475.2 元、股 60 / 債 40期末 4866.0 元、股 80 / 債 20期末 16160.7 元、股 100 / 債 0期末 43696.7 元。125102050100200500100020005000100002000018801900192019401960198020002020股 0 / 債 100股 20 / 債 80股 40 / 債 60股 50 / 債 50股 60 / 債 40股 80 / 債 20股 100 / 債 01 元變成多少(對數)
從全債到全股七種配置,1871-02 到 2026-08。縱軸是對數刻度:155 年的成長倍數是四位數,線性刻度會把前一百年壓成貼著底的一條直線。全部為實質(已扣通膨)總報酬,未計費用與稅。
資料:Robert Shiller, Online Data(美股與美國長期公債的實質總報酬)
期間1871-02 – 2026-08(156 年)
全股票年化 7.1% 波動 14.1% 最深回撤 76.8%
股六債四年化 5.6% 波動 8.9% 最深回撤 48.4%
每一頁問一個問題8 個
回測:再平衡改變了什麼回測再平衡改變了什麼YU LAB歷史回測
回測
每年再平衡有用嗎?用 155 年的股債資料直接算

年、季、月與完全不動四種做法,在 155 年的股債資料上各自長成什麼樣子。

回測:配置是一筆交換回測配置是一筆交換YU LAB歷史回測
回測
股債比例要怎麼配?七種配置的 155 年實測

從全債到全股,每加一級股票換到多少報酬、付出多深的回撤。

回測:六四配的完整紀錄回測六四配的完整紀錄YU LAB歷史回測
回測
六四配真的比較穩嗎?1871 年以來的完整紀錄

一個被當成預設答案的配置,在 155 年裡實際經歷過什麼。

回測:一次投入 vs 分批回測一次投入 vs 分批YU LAB歷史回測
回測
一次投入還是分批投入?歷史資料上差多少

兩種做法在每一個歷史起點上的勝負,以及輸的時候輸多少。

回測:定期定額的真實報酬率回測定期定額的真實報酬率YU LAB歷史回測
回測
定期定額長期會變成什麼?每月固定投入的歷史結果

期末金額背後的報酬率該怎麼算,以及為什麼直覺的算法一定偏低。

回測:回撤有多深、多久回測回撤有多深、多久YU LAB歷史回測
回測
最大回檔有多深?股票、債券與各種配置的歷史紀錄

最深跌多少、跌多久、回本又花多久——三個數字缺一不可。

回測:退休那年決定很多事回測退休那年決定很多事YU LAB歷史回測
回測
退休後這樣配置撐得住嗎?從歷史序列看提領

同一個提領率,退休年份不同,結果可以差到一個歸零、一個翻倍。

回測:台股與美股同基準比較回測台股與美股同基準比較YU LAB歷史回測
回測
台股與美股怎麼比?把兩邊換算到同一個基準再看

換算到同一個基準之後,台股與美股的報酬與風險各是什麼樣子。

回測算的是什麼

每一條序列都是含息的總報酬,不是價格指數。價格指數會因為配息而向下跳動, 長期會嚴重低估實際報酬——這是回測最常見、也最難察覺的錯誤之一。

年化報酬用的是幾何平均,也就是把期末除以期初再開根號:

CAGR=(VTV0)12/n1\mathrm{CAGR}=\left(\frac{V_T}{V_0}\right)^{12/n}-1

年化波動由月報酬的樣本標準差乘以 12\sqrt{12} 得到, 夏普比率則以月頻超額報酬計算後再年化——用年化報酬直接除以年化波動會系統性偏高。

最大回撤是路徑上距離歷史高點最深的一次跌幅:

MDD=maxt(1VtmaxstVs)\mathrm{MDD}=\max_t\left(1-\frac{V_t}{\max_{s\le t}V_s}\right)


回測不能回答的事

這些頁面上的數字描述的是一段已經發生的歷史。它們沒有辦法給出未來的期望報酬, 這個限制來自樣本本身的性質,與謹慎與否無關:滾動視窗彼此高度重疊,不構成獨立樣本; 單一國家的長序列帶有倖存者偏誤;而任何一個年化報酬,換一個起始年就會變成另一個數字。

所有計算都沒有扣除內扣費用、交易成本、價差與稅。實際拿到的報酬一定低於這裡的數字, 而且再平衡越頻繁,差距越大。這一系列不推薦任何金融商品或配置, 也不提供個人化的投資建議——它提供的是可以自己重算一次的計算過程。


這頁的數字從哪裡來
發布
Robert J. Shiller, Yale University
涵蓋期間
1871-01 – 2026-08
單位
指數為相對值;CAPE 為倍數;gs10 為百分比;fwd10Stock 為小數形式的年化報酬。
本站擷取
可再散布
是——原始檔可轉載
使用條款
Shiller 公開提供本資料供學術與一般使用。本專案保存的是欄位子集的衍生檔,並保留抓取腳本。
拿這份資料下結論之前要知道的 4 件事
  • 1871–1926 的股利與盈餘是內插與重建值,不是即時揭露的數字。
  • 最新幾個月的盈餘可能是估計值,CAPE 會隨後續修正而變動。
  • fwd10Stock 在最後十年為空值(未來還沒發生)——回測時必須注意這是 look-ahead 的邊界。
  • 「實質」以美國 CPI 平減,對台灣讀者而言不是自己的實質報酬(§2.3、§19.9)。
發布
信義房屋不動產企研室、行政院主計總處、中華民國中央銀行、臺灣證券交易所
涵蓋期間
房租 1981–2026/房貸 1994-07–2026-06/房價 2001Q1–2026Q2/台股 2003-01-02–2026-08-14
單位
房價與房租為指數點位,利率為年息百分比,放款金額為新台幣百萬元,台股為指數點位。
本站擷取
可再散布
否——本站只保存並公開衍生結果
使用條款
四份都是官方或業界公開發布的統計,本專案只保存數字,不重製任何一方的報表版面。主計總處與中央銀行的部分屬政府開放資料(政府資料開放授權條款,須標示來源)。信義房價指數由信義房屋不動產企研室編製、證交所報酬指數由臺灣證券交易所編製,兩者都不是政府開放資料,交易所並對交易資訊訂有使用規範、對指數資料另設授權管道;因此本檔整體視為不可再散布,公開輸出(/models/tw-history.js)只放縮減過的序列——台股為月底收盤,不含逐日。
拿這份資料下結論之前要知道的 6 件事
  • 逐日台股序列只存在於本 repository;公開站的模型讀到的是月底收盤,回撤深度因此略淺(2008 年 −54% 對逐日的 −56%)。
  • 房價指數的台南市自 2019Q1 起才編製,更早的年份沒有值。
  • 房租類 CPI 長期偏離市場租金行情,因為它的樣本以續租戶為主,換約頻率低。用它推估「現在租一間要多少錢」會低估。
  • 五大銀行的放款利率是新承做案件的加權平均,不是存量利率,也不代表個別借款人拿得到的條件。
  • 台股報酬指數(含息)與常見的「加權指數」(不含息)不同,後者會因除息向下跳動。兩者不可混用。
  • 房貸資料自 1994 年 7 月起,該年只有六個月,年平均不完整(mtgMonths 記錄了每年的月數)。
發布
臺灣證券交易所
涵蓋期間
20240102 – 20260826
單位
指數點位(含息報酬指數)。
本站擷取
可再散布
否——本站只保存並公開衍生結果
使用條款
臺灣證券交易所依《交易資訊使用管理辦法》主張交易資訊的權利,指數資料另有授權管道(Market Data E-Shop、Index Licensing)。與 taiex 採同一個判斷:逐日序列只留在本 repository,公開輸出僅有降頻後的月底值與由它算出的統計量。
拿這份資料下結論之前要知道的 4 件事
  • MI_INDEX 端點的報酬指數約自 2009 年才有;2003–2008 只存在於人工取得的 CSV,本檔取代不了它。
  • 這是補丁層,單獨使用會缺少 2009 年以前的歷史;完整序列由本站在建置期把兩段合併後產生。
  • 收盤指數會因交易所事後更正而變動,重跑時務必檢查 git diff。
  • 逐日序列不進入公開輸出,公開站上只有月底值——見 docs/rights-audit.md §10。
發布
行政院主計總處
涵蓋期間
1959-01 – 2026-07
單位
指數點位,基期民國 110 年(2021)= 100。
本站擷取
可再散布
是——原始檔可轉載
使用條款
政府統計,依政府資料開放授權條款釋出,標示來源即可利用與再散布。本專案保存完整月頻序列並在公開輸出中使用。
拿這份資料下結論之前要知道的 5 件事
  • 主計總處註明最近三個月的資料可能因受查者延誤或更正報價而修正,所以最新幾個月不是定案值。
  • 民國 59 年(1970)以前的指數係依台灣省政府編布的指數銜接而成,與之後的編製方法不完全一致。
  • CPI 衡量的是一籃固定消費組合的價格,不等於任何個別家庭實際面對的通膨。
  • 房租類 CPI 長期偏離市場租金行情(見 taiwan-history 的說明),總指數也因此受影響。
  • 未經季節調整,所以逐月比較會受季節性影響;年增率或年平均才適合做趨勢判讀。
發布
Federal Reserve Bank of St. Louis(FRED),原始編製機關見各序列
涵蓋期間
1913-01 – 2026-08
單位
各序列不同,見 FredSeries.units。利率與殖利率為百分比(4.25 = 4.25%)。
本站擷取
可再散布
否——本站只保存並公開衍生結果
使用條款
大部分序列由聯準會體系編製,屬美國政府公開資料。但 AAA 與 BAA 兩條由穆迪(Moody’s)編製,FRED 將其歸類為 Copyrighted: Citation Required,序列說明附有穆迪的權利聲明(未經同意不得複製、重新包裝或再散布)。因此本檔整體視為不可再散布:只在圖表中使用衍生結果,並在圖說標明「Moody’s,經 FRED 取得」。
拿這份資料下結論之前要知道的 6 件事
  • 期限溢酬不是可觀測量,不同模型(ACM、Kim–Wright)的估計值差異可以到 50 個基點以上。
  • 月底值會受單日跳動影響;長期趨勢圖不受影響,但短期比較要小心。
  • FRED 上的 ICE BofA 指數目前只提供最近三年,因此本專案不使用它們——債券總報酬改由殖利率與存續期間自行重建。
  • 穆迪 Aaa/Baa 殖利率的樣本組成隨時間變化,1919 年的「Aaa」與今天不完全可比。
  • AAA/BAA 是有著作權的第三方資料:原始序列只留在本 repository 與 .cache/,不進入公開輸出,公開站上只有由它們算出的圖。
  • EXTAUS 是月平均匯率,不是月底匯率。用它換算跨幣別報酬時,換算出來的是「以月平均匯率計價」的路徑,與實際交易日的匯率有差。
引用這一頁

頁面上的年化、回撤與重訂基期是本站依所選期間即時計算的,原始機構沒有發布過那幾個數字, 所以引用的對象是這一頁,原始來源列在同一段裡。轉載圖表請一併保留來源那一行。

Yu Lab,〈投資組合回測:把一句市場說法放回長期資料裡算〉,Yu Lab,https://yulab.tw/backtest(擷取於 2026-09-06)。原始資料:Robert J. Shiller, Yale University《Online Data — U.S. Stock Markets 1871–Present and CAPE Ratio》(1871-01 – 2026-08);信義房屋不動產企研室、行政院主計總處、中華民國中央銀行、臺灣證券交易所《台灣房價、房租、房貸利率與股市報酬的長期序列》(房租 1981–2026/房貸 1994-07–2026-06/房價 2001Q1–2026Q2/台股 2003-01-02–2026-08-14);臺灣證券交易所《發行量加權股價報酬指數(逐日,MI_INDEX 端點)》(20240102 – 20260826);行政院主計總處《消費者物價指數銜接表(總指數)》(1959-01 – 2026-07);Federal Reserve Bank of St. Louis(FRED),原始編製機關見各序列《FRED 序列集(利率、期限溢酬、公司債殖利率、CPI、匯率、放款沖銷率)》(1913-01 – 2026-08)。
回報數字有誤