蒙特卡羅方法驗證凱利公式

2021-09-22 07:37:54 字數 2263 閱讀 4290

本文受知乎陳小公尺啟發而寫。有興趣的朋友可以移步這裡。

本文的**完全是本人所擼。

假想乙個遊戲。贏的概率是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 賠率 ...