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

2021-09-07 13:20:03 字數 1887 閱讀 5841

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

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

假想乙個遊戲。贏的概率是60%,輸的概率40%。入場費隨意交。如果贏了獲得2倍的入場費金額(1賠1),輸則輸掉入場費。小公尺有1000元做本金,請問小公尺每次給多少入場費,理論上100次遊戲後幾何期望收益能最大?

【本人的疑問】為何這裡考慮幾何期望,而不是數學期望?【已解決,見**注釋!】

凱利公式

\[f=p-\frac\]

不多說,上**。

import pandas as pd

import numpy as np

import random

import matplotlib.pyplot as plt

'''用蒙特卡羅方法,驗證凱利公式的計算得到資金比例是不是最佳的

參考:'''pwin = 0.6 # 勝率

b = 1 # 淨賠率

# 凱利值

def kelly(pwin, b):

'''引數

pwin 勝率

b 淨賠率

返回f 投注資金比例

'''f = (b * pwin + pwin - 1) / b

return f

# 遊戲

def play_game(f, cash=100, m=100):

global pwin, b

res = [cash]

for i in range(m):

if random.random() <= pwin:

else:

return res

# 蒙特卡羅方法重複玩遊戲

def montecarlo(n=1000, f=0.15, cash=1000, m=100):

res =

for i 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 賠率 ...