跳至主要內容
台股研究 約 6 分鐘閱讀

凱利公式0050回測:半凱利回撤57%

凱利公式能決定0050與正2的配置嗎?本文用過去報酬與變異數估計曝險,每月調整,測試全凱利、半凱利、四分之一凱利與三種觀察期間,共九組。沒有一組日夏普贏同期含息0050,半凱利最大回撤接近百分之五十七;另比同平均槓桿固定持有,說明公式假設、估計誤差與每日槓桿風險,附數據與程式。

半凱利回撤57%

查看回測結果・下載研究資料

凱利公式0050與正2回測:半凱利、同平均曝險固定組合與0050含息淨值比較

依本文重跑

重現這份研究

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

幫我設定 FinLab,重現0050與正2凱利配置研究

凱利公式能讓 0050 的槓桿配置更好嗎?這次用歷史報酬估計的版本沒有成立:全凱利、半凱利、四分之一凱利搭配三種回看期,共 9 組都未贏過同期 0050 含息日夏普。半凱利原設定年化 15.90%、日夏普 0.66、最大回撤 -56.74%;0050 是 19.68%、1.01、-33.96%。本文以反面教材為主,拆開數學公式與實際估計的差距。

原設定的平均名目曝險約 1.32 倍,風險比一般滿倉高。每天固定同樣平均曝險的 0050 加正2組合,年化 24.08%、日夏普 0.97;即使把槓桿程度配對,動態凱利仍落後。這次結果指向報酬估計與調整時點,不能把「有公式」當成配置一定較佳的理由。

凱利公式的兩種常見寫法

二元賭局的凱利比例為 f = p - (1-p)/b,其中 p 是勝率,b 是每押一元、獲勝時的淨賠率。它假設輸贏與賠率的模型足以描述下一次下注。Kelly(1956)討論長期資產對數成長;這個目標和降低短期回撤不同。

股票日報酬有連續大小與尾端風險,不能只拿上漲天數當勝率。本研究使用連續報酬的近似:目標倍數等於預估日超額報酬平均除以日報酬變異數,再乘凱利折數 k。分子與分母都用日頻,所以不再額外乘 252。這是估計版規則,沒有宣稱是實際 ETF 報酬分布下的精確最適解。

手機閱讀表格時,可左右滑動查看全部欄位。

寫法 需要的資料 常見誤用
二元賭局凱利 勝率、贏與輸的賠率 用歷史上漲天數代替未來勝率
連續報酬近似 超額平均報酬、變異數 把年報酬除以日變異數,單位不一致
折數凱利 完整凱利再乘 k 以為半凱利永遠只有半倉
本文有限制版本 歷史估計、k、0至2倍上限 把上限內結果當成原理保證

Merton(1970)的連續時間配置研究有其模型假設;它支持討論風險、報酬與配置的關係,沒有保證用最近一年平均報酬代入就能預測下一個月。理解這個差別,可搭配量化交易指南。

0050 與 0050 正2怎麼組成 0 至 2 倍

回測只使用真實可交易 ETF:0050 與 00631L。當目標倍數 a 小於等於 1,持有 a 比例的 0050,剩下放零息現金。當 a 大於 1,0050 比例是 2-a,00631L 比例是 a-1,兩個資產的資金權重相加仍是 1,沒有另向券商借款。

目標倍數 0050 比例 00631L 比例 現金
0.5 倍,配置示例 50% 0% 50%
1 倍,配置示例 100% 0% 0%
1.5 倍,配置示例 50% 50% 0%
2 倍,配置示例 0% 100% 0%

這些是權重示例,並非績效。00631L 追求單日正向兩倍,元大投信產品說明提醒槓桿風險與持有條件。持有多天的結果會受每日重設、追蹤誤差、費用和漲跌路徑影響,所以本研究使用 00631L 的含息還原價格,沒有把 0050 每日報酬簡單乘二取代。

9 組參數與月末換倉

凱利折數是 1、0.5、0.25,回看期是 126、252、504 個交易日。原設定選半凱利、252 日,九組全部在看績效前寫定。超額報酬以固定年息 1% 換成日利率後扣除,這只是訊號假設;未投資現金仍不計利息。

月底收盤估計過去 L 日的平均與樣本變異數,次一交易日收盤才按新權重換倉。月中維持原持有數量,權重可以隨 ETF 價格漂移,不會每天用新訊號調整。最高名目曝險目標限制在兩倍,負估計則截為零。

凱利公式9組參數熱圖:全、半、四分之一凱利搭配126、252、504日,日夏普均未贏0050

九組日夏普約 0.46 至 0.72,全部低於 0050 的 1.01。原參數的風險調整報酬落在這個區域中間;沒有因為全凱利某一組比較好,就改用那組充當原設定。與固定價格區間買賣的網格交易相比,凱利是依估計報酬與風險改變槓桿,持有機制不同。

估計值被截到兩倍時,完整凱利與半凱利可能產生完全相同的部位;因此折數不同不一定代表每一天風險都不同。反過來,估計平均報酬接近零時,小幅誤差就可能讓曝險在現金與持股之間切換,這是短窗口估計需要承擔的另一種不穩定。

半凱利為何仍會接近兩倍曝險

半凱利是把公式的估計值乘二分之一,並非固定投入一半資產。如果完整凱利估計超過四倍,乘半後仍會碰到兩倍上限。近期報酬高、估計變異數低時,分子除分母可以迅速變大;當市場轉折,落後的估計可能來不及降低部位。

