凱利槓桿

蛛網就是投資槓桿小於1的交易策略。
只要投資槓桿$f < 1$就會跌買漲賣$\Longleftrightarrow$只要跌買漲賣就是$f < 1$。
我們從下面的程式模擬開始,來看看在不同的投資槓桿之下,報酬率會如何變化。

程式模擬(程式碼可修改)

JavaScript 程式碼
輸出結果

這是上一節固定$f=0.5$的執行結果,現在把kelly_f改成1再執行一次,看到除了第一期買進10,000單位之後,不管價格怎麼漲跌都不會有買賣的動作,bs=0,資金最後也回到原本位置。
再把kelly_f改成1.5,執行結果最後資金是874,365,表示虧錢了,總報酬率是-12.56%。看看bs這一欄在做什麼?漲的時候買,跌的時候賣,這就是槓桿大於1時會做的事$\to$追高殺低。

那最好的槓桿應設定為多少呢?先講結果再來證明:如果股價回到原本位置,複合報酬率$r_c$為0,那最佳槓桿就是$0.5$。如果$r_c>0$,意即最終股價是上揚的,則最佳槓桿位置大於$0.5$,如果趨勢向下$r_c < 0$,最佳槓桿就會小於$0.5$。

把下面的程式碼貼到Javascript程式碼。

const prices = [100, 120, 140, 150, 130, 100, 90, 70, 60, 75, 85, 100];  //價格假設
print(pR("f", 6) + pR("cap", 10) + pR("minCap",10) + pR("maxCap", 10));
for (let f=0.1;f < 3;f+=0.2) {      //f為投資槓桿,從0.1~2.9,間隔0.2
    let cap = 1_000_000; //初始資金
    let minCap = cap;   //期間發生最小資金
    let maxCap = cap;   //期間發生最大資金
    let vol = parseInt(cap*f/prices[0]);    //初始庫存量取整數
    for (let i=1;i < prices.length; i++) {
        cap = cap + vol * (prices[i]-prices[i-1]);    //原始資金+庫存x價差
        if (cap < minCap) minCap = cap;     //檢查並重設最小資金
        if (cap > maxCap) maxCap = cap;     //檢查並重設最大資金
        vol = parseInt(cap * f / prices[i]);    //新資金*槓桿/新價格
    }
    print(pR(f.toFixed(1), 6) + pR(cap, 10) + pR(minCap,10) + pR(maxCap, 10));
}
按下「執行程式」看到輸出結果,槓桿從$0.1\to 2.9$,間隔$0.2$,除了最後的結果資金,還輸出了過程期間曾出現過的最小資金和最大資金。

cap這一欄裡的最大值,就出現在$f=0.5$的位置,資金是1,043,450。
如果設定的槓桿比0.5還小,最後的報酬率也比較小,但是minCap最小資金比較大,表示回檔的幅度不深,更安全,甚至可以算算單位風險的報酬其實更高。例如在$f=0.1$時賺了15,330,最低虧了39,400,用這個定義算出的單位風險報酬是$15330\div 39400=39\%$,在最佳槓桿$f=0.5$時的單位風險報酬是$43450\div 200940=22\%$。

隨著槓桿提高,邊際風險的報酬遞減。

如果$f>0.5$,不但minCap更低,風險更高,而且cap最後資金也更低,表示增加的曝險根本沒有意義,甚至到$f>1$時,總報酬率還變負的,而且是懸崖式的下降。

總結:低槓桿永遠是對的。


把下面兩組價格假設依次取代掉剛才的價格假設:

  1. const prices = [100, 140, 180, 200, 160, 100, 80, 40, 20, 50, 80, 100];
  2. const prices = [100, 110, 120, 125, 115, 100, 96, 85, 80, 87, 93, 100];
