程式模擬(程式碼可修改)
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$時,總報酬率還變負的,而且是懸崖式的下降。
總結:低槓桿永遠是對的。
把下面兩組價格假設依次取代掉剛才的價格假設:
const prices = [100, 140, 180, 200, 160, 100, 80, 40, 20, 50, 80, 100];
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有一項主要的資訊傳輸業務是美國東岸的運動賽事開打後,西岸因為時差還可以下注,所以有可能先知道前幾局的結果,對於勝率的預估更有優勢,凱利公式就是用來推估在已知資訊的前提下,應如何下注能最大化長期總報酬率。
二元賭局
考慮一個重複進行的賭局:
- 贏的機率為 \( p \),可獲得「賠率」\( b>0 \)
- 輸的機率為 \( q = 1-p \),損失押注的資金
若固定押注比例是$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% 的持倉比例進行動態再平衡,投資者實際上是在賺取資產算術回報與幾何回報之間的差值(即半個方差)。