DEV Community

Arne Li
Arne Li

Posted on

[Python/Fin]打造股票質押計算器(2):利用數學公式驗證槓桿策略

引言

在上一篇Dev.to 連結我有介紹股票質押策略與計算器使用,並利用 Python 打造了計算器來模擬資產變化。

根據 Python 的模擬數據,我們得出了幾個核心觀察:

  1. 維持率的雙面刃:維持率降至 200%~300% 時,資產增幅顯著,但可承受跌幅僅剩 35%~56.7%,極易觸發斷頭。
  2. 槓桿的 Alpha:在維持率 500% 的溫和槓桿下,淨資產報酬仍可超越「單純買進持有」策略約 17%。
  3. 提領率的敏感度:壓低「絕對提領率」比尋找極低借款利率更重要。

這次我想單純利用數學公式來推導這套策略,驗證上述模擬結果在理論上是否絕對成立。

基本定義與變數假設

為進行推導,首先定義公式中的各項變數與核心關係式

變數 定義 變數 定義
A 總資產 L 總借款
N 淨資產 (A - L) m 維持率 (A / L)
r 預期年化報酬率 i 借款年利率
T 經過年數 λ\lambda 槓桿倍數 ( A / N)
W 每年固定提領金額 w 提領率

基礎核心關係式:

根據台灣券商的維持率定義 m=AL=N+LLm = \frac{A}{L} = \frac{N+L}{L} ,我們可以推導出負債與淨值的關係:

L=Nm1 L = \frac{N}{m-1}

而槓桿倍數 λ\lambda 定義為總資產與淨資產的比值 λ=AN=N+LN\lambda = \frac{A}{N} = \frac{N+L}{N} ,由此可知:

L=N(λ1) L = N(\lambda-1)

A=Nλ A = N \cdot \lambda


累積模式:恆定槓桿的數學驗證

在資產累積期,策略核心是保持槓桿倍數 λ\lambda 恆定。

單一年度的資產變化:

期末總資產: At1=At0(1+r)A_{t_1}=A_{t_0}(1+r)
期末總負債: Lt1=Lt0(1+i)L_{t_1}=L_{t_0}(1+i)
期末淨值: Nt1=At1Lt1N_{t_1}=A_{t_1}-L_{t_1}

將前述的基礎關係式代入展開:

Nt1=At0(1+r)Lt0(1+i)N_{t_1}=A_{t_0}(1+r)-L_{t_0}(1+i)

Nt1=Nt0λ(1+r)Nt0(λ1)(1+i)N_{t_1}=N_{t_0}\cdot\lambda(1+r)-N_{t_0}(\lambda-1)(1+i)

得到恆定槓桿的單年成長公式

Nt1=Nt0[λ(ri)+(1+i)]N_{t_1}=N_{t_0}\cdot[\lambda(r-i)+(1+i)]

槓桿成長因子 G=λ(ri)+(1+i)G = \lambda(r-i) + (1+i) ,則經過T年後的淨資產為:

NT=N0GTN_T =N_0\cdot G^T

💡 槓桿 vs 非槓桿的絕對勝負條件:

  • 非槓桿策略 (單純持有): NT(n)=N0(1+r)TN_{T(n)} = N_0(1+r)^T
  • 槓桿恆定策略: NT(l)=N0[λ(ri)+(1+i)]TN_{T(l)} = N_0 \cdot [\lambda(r-i) + (1+i)]^T

假設 mm1(ri)+(1+i)>(1+r)mm1(ri)>ri\frac{m}{m-1}(r-i)+(1+i)>(1+r)\Rightarrow\frac{m}{m-1}(r-i)>r-i

只要 r>ir>i 槓桿 GG 必大於 (1+r)(1+r)

槓桿 vs 非槓桿


提領模式:借貸提領 vs 傳統賣股提領

進入退休提領期,我們不再執行再投資,而是每年固定取出金額 W=N0wW = N_0 \cdot w 作為生活費。我們比較兩種常見做法:

  1. 傳統 4% 法則 (對照組):賣出資產以獲取現金 W。

每年賣出 W,這筆錢將無法享受後續的複利成長(即機會成本)。其實質淨資產為初始資產的複利,扣除每年提領金所構成的等比級數總和:

AT(n)=A0(1+r)T[W(1+r)T+W(1+r)T1++W(1+r)]A_{T(n)}=A_0(1+r)^T - [W(1+r)^T +W(1+r)^{T-1} +…+W(1+r) ]

NT(n)=A0(1+r)TW(1+r)[(1+r)T1]rN_{T(n)}= A_0(1+r)^T - W\cdot\frac{(1+r)[(1+r)^T-1]}{r}

  1. 質押借貸策略 (實驗組):不賣資產,每年初向券商借入現金 W。

總資產完整保留享受複利 r,但債務 L 每年增加 W,並以利率 i 產生利息,形成另一個等比級數:

Lt=W(1+i)t+W(1+i)t1+...+W(1+i)=W(1+i)[(1+i)t1]iL_t =W(1+i)^t+W(1+i)^{t-1}+...+W(1+i)=W\cdot\frac{(1+i)[(1+i)^t-1]}{i}

NT(l)=At0(1+r)TW(1+i)[(1+i)T1]iN_{T(l)} = A_{t_0}(1+r)^T - W \cdot \frac{(1+i)[(1+i)^T-1]}{i}

註:此公式假設進入提領期時無既有債務。若累積期有遺留債務 L0L_0 ,只需扣除 L0(1+i)T\small L_0(1+i)^T 即可

💡 兩者差異比較 ( ΔNT\Delta N_T ):

我們假設起始狀態相同 ( At0=A0A_{t_0} = A_0 ),將兩者相減:

ΔNT=NT(l)NT(n)\Delta N_T = N_{T(l)} - N_{T(n)}

ΔNT=W[(1+r)[(1+r)T1]r(1+i)[(1+i)T1]i]\Delta N_T = W \cdot \left[ \frac{(1+r)[(1+r)^T-1]}{r} - \frac{(1+i)[(1+i)^T-1]}{i} \right]

中括號內的結構完全相同,唯一的變數是 rr ii
在數學上,函數 f(x)=(1+x)[(1+x)T1]xf(x) = \frac{(1+x)[(1+x)^T-1]}{x} x>0x > 0 時為嚴格遞增函數 (Monotonically Increasing Function)。

因此得證:只要市場報酬率 r>r > 借款利率 ii ,則 f(r)>f(i)f(r) > f(i) ΔNT\Delta N_T 必定大於 0。
這證明了在不考慮崩盤斷頭的前提下,「借錢生活」在數學上絕對比「賣股生活」留下更多淨資產

提領期資產變化


結論:純數學的盲點與 Python 模擬的價值

透過公式推導,我們在數學上確認了「借新還舊」策略的絕對可行性(條件: r>ir > i )。但數學公式存在一個致命盲點:它假設 rr ii 每年都是固定的常數。

在現實金融市場中,報酬率 rr 是呈現常態分佈波動的,這會帶來報酬順序風險 (Sequence of Returns Risk, SORR)。如果提領期的前三年遇到連續大跌( rr 為負數),即使長期平均 rr 依然大於 ii ,公式無法告訴你:你的資產會不會在第三年就因為跌破「維持率下限」而被強制斷頭清算。

數學給了我們策略的「理論上限」,而透過 Python 建構的程式模擬,能幫助我們劃定現實中的「生存下限」。兩者結合,才是資料分析完整的樣貌。

GitHub

Top comments (0)