本文受知乎陳小公尺啟發而寫。有興趣的朋友可以移步這裡。
本文的**完全是本人所擼。
假想乙個遊戲。贏的概率是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 賠率 ...