半凱利配置0050與正2的名目曝險與0050含息淨值:部位會在零到兩倍間切換

藍線是報酬發生前的名目曝險,將正2資金權重乘二後加上 0050。它是名目近似,兩檔 ETF 月中相對漲跌也會讓曝險漂移;灰線用右軸呈現 0050 含息淨值。這張圖要回答的是什麼時候承擔風險,不能從全段平均 1.32 倍推定每個月都相同。

指標 半凱利、252日 同平均 1.32 倍固定組合 0050 含息
年化報酬 15.90% 24.08% 19.68%
日夏普 0.66 0.97 1.01
最大回撤 -56.74% -40.05% -33.96%
年化波動 28.67% 25.55% 19.74%

固定對照是約 67.77% 0050 加 32.23% 00631L,每日調回比例。平均曝險是事後才知道的數字,所以它是風險配對診斷,不是可以事前照抄的最佳組合。這個對照同樣使用預設成本,沒有為了讓它好看把換倉費用刪掉。

三項驗證都沒有過

「贏」預先定義為日夏普高於同期含息 0050,不扣無風險利率。至少 7 組鄰近參數必須勝出;原參數前後半段也必須各自勝出,並且計入 sim() 預設成本。結果如下。

檢查 半凱利日夏普 0050 日夏普 結果
鄰近參數 0/9 組勝出 1.01 未通過
前半,2014-10 至 2020-10 0.32 0.80 未通過
後半,2020-10 至 2026-11 0.94 1.18 未通過
全段,含預設成本 0.66 1.01 未通過
拿掉最好曆年 2021 0.56 0.99 未通過

後半段半凱利年化 28.01%,略高於 0050 的 27.58%,但日夏普仍較低。年化較高只能支持那段有較高報酬,不能替全段風險調整後的失敗翻案。如何解讀這些指標,見夏普比率與最大回撤定義。

凱利公式分段驗證:全段、前後半段與移除2021年,半凱利日夏普均落後0050

回測方法與未涵蓋的風險

00631L 可得資料從 2014-10-31 起,並非從 0050 最早資料日開始。0050 的估計窗口可使用上市前已存在的歷史;九組均以兩檔共同可交易期間 2014-10-31 至 2026-11-06 比較。資料表是 etl:adj_close,實跑日 2026-11-10,FinLab 2.3.8。

策略與固定對照皆使用通用台股預設每邊手續費 0.1425%、賣出稅 0.3%;這個稅率比 ETF 實際稅率保守。ETF 內部費用和追蹤表現已在價格中,不再重複加一次。沒有另外建模買賣價差、滑價、最低手續費、零股限制或容量,沒有借券、融資追繳或個股流動性篩選。

原參數平均每月目標權重變動合計 21.8%,最高月 197.0%,屬於雙邊權重調整量,沒有把價格漂移本身當成交。基準用含息價直接連乘,不經 sim()、不扣交易成本。前後對半僅作穩定度檢查,整段仍是樣本內,沒有獨立樣本外或實盤驗證。研究方法可參考回測指南與程式交易流程。

重跑凱利公式與 ETF 配置

可將完整研究檔交給 AI,要求保留 1% 訊號利率、三種回看期、三種折數和兩倍上限,再重算成本與前後兩半。下面節錄的是日估計與 ETF 權重;完整檔會把訊號取在月末,下一交易日才執行,不能把日訊號直接當成每天都交易。

顯示程式碼
from finlab import data
 
prices = data.get("etl:adj_close")[["0050", "00631L"]]
returns = prices["0050"].pct_change()
daily_rate = 1.01 ** (1 / 252) - 1
mean_excess = returns.rolling(252).mean() - daily_rate
variance = returns.rolling(252).var()
leverage = (0.5 * mean_excess / variance).clip(0, 2)
weight_2x = (leverage - 1).clip(lower=0)
weight_0050 = leverage.clip(upper=1) - weight_2x

下載研究資料:

報告內建市場基準可能不同於本文另算的 0050;表格依下載數據比較。名詞可查量化詞彙。

凱利公式常見問題

凱利公式能保證不破產嗎?

不能。實際報酬分布與估計可能錯誤,還有極端跳空與交易限制。本文有限制到兩倍,但仍出現 -56.74% 回撤。

半凱利就是半倉嗎?

不是。它是完整估計倍數的一半,估計值夠大時,半凱利仍會碰到兩倍的上限。

為什麼不只用勝率計算?

股票每次賺賠金額不同。只知道上漲天數比例,無法描述下跌尾端的損失大小,也不符合固定二元賠率的假設。

正2能用0050報酬乘二代替嗎?

不能用來代表長期真實績效。每日槓桿會重設,價格還包含追蹤誤差與成本,本研究直接使用 00631L。

觀察期拉長就能改善嗎?

本次測了 126、252、504 日,九組全部未贏同期基準。更長窗口同時會降低估計波動與增加反應落後,不能只看其中一面。

半凱利失敗代表理論錯了嗎?

它表示這個歷史估計與 ETF 執行方式沒有通過驗證。理論目標、模型假設與估計實作要分開,不能從單一失敗否定全部配置理論。

投資有風險,過去績效不代表未來表現。本內容僅供教學參考,不構成投資建議,槓桿商品可能放大虧損,請依個人風險承受度審慎評估。

最後更新:2026-11|回測區間:2014-10-31 至 2026-11-06|作者:FinLab 量化研究團隊。團隊以 FinLab 資料與 Python 研究台股及美股策略,保留研究設定與重現程式。

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多風險與資產配置研究

查看全部