本文提供研究結果,沒有推薦這些買賣規則。想自行重跑,可先 設定 FinLab 環境,再 下載研究程式(.py);其他檔案見 研究下載區。
0050搭配00679B或00687B做股債配置,在2017到2026年這段期間沒有換到更好的風險調整報酬。0050六成、00679B四成、每季調回比例的原設定年化14.24%、日夏普1.11、最大回撤-29.41%;同期0050含息是23.24%、1.14、-33.96%。固定比例18組只有2組日夏普贏0050,0050跌破均線就全數換成美債的股債輪動9組全輸。本文以反面教材為主。
回撤確實變淺,代價是報酬少了九個百分點,日夏普也沒有提高。最關鍵的一年是2022年:美國升息讓長天期美債跌了兩成以上,00679B當年含息報酬-22.08%,和0050的-21.37%幾乎一樣,六四配置當年-21.40%,債券沒有發揮分散的作用。
00679B、00687B是什麼:台幣計價的20年美債
00679B 元大美債20年與00687B 國泰20年美債都在台灣證交所掛牌,用台幣交易,持有剩餘年限20年以上的美國公債,沒有做匯率避險。美債以美元計價,所以台灣投資人拿到的報酬是「美債價格變化+利息+美元兌台幣的匯率變化」三者相加。長天期公債的存續期間長,利率每變動一個百分點,價格的反應比短債大很多。
| ETF | 報酬 |
起點至2026-11-11年化 |
最大 |
日夏普 |
|---|---|---|---|---|
| 00679B | 2017-01-18 | -1.12% | -46.21% | -0.02 |
| 00687B | 2017-04-14 | -0.88% | -46.01% | 0.01 |
| 0050 | 2007-04-24 | 14.17% | -55.75% | 0.75 |
兩檔美債ETF這九年多含息年化都是負的,最大回撤接近一半,主要來自2020年後利率從低點上升。本研究關心的是它放進股債配置後,和0050的漲跌能不能互相抵銷。兩檔追蹤相近的指數,每個參數下的結果幾乎相同。
股債配置的兩種做法:固定比例與股債輪動
① 固定比例(股債平衡): 0050占50%、60%或70%,其餘放美債ETF;每月、每季或每年最後一個交易日把比重調回目標。債券選00679B或00687B,共18組。原參數在看結果前定為0050六成、00679B四成、每季調整。期間從00687B可交易的2017-04-13開始,18組同一天建倉。
② 股債輪動: 0050含息價收盤低於N日均線,就把全部資金換成00679B;回到均線以上再全部換回0050。N取20、60、120日,檢查頻率分每日、每週最後一個交易日、每月最後一個交易日,共9組;原參數是60日均線、每日檢查。期間從00679B上市的2017-01-17開始。
訊號只用當天收盤已知的價格,sim()在下一個交易日收盤成交。均線是用含息價計算,避免除息日的價格缺口被誤判成跌破。0050在2025-06-11到06-17因分割停止交易五天,這幾天沿用前一天價格,復牌當天的漲跌照常計入。
| 設計 | 參數格 | 原參數 | 至少 |
|---|---|---|---|
| ① |
0050占50/60/70%;每月、季、年;兩檔美債 | 60%、 |
13/18 |
| ② |
20/60/120日均線;每日、週、月檢查 | 60日、 |
7/9 |
股債配置回測結果
「贏」在開跑前定義為日夏普高於同一段期間的0050含息。日夏普是日報酬平均除以標準差再乘√252,不扣無風險利率;0050含息用還原價直接連乘,不經sim()、不扣交易成本。策略則一律用sim()預設手續費與稅。
手機閱讀表格時,可左右滑動查看全部欄位。
①的期間是2017-04到2026-11,②是2017-01到2026-11,各自對照同期的0050含息。
| 組合 | 年化報酬 | 日夏普 | 最大 |
年化波動 |
|---|---|---|---|---|
| ① |
14.24% | 1.11 | -29.41% | 13.17% |
| 0050 |
23.24% | 1.14 | -33.96% | 20.88% |
| ② |
6.76% | 0.46 | -46.94% | 18.48% |
| ② |
16.57% | 1.14 | -30.70% | 14.97% |
| 0050 |
23.28% | 1.15 | -33.96% | 20.68% |
互動報告是原參數的六四配置,沒有從18組裡挑最好的一組。報告內建的夏普採自己的無風險利率慣例,本文的比較統一用不扣無風險利率的日夏普。
六四配置的波動只有0050的六成多,回撤少了4.55個百分點;但報酬也少了九個百分點,兩者相抵,日夏普1.11略低於1.14。如果目的是讓帳戶的起伏小一點,固定比例做到了;如果目的是在同樣的風險下拿到更多報酬,這段期間沒有做到。
18組固定比例:只有七成股票、每季調整勝出
18組的日夏普落在0.98到1.15之間,0050同期是1.14。勝出的兩組都是0050占七成、每季調整,00679B版1.150、00687B版1.154,只比0050的1.139多0.011與0.015。0050占五成的六組全部落後0.11以上,股票越少、日夏普越低,方向一致。換句話說,這段期間在0050裡加美債,夏普是被拉低的,加越多越低。
00679B和00687B在同一個比例與頻率下,日夏普差距都不到0.01。兩檔追蹤相近的長天期美債指數,選哪一檔對結論沒有影響;費用率、規模與折溢價這些實際差異,日線回測看不出來。
再平衡頻率的差異比比重小。每季調整在三種比重下都略好於每月與每年,差距約0.02到0.05。Perold與Sharpe(1988)指出,固定比例的再平衡在來回震盪的市場裡有利,在單邊趨勢裡則會一直賣出上漲的資產,好壞取決於市場的走法。本次三種頻率的差距很小,不足以判斷再平衡本身是助力還是拖累;決定結果的主要是股票占多少。
前後半段:2022年股債一起跌
把原參數的交易日對半切,前半段(2017-04到2022-01)六四配置日夏普1.34,贏0050的1.16;後半段(2022-01到2026-11)只剩0.99,0050是1.15。前半段包含2018年的貿易戰和2020年的疫情崩跌,那兩次股市下跌時,美債大致持平或上漲;後半段從2022年的升息開始,股債同時下跌。
表中挑出債券有抵銷與沒抵銷股票跌幅的代表年份,完整逐年數字在下方下載的測試結果裡。
| 年份 | 0050 |
00679B |
六四配置 | 股債輪動 |
|---|---|---|---|---|
| 2018 | -4.94% | 0.69% | -2.09% | -14.74% |
| 2020 | 31.14% | 8.11% | 25.77% | 34.98% |
| 2021 | 21.92% | -6.42% | 10.49% | -7.92% |
| 2022 | -21.37% | -22.08% | -21.40% | -27.95% |
| 2024 | 48.64% | -2.94% | 26.57% | 11.05% |
股票和債券的相關並非固定。Campbell、Sunderam與Viceira(2017)研究美國股債相關的長期變化:通膨與利率主導市場時,股債容易同漲同跌;擔心衰退與通縮時,公債才比較像避險資產。2022年正是前者。拿掉六四配置報酬最好的2026年,日夏普0.99仍低於0050的1.03,結論沒有因此翻轉。
股債輪動為何更差
股債輪動9組日夏普在0.32到0.79之間,全部明顯落後0050的1.15,最大回撤-28.25%到-54.68%,多數比0050還深。原參數60日均線、每日檢查的期間內,0050有27.7%的交易日在均線下,訊號切換129次,平均一年約13次,每次都是全數換倉。
三個原因疊在一起。第一,均線訊號會落後,0050跌破均線時往往已經跌了一段,回到均線上時又已經漲了一段,2021年輪動版本-7.92%,0050是+21.92%,就是反覆進出的代價。第二,換進去的美債在2022年也在跌,那年輪動版本-27.95%,比0050更差。第三,交易成本:照sim()預設的0.3%證交稅與手續費,一年換倉約13次,成本把年化從不計成本的15.32%壓到6.76%;證交稅改成0.1%(0050的實際稅率;債券ETF實際停徵,這裡仍計0.1%),年化9.61%、日夏普0.61,仍然遠落後。
即使把成本全部歸零,原參數日夏普也只有0.90,仍低於0050。換成平均比重固定持有,也就是0050占72.3%、00679B占27.7%、每月調回,日夏普1.14,回撤-30.70%,比輪動好很多。分段來看,輪動前半段日夏普0.52對0050的1.14,後半段0.42對1.19;拿掉它報酬最好的2020年,只剩0.32對1.13。這說明輪動版本的落後來自擇時本身,和平均持有多少債券無關。Faber(2007)的均線資產配置用月線、多種資產,和這裡的單一股票ETF日線切換不同,不能拿來替本次結果背書。
台幣計價與美元計價:0050大跌那幾週
這一節只做描述,不列入過關條件。我們取2017-01-27到2026-11-06共511週,把0050週報酬最差的5%(26週)挑出來,看同一週的00679B和美國掛牌、以美元計價的長天期美債ETF TLT表現。
| 指標 | 0050 | 00679B |
TLT |
|---|---|---|---|
| 最差26週平均週報酬 | -5.68% | -0.22% | -0.69% |
| 最差26 |
— | 54% | 46% |
| 511週與0050 |
— | -0.05 | 0.07 |
在0050大跌的週,台幣計價的00679B平均只跌0.22%,比TLT的0.69%少,上漲的比例也較高。一個可能的解釋是台股大跌時外資匯出、美元兌台幣走強,匯率替台灣投資人抵銷了一部分債價下跌,但本研究沒有用匯率資料拆開驗證。這個差距不大,26週裡上漲的週數是14對12,兩者的交易時間也差了半天,00679B還有費用、追蹤誤差與折溢價。即使有這層差異,九年下來的股債配置仍然沒有贏0050。
回測方法與限制
資料截至2026-11-11,實跑日2026-11-12,FinLab 2.3.8,價格來源是etl:adj_close還原收盤價。所有設計的參數格、起始日與勝出條件都在看任何績效以前寫在研究紀錄裡,之後沒有更改。
- 交易成本:
sim()預設手續費買賣各0.1425%、賣出證交稅0.3%,沒有打折。台灣股票型ETF的證交稅實際是0.1%,債券ETF目前停徵,所以這是偏保守的成本。成本敏感度:六四配置不計成本日夏普1.117、稅改0.1%是1.113,結論不變。 - 滑價與容量: 沒有另設滑價,沒有估計容量。0050與兩檔美債ETF成交量大,但大額委託仍可能遇到買賣價差與折溢價。
- 周轉率: 六四配置每年單邊約調整11.3%的資產,全期78筆交易;股債輪動一年約13次全數換倉。
- 權重與現金: 兩個設計都沒有閒置現金、沒有借款或槓桿;股債輪動同一時間只持有一檔ETF。
- 股票池與前視: 只用三檔ETF,沒有選股,不涉及下市或生存者偏誤。訊號只用當天收盤已知的價格,隔日收盤成交,沒有前視偏差。
- 樣本內外: 全段都是樣本內。前後半段只是穩定度檢查,題目本身是在知道2022年股債齊跌之後才選的,不能當成樣本外證據。Bailey等人(2017)說明多次回測後挑選結果的風險,本研究沒有估計該文的過擬合機率。
用AI重跑股債配置
透過上方的FinLab設定入口,讓Claude Code、Codex或Gemini CLI載入FinLab skill,再把下載的研究程式交給它:「用這份research.py重跑①和②的27組參數,保留2026-11-11截止日與預設成本。」若AI另外寫一套規則,就算名稱一樣,算出的也不是本篇的結果。
下面是原參數六四配置的核心寫法,完整的參數格、分段與對照都在研究程式裡。
顯示程式碼
import pandas as pd
from finlab import data
from finlab.backtest import sim
# 還原收盤價,先補齊停牌日再計算
prices = data.get("etl:adj_close")[["0050", "00679B"]].ffill()
days = prices.loc["2017-04-13":"2026-11-11"].index
# 0050 六成、00679B 四成
position = pd.DataFrame({"0050": 0.6, "00679B": 0.4}, index=days)
# 第一天建倉,之後每季最後一個交易日調回比例
quarter_ends = days.to_series().groupby(days.to_period("Q")).last()
rebalance = pd.DatetimeIndex(sorted({days[0], *quarter_ends}))
report = sim(position, resample=rebalance, upload=False)resample傳入日期清單,是為了讓每一組都從同一天建倉;只寫resample="Q"的話,第一次建倉會等到第一個季末。回測口徑的細節可看回測方法,日夏普的計算見夏普比率。
股債配置常見問題
00679B和00687B選哪一檔? 在本研究的18組裡,同樣比例與頻率下兩者日夏普差距不到0.01。實際選擇時,費用率、規模、成交量與折溢價比較重要,這些日線回測沒有涵蓋。
股債平衡一定比全押0050安全嗎? 六四配置的最大回撤-29.41%,比0050的-33.96%淺,年化波動也低很多。但2022年它和0050一樣跌了兩成,股債同時下跌時分散效果會消失。
再平衡要多久做一次? 本次每季調整略好於每月與每年,差距約0.02到0.05的日夏普,小於股票比重造成的差異。先決定股票占多少,比調整頻率重要。
跌破均線換美債,可以避開大跌嗎? 本次9組都沒有。2021年反覆進出,2022年換進去的美債也在跌,60日均線版本的最大回撤-46.94%比0050還深。
台幣計價的美債ETF有匯率風險嗎? 有。報酬包含美元兌台幣的變化。2017年以來在0050最差的週,台幣計價的00679B平均跌得比美元計價的TLT少,差距可能有一部分來自匯率,但本研究沒有把匯率的貢獻拆出來;美元未來的升貶方向也不一定相同。
為什麼用日夏普而不是年化報酬判斷? 股債配置的目的是降低波動。只比年化報酬,任何加債券的組合都會輸0050;日夏普把波動算進去,才能檢查降低的風險是否值得少賺的報酬。
這個結果可以推論到美國的股債配置嗎? 不行。美國投資人用美元計價,沒有匯率這一層,股票也換成美股。美元計價的版本可看資產配置回測。
同一批研究還測了00720B投資等級公司債搭0050、黃金ETF 00635U搭0050與00632R反1避險。更早的研究有0050正2搭00679B、台股ETF投資組合最佳化,以及用美股ETF做的風險平價組合。量化研究的整體方法可從量化交易指南開始,AI代理使用說明介紹如何讓AI重跑研究。
研究下載
| 檔案 | 內容 |
|---|---|
| 下載 |
四篇共用,設定FinLab後交給AI代理重跑 |
| 下載 |
原參數、 |
| 下載 |
27組參數、 |
| 開啟 |
瀏覽器 |
投資有風險,過去績效不代表未來表現。本內容僅供教學與研究,不構成投資建議,請依個人風險承受度審慎評估。本文沒有推薦買賣特定ETF,也不保證歷史上的股債關係會延續。
最後更新:2026-11|回測區間:2017-01-17至2026-11-11|作者:FinLab量化研究團隊(經量化研究員審閱)。團隊以FinLab資料維護台股、美股的可重跑研究。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始







