槓桿動態調控策略的量化分析

在投資市場中,槓桿是一種常見的放大收益工具。然而,槓桿同時也會放大風險,如何在獲取高收益的同時有效控制風險是投資者面臨的主要挑戰之一。本研究旨在探討一種動態調控槓桿策略,該策略基於最大下跌 (Maximum Drawdown, MDD) 的控制來動態調整投資部位,從而在控制風險的同時獲取可觀的收益。

相關概念

最大下跌

最大下跌是衡量投資組合在特定期間內從峰值到谷底的最大資產價值跌幅。具體定義為:

MDD(k) = \frac{V_{\text{max}}(k) - V(k)}{V_{\text{max}}(k)}

其中,V(k) 是時間 k 的資產價值,V_{\text{max}}(k) 是時間 k 之前的最大資產價值。MDD 是一個重要的風險衡量指標,因為它直接反映了投資者可能面臨的最大損失。

動機

在牛市中,投資者希望利用槓桿放大收益,但在熊市中又希望能有效控制風險。傳統的槓桿策略往往在市場下跌時面臨巨大風險,而不使用槓桿則可能錯失市場上漲帶來的收益。因此,本文提出基於 MDD 的動態調控槓桿策略,旨在實現高收益與低風險之間的平衡。

方法

本文採用宗翰教授提出的「下跌調控反饋控制」策略,其公式如下:

M(k) = \gamma \frac{d_{\text{max}} - d(k)}{1 - d(k)}

其中,M(k) 是調整部位的係數,隨時間 k 變化。d(k) 是時間 k 的最大下跌比例,d_{\text{max}} 是使用者設定的最大可容許下跌,\gamma 是類似於槓桿倍數的調整參數。

具體操作步驟如下:

  • 設定初始投資金額及最大可容許下跌比例 d_{\text{max}}
  • 根據市場走勢計算每個時刻的最大下跌 d(k)
  • 根據公式動態調整槓桿比例 M(k),以控制風險。

數字範例

讓我們透過一些數字範例來更詳細說明:

假設我們設定的最大可容許下跌比例 d_{\text{max}} 為 0.2(即 20%),初始投資金額為 100,000 元,並選擇 \gamma 為 2。

初始狀態 k=0

  • 投資金額:100,000 元
  • 最大下跌 d(0):0
  • 調整係數 M(0)M(0) = 2 \times \frac{0.2 - 0}{1 - 0} = 0.4

第 1 天 k=1

  • 假設市場價格下跌 5%,投資金額變為 95,000 元
  • 當前最大下跌 d(1):0.05(即 5%)
  • 調整係數 M(1)M(1) = 2 \times \frac{0.2 - 0.05}{1 - 0.05} = 0.3158

第 2 天 k=2

  • 假設市場價格再下跌 10%,投資金額變為 85,500 元
  • 當前最大下跌 d(2):0.145(即 14.5%)
  • 調整係數 M(2)M(2) = 2 \times \frac{0.2 - 0.145}{1 - 0.145} = 0.1286

從這些範例中可以看出,隨著市場下跌,調整係數 M(k) 會逐漸減小,從而減少投資部位,達到風險控制的效果。相反,當市場上升時,調整係數會增大,從而增加投資部位,實現槓桿效應。

實驗

本實驗通過隨機漫步 (random walk) 模擬報酬曲線,並對其最大風險和終端報酬率進行分析。共進行1000次模擬,並將結果分別用淺灰色、紅色和藍色表示不同的策略:

  • 淺灰色:不使用槓桿的買入並持有 (buy-and-hold) 策略。
  • 紅色:單純使用兩倍槓桿的策略。
  • 藍色:使用上述公式進行動態調節部位的兩倍槓桿策略。

以下是詳細的程式碼和註解:

# 匯入所需的函式庫
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 設定圖表尺寸
plt.rcParams['figure.figsize'] = (16, 6)
# 計算移動平均最大下跌
def mm(s):
    return ((s.cummax() - s) / s.cummax()).shift().rolling(10).mean()
# 初始化數據儲存的列表
means = []
means2 = []
mdds = []
mdds2 = []
means3 = []
mdds3 = []
# 進行3000次模擬
for i in range(3000):
    # 生成隨機漫步序列,模擬股票價格
    s = pd.Series(np.random.randn(250)+0.01, index=pd.date_range('1/1/2000', periods=250)).div(100).add(1).cumprod()
    
    # 計算最大下跌
    mdd = ((s.cummax() - s) / s.cummax()).max()
    # 計算動態槓桿比例
    gamma = 1.7 / (mdd + 0.1)
    size = (gamma * ((mdd + 0.1 - mm(s)) / (1 - mm(s))))
    
    # 計算動態槓桿策略的回報
    r = (s.pct_change() * size + 1).cumprod()
    rmdd = ((r.cummax() - r) / r.cummax()).max()
    # 儲存結果
    means.append(s[-1])
    means2.append(r[-1])
output
最大下跌分佈(左)與終端報酬率(右)

結果分析

  1. 藍色線條的最大風險控制效果顯著:藍色線條在左側的最大下跌分佈顯示,動態調節槓桿的策略有效降低了風險,最大下跌值相比紅色和淺灰色顯著減少。
  2. 正終端報酬率時的表現:在終端報酬率為正的情況下,藍色和紅色線條的分佈相似,這表示動態調節槓桿策略在收益表現上與單純兩倍槓桿策略相當。
  3. 避免大額虧損:當終端報酬率接近0時,藍色線條顯示出更多的小額虧損,但總體而言,藍色線條有效避免了許多大額虧損,這顯示動態調節槓桿策略在風險管理上有明顯優勢。 本研究提出的基於最大下跌調控的動態槓桿策略能夠在控制風險的同時實現與傳統槓桿策略相近的收益表現。通過動態調整投資部位,我們可以有效減少市場下跌時的風險,並在市場上漲時獲取可觀收益。這一策略為投資者提供了一種在牛市中放大收益、熊市中控制風險的有效工具。

結論

參考文獻: Hsieh, Chung-Han. “Generalization of affine feedback stock trading results to include stop-loss orders.” Automatica 136 (2022): 110051.

FinLab - 韓承佑

嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會 學術顧問、台北商業大學 創新育成中心 創業技術顧問與上市科技公司 量化交易顧問。當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。我們成立 FinLab 量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。希望可以在量化投資的路上,當大家的「武器製造商」!