比較一下:兩者的cap最大值都出現在$f=0.5$的地方,你可以自己動手玩玩看,去更改第一行價格prices的假設,只要最後頭和尾的數字一樣,最佳槓桿都是0.5。
第二個要注意的地方是最佳槓桿$f=0.5$之下的報酬率,前者有$37.16\%$,比原本價格假設之下的$4.35\%$高得多,後者卻只有$1.03\%$,更低了。
這是因為第1個價格假設的震盪很劇烈,第2個價格假設的波動很平緩,回想講對數常態分佈的時候: $$ \mathbb{E}(1+r) = e^{r_c+\sigma^2/2} $$ 這裡因為價格回到原本位置,所以$r_c=0$,如果震盪劇烈,$\sigma$就大,如果波動平緩,$\sigma$就小,直接就會反映到期望報酬率之上。


接下來分三段來得到$r_c=0\quad\Longrightarrow\quad$最佳槓桿是$0.5$:
凱利和資訊理論的開山祖─夏農,是AT&T貝爾實驗室的同事,兩個人就坐隔壁桌。當時AT&T有一項主要的資訊傳輸業務是美國東岸的運動賽事開打後,西岸因為時差還可以下注,所以有可能先知道前幾局的結果,對於勝率的預估更有優勢,凱利公式就是用來推估在已知資訊的前提下,應如何下注能最大化長期總報酬率。

二元賭局

考慮一個重複進行的賭局:

若固定押注比例是$f$,那麼贏的時候賺$fb$,本利和為$1+fb$,輸的時候$f$就不見了,本利和是$1-f$,經過$n$期以後,如果$n$夠大,按照大數法則預估有$np$次是贏的,$nq$次是輸的,總本利和是: \[ 1+R=(1+fb)^{np}(1-f)^{nq} \] 開$n$次根號以後得到複合本利和: $$ 1+r_c=\sqrt[n]{1+R}=(1+fb)^p(1-f)^q $$ 因為$\log$是單調遞增函數,所以極大化$1+r_c$就等價於極大化$\log(1+r_c)$ $$ 令\quad g(f)=\log(1+r_c)=p\log(1+bf)+q\log(1-f) $$ 求極值就令其一階導數為$0$: $$ g'(f)=\frac{pb}{1+bf}-\frac{q}{1-f} = 0 $$ \[ \Longrightarrow\frac{pb}{1+bf}=\frac{q}{1-f}. \]

交叉相乘:

\[ pb(1-f)=q(1+bf). \]

展開:

\[ pb-pbf=q+qbf. \]

整理 \(f\) 項:

\[ pb-q=f(pb+qb). \]

因為 \(p+q=1\),所以 \(pb+qb=b(p+q)=b\),得到:

\[ pb-q=bf. \]

因此 Kelly 最佳比例為:

\[ \boxed{f=\frac{pb-q}{b}} \] \(\ast\quad pb - q\)就是單次期望報酬率$\mathbb{E}(r)$,如果$\mathbb{E}(r)\le 0$,則 \(f \le 0\),表示不值得下注。

多期不定報酬率

設第 \(i\) 期(例如第 \(i\) 次交易或第 \(i\) 天)的報酬率為 \(r_i\)。若採用固定槓桿 \(f\),則第 \(i\) 期的資金成長因子(本利和)為$1+f r_i$。

經過 \(n\) 期後的複合本利和是 \[ 1+r_c=\sqrt[n]{(1+fr_1)(1+fr_2)\cdots (1+fr_n)}=\sqrt[n]{\prod_{i=1}^{n}(1+f r_i)} \]

同樣地,極大化$1+r_c$就等價於極大化: $$ g(f) = \log (1+r_c)=\frac1{n}\sum_{i=1}^n \log (1+fr_i) $$

當 \(n\) 很大,在大數法則運作之下,上式的樣本平均會趨近其期望: \[ g(f)=\mathbb{E}[\log(1+f r)]. \]

若每期報酬與槓桿使得 \(|f r|\) 多數時候不大(例如小報酬、或保守槓桿),可用泰勒展開到二階: \[ \log(1+f r)\approx f r-\frac{(f r)^2}{2} \]

取期望得到對數成長率的近似: \[ g(f)=\mathbb{E}[\log(1+f r)] \approx \mathbb{E}\!\left[f r-\frac{f^2 r^2}{2}\right] = f\,\mathbb{E}(r)-\frac{f^2}{2}\mathbb{E}(r^2). \]

令$g(f)$的一階微分為0來求極值: \[ g'(f)= \mathbb{E}(r)-f\,\mathbb{E}(r^2)=0 \quad\Rightarrow\quad \boxed{ f=\frac{\mathbb{E}(r)}{\mathbb{E}(r^2)} }. \]

$\ast\quad$這個結果是 Kelly 的二階近似:來自 \(\log(1+fr)\) 的二階展開。若報酬波動大、或 \(f\) 大,使 \(|fr|\) 常常不小,近似會變差。
$\ast\ast\quad$必須有 \(1+f r_i>0\) 才能定義 \(\log(1+f r_i)\),否則代表槓桿過大導致破產區域。

$r_c=0\;\Longleftrightarrow \; f=0.5$

回想在講對數常態分佈的時候,如果隨機變數$X$取對數$Y=\log X$服從常態分佈,其平均值是$\mu$,標準差是$\sigma$,$Y\sim N(\mu,\sigma^2)$,則稱$X$是對數常態分佈,它的$n$階動差是: $$ \mathbb{E}(X^n) = e^{n\mu+\frac12 n^2\sigma^2} $$ 令變數$X=1+r$時,取對數的平均值近似於複合報酬率$\mu=r_c$,如果$r_c=0$,則: $$ \mathbb{E}[(1+r)^n] = e^{\frac12 n^2\sigma^2} $$ 令$n=1$可以得到: $$ \mathbb{E}(r) = e^{\sigma^2/2}-1 $$ 再令$n=2$可以得到: $$ \mathbb{E}[(1+r)^2]=1+2\mathbb{E}(r)+\mathbb{E}(r^2)=e^{2\sigma^2} $$ $$ \Rightarrow\quad \mathbb{E}(r^2) = e^{2\sigma^2}-2(e^{\sigma^2/2}-1)-1= e^{2\sigma^2}-2e^{\sigma^2/2}+1 $$ 因此 $$ f = \frac{\mathbb{E}(r)}{\mathbb{E}(r^2)} = \frac{e^{\sigma^2/2}-1}{e^{2\sigma^2}-2e^{\sigma^2/2}+1}. $$

接著使用泰勒展開:

$$ e^{\sigma^2/2}=1+\frac{\sigma^2}{2}+\frac{\sigma^4}{8}+\cdots, \qquad e^{2\sigma^2}=1+2\sigma^2+2\sigma^4+\cdots. $$

先看分子:

$$ e^{\sigma^2/2}-1 \approx \frac{\sigma^2}{2}+\frac{\sigma^4}{8} $$

再看分母:

$$ \begin{aligned} e^{2\sigma^2}-2e^{\sigma^2/2}+1&\approx\left(1+2\sigma^2+2\sigma^4\right)-2\left(1+\frac{\sigma^2}{2}+\frac{\sigma^4}{8}\right)+1 \\[6pt] &=\bigl(1-2+1\bigr)+\bigl(2\sigma^2-\sigma^2\bigr)+\left(2\sigma^4-\frac{\sigma^4}{4}\right) \\[6pt] &=\sigma^2+\frac{7}{4}\sigma^4 \end{aligned} $$

把分子分母同除以 \(\sigma^2\)(\(\sigma\neq 0\)),可得

$$ f=\frac{\frac12+\frac{\sigma^2}{8}+\cdots}{1+\frac{7}{4}\sigma^2+\cdots} $$

在小波動近似下($\sigma^2$不大時):

$$ \boxed{f=\frac{\mathbb{E}(r)}{\mathbb{E}(r^2)}\approx 0.5} $$
但是我們試試看把下面的價格假設代入,觀察不同槓桿下的表現:
const prices = [100, 10000, 1, 1000, 10, 20000, 50, 3000, 10, 1000, 10000, 100]; //價格假設 價格的假設很誇張,$\sigma^2\approx 33$,槓桿稍大於1的都爆掉了,但是最佳槓桿還是約0.5。如果用 $$ f=\frac{\frac12+\frac{\sigma^2}{8}+\cdots}{1+\frac{7}{4}\sigma^2+\cdots} $$ 算出的$f$大概趨近於0了。為什麼 \(\sigma^2\approx 33\) 仍會出現「最佳槓桿 \(f\approx 0.5\)」呢?

這是因為\(f(\sigma^2)=\dfrac{\mathbb{E}(r)}{\mathbb{E}(r^2)}\) 這條式子,來自小$|fr|$的假設,再加上「對數常態分佈+動差」的推導。而上面的價格假設只有11個很誇張的$r_i$,也不是對數常態分佈。

因此期末資金最大化等價於最大化路徑的對數成長和,對目標函數 \(\sum \log(1+fr_i)\),求導並令為 0,得到路徑最佳槓桿需滿足: $$ \frac{d}{df}\sum_{i=1}^{11}\log(1+f r_i) = \sum_{i=1}^{11}\frac{r_i}{1+f r_i} =0. $$

把那 11 個 \(r_i\) 代入求解,可得到

$$ f \approx 0.538038 $$
因此:$r_c=0\quad\Longrightarrow \quad f=0.5$是非常強的結論。

凱利槓桿的一般化證明:當價格回到原點時

在金融實務中,我們常發現一個有趣的現象:如果資產價格在多期波動後最終回到了初始水平,最優的投資槓桿 $f^*$ 往往趨近於 $0.5$。以下是基於離散時間與泰勒展開的一般化證明。

1. 建立目標函數

假設初始資金為 $V_0$,槓桿比例為 $f$。在每一期 $i$ 中,資產價格從 $P_{i-1}$ 變為 $P_i$,定義單期收益率為 $r_i = \frac{P_i - P_{i-1}}{P_{i-1}}$。則 $n$ 期後的最終財富 $V_n$ 為:

\begin{equation} V_n = V_0 \prod_{i=1}^{n} (1 + f \cdot r_i) \end{equation}

凱利準則的目標是極大化長期幾何增長率 $G(f)$,即極大化財富的對數:

\begin{equation} G(f) = \frac{1}{n} \ln \left( \frac{V_n}{V_0} \right) = \frac{1}{n} \sum_{i=1}^{n} \ln(1 + f \cdot r_i) \end{equation}

2. 引入邊界條件

根據假設,價格最終回到了起點($P_n = P_0$),這意味著資產本身的累積收益率為 0:

\begin{equation} \prod_{i=1}^{n} (1 + r_i) = \frac{P_n}{P_0} = 1 \implies \sum_{i=1}^{n} \ln(1 + r_i) = 0 \end{equation}

利用二階泰勒展開式 $\ln(1+x) \approx x - \frac{1}{2}x^2$,我們可以將上述「價格回歸」條件近似為:

\begin{equation} \sum_{i=1}^{n} \left( r_i - \frac{1}{2}r_i^2 \right) \approx 0 \implies \sum r_i \approx \frac{1}{2} \sum r_i^2 \end{equation}

定義收益率的一階矩(均值)為 $\bar{r}$,二階矩為 $\bar{r^2}$,則有 $\bar{r} \approx \frac{1}{2} \bar{r^2}$。

3. 尋找最佳槓桿 $f^*$

同樣對目標函數 $G(f)$ 進行二階展開:

\begin{equation} G(f) \approx \frac{1}{n} \sum_{i=1}^{n} \left( f \cdot r_i - \frac{1}{2} f^2 r_i^2 \right) = f \bar{r} - \frac{1}{2} f^2 \bar{r^2} \end{equation}

將前一步推導出的條件 $\bar{r} = \frac{1}{2} \bar{r^2}$ 代入上式:

\begin{equation} G(f) \approx f \left( \frac{1}{2} \bar{r^2} \right) - \frac{1}{2} f^2 \bar{r^2} \end{equation}

為了求極值,我們對 $f$ 求一階導數並令其為零:

\begin{equation} \frac{dG}{df} = \frac{1}{2} \bar{r^2} - f \bar{r^2} = 0 \end{equation}

解得最佳槓桿:

$$f^* = 0.5$$

結論

這個證明顯示,只要價格最終回到原點,無論波動路徑多麼誇張,最佳槓桿始終鎖定在 0.5。這揭示了「波動率收割」的本質:透過 50% 的持倉比例進行動態再平衡,投資者實際上是在賺取資產算術回報與幾何回報之間的差值(即半個方差)。