蒙特卡罗方法验证凯利公式

说明

本文受知乎陈小米启发而写。有兴趣的朋友可以移步这里

本文的代码完全是本人所撸。

问题描述

假想一个游戏。赢的概率是60%,输的概率40%。入场费随意交。如果赢了获得2倍的入场费金额(1赔1),输则输掉入场费。小米有1000元做本金,请问小米每次给多少入场费,理论上100次游戏后几何期望收益能最大?

【本人的疑问】为何这里考虑几何期望,而不是数学期望?【已解决,见代码注释!】

凯利公式

\[f=p-\frac{q}{b}\]

不多说,上代码。

完整代码

import pandas as pd
import numpy as np
import random
import matplotlib.pyplot as plt

'''
用蒙特卡罗方法,验证凯利公式的计算得到资金比例是不是最佳的

参考:https://zhuanlan.zhihu.com/p/20849995
'''

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:
            res.append(res[-1] + int(f*res[-1])*b)
        else:
            res.append(res[-1] - int(f*res[-1]))
    return res
    
    
# 蒙特卡罗方法重复玩游戏
def montecarlo(n=1000, f=0.15, cash=1000, m=100):
    res = []
    
    for i in range(n):
        res.append(play_game(f, cash, m))
        
    #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)


# 画个图看看
fig = plt.figure() 
axes = fig.add_subplot(111)

axes.plot(res1,'r-',label='10%')
axes.plot(res2,'g*',label='{:.1%}'.format(fk))
axes.plot(res3,'b-',label='50%')
axes.plot(res4,'k-',label='100%')
plt.legend(loc = 0)

plt.show()

效果图

709432-20170725092412968-782731791.png

结论

由图显见,凯利值是最优的。

转载于:https://www.cnblogs.com/hhh5460/p/7232261.html

#### **一、定位推荐** | 位置 | 热号推荐(高频) | 冷号补位(遗漏值高) | 综合精选 | |------|------------------|----------------------|----------| | 百位 | 2、4、6 | **7**(遗漏18期) | **2、4、7** | | 十位 | 3、5、8 | **9**(遗漏12期) | **3、5、9** | | 个位 | 0、6、8 | **2、7**(遗漏≥10期)| **0、6、7** | --- #### **二、精选直选/组选号码** 1. **直选推荐**(单注): - **2-5-7**(百位热号+十位冷热过渡+个位冷号反弹) - **4-9-6**(百位热号+十位冷号+个位长期稳定) - **7-3-0**(百位冷号+十位热号+个位热号) 2. **组选六推荐**(包号组合): - **2 4 7 9 0** → 组合如247、490、729(覆盖冷热号平衡) - **3 5 6 7 8** → 组合如356、578、367(侧重奇偶交替) --- #### **三、和值/跨度策略** - **和值区间**:**12-15** - 重点:14(热和值)、15(冷和值反弹) - **跨度建议**:**5-6** - 近期跨度5出现频率高,可优先考虑(如号码2-7-0,跨度7→调整跨度至6)。 --- #### **四、风险对冲方案** 1. **冷热搭配**:每注至少包含1个冷号(如7、9、2)2个热号(如4、5、6)。 2. **区间覆盖**: - 小号(0-3):选1个位置(如个位0或十位3) - 中号(4-6):必选1个位置(如百位4或个位6) - 大号(7-9):选1个位置(如百位7或十位9) --- #### **五、数据验证逻辑** - **百位7**:历史最大遗漏22期,当前遗漏18期,接近临界值。 - **和值14**:近20期出现4次,占比20%,属高频区间。 - **冷号9**:十位遗漏12期,同期历史平均遗漏为8期,反弹概率提升。 --- #### **六、理性提醒** 1. 彩票为随机事件
最新发布
04-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值