本文受知乎陳小公尺啟發而寫。有興趣的朋友可以移步這裡。
本文的**完全是本人所擼。
假想乙個遊戲。贏的概率是60%,輸的概率40%。入場費隨意交。如果贏了獲得2倍的入場費金額(1賠1),輸則輸掉入場費。小公尺有1000元做本金,請問小公尺每次給多少入場費,理論上100次遊戲後幾何期望收益能最大?
【本人的疑問】為何這裡考慮幾何期望,而不是數學期望?【已解決,見**注釋!】
凱利公式 f
=p−q
bf=p−qb
不多說,上**。
import
pandas as
pdimport
numpy as
npimport
random
import
matplotlib.pyplot as
plt'''用蒙特卡羅方法,驗證凱利公式的計算得到資金比例是不是最佳的
參考:'''pwin =
0.6# 勝率
b =1
# 淨賠率
# 凱利值
defkelly
(pwin, b):
'''引數
pwin 勝率
b 淨賠率
返回f 投注資金比例
''' f = (b * pwin + pwin -
1) / b
return
f
# 遊戲
defplay_game
(f, cash
=100
, m=
100):
global
pwin, b
res = [cash]
fori in
range(m):
ifrandom.random() <= pwin:
1] +
int(f*res[-
1])*b)
else
:1] -
int(f*res[-
1]))
return
res# 蒙特卡羅方法重複玩遊戲
defmontecarlo(n=
1000
, f=
0.15
, cash
=1000
, m=
100):
res =
fori in
range(n):
#return pd.dataframe(res).sum(axis=0) / n #【 數學期望】不平滑
return
np.exp(np.log(pd.dataframe(res)).sum(axis=
0) / n) # 【幾何期望】平滑
n =1000
# 重複次數
cash =
1000
# 初始資金池
m =100
# 期數
f =0.1
# 資金比例 10%
res1 = montecarlo(n, f, cash, m)
fk = kelly(pwin, b) # 資金比例 凱利值
res2 = montecarlo(n, fk, cash, m)
f =0.5
# 資金比例 50%
res3 = montecarlo(n, f, cash, m)
f =1.0
# 資金比例 100%
res4 = montecarlo(n, f, cash, m)
# 畫個圖看看
由圖顯見,凱利值是最優的。
蒙特卡羅方法驗證凱利公式
本文受知乎陳小公尺啟發而寫。有興趣的朋友可以移步這裡。本文的 完全是本人所擼。假想乙個遊戲。贏的概率是60 輸的概率40 入場費隨意交。如果贏了獲得2倍的入場費金額 1賠1 輸則輸掉入場費。小公尺有1000元做本金,請問小公尺每次給多少入場費,理論上100次遊戲後幾何期望收益能最大?本人的疑問 為何...
蒙特卡羅方法驗證凱利公式
本文受知乎陳小公尺啟發而寫。有興趣的朋友可以移步這裡。本文的 完全是本人所擼。假想乙個遊戲。贏的概率是60 輸的概率40 入場費隨意交。如果贏了獲得2倍的入場費金額 1賠1 輸則輸掉入場費。小公尺有1000元做本金,請問小公尺每次給多少入場費,理論上100次遊戲後幾何期望收益能最大?本人的疑問 為何...
凱利公式的模擬驗證
場景 乙個賭局,你跟莊家。你出 1 元,莊家出 0.96元。賭金數目可隨之翻倍。根據每次拋色子的結果的單雙決定勝負。勝者得到雙方所下的賭金,計 1.96 元。問題 如何下注才能做到,風險最小,盈利最大呢?答案 凱利公式。凱利公式的作用 根據賠率與勝率,得出你每次的資金下注比例 公式的形式 1 賠率 ...