凯利公式(Kelly Criterion)是一种用于确定在有利赌局或投资中最佳下注比例的数学公式,其核心思想是通过最大化长期资本增长率来优化投资决策。以下是详细解释及Excel模拟说明:
一、凯利公式原理与公式
核心思想
在胜率已知的赌局中,通过计算最优下注比例,使得长期收益最大化,同时避免破产风险。公式通过平衡风险与收益,给出一个理性的投注比例。
公式形式
凯利公式的基本形式为:
其中:
f = 最优下注比例(应投入资金的百分比)
b = 赔率(净收益与下注金额的比率,不含本金)
p = 获胜概率
q=1−p = 失败概率
例如:若某赌局胜率 p=60%,赔率 b=1(赢则净赚1倍,输则亏光本金),则最优下注比例为0.2 , 20%的下注比例。
公式推导逻辑
凯利公式通过最大化对数资本增长率的期望值来推导。对数收益率的可加性使得长期增长率趋于稳定,避免了简单收益率的波动性干扰。
二、Excel模拟数据说明
为直观展示凯利公式的应用效果,我通过Python生成了模拟数据,并导出为Excel文件。以下是关键步骤与结果分析:
- 模拟场景设定
赌局参数:胜率 p=60%,赔率 b=1,即每次下注若赢则净赚1倍,若输则亏光本金。
初始本金:100元,模拟1000次赌局。
import pandas as pd
import numpy as np
# import openpyxl # 添加导入openpyxl库的语句
# 初始化模拟数据
np.random.seed(8855) # 设置随机种子以确保结果可重复
num_bets = 1000 # 模拟的赌局次数
initial_capital = 100 # 初始资金
win_prob = 0.6 # 获胜概率
odds = 1 # 赔率
seed_start = 0.02 # 初始比例
# 生成输赢结果,1表示赢,-1表示输
outcomes = np.random.choice([1, -1], size=num_bets, p=[win_prob, 1 - win_prob])
# 定义下注比例
bet_fractions=[]
for i in range(50) :
bet_fractions.append(seed_start*i)
# 初始化资金记录
capital_history = {frac: [initial_capital] for frac in bet_fractions}
# 模拟每次下注后的资金变化
for outcome in outcomes:
for frac in bet_fractions:
last_capital = capital_history[frac][-1]
if outcome == 1:
new_capital = last_capital * (1 + frac * odds)
else:
new_capital = last_capital * (1 - frac * odds)
capital_history[frac].append(new_capital)
# 将模拟结果转换为DataFrame以便导出为Excel文件
data = {
'局数': list(range(num_bets + 1)),
'输赢结果': [np.nan] + list(outcomes),
}
for frac in bet_fractions:
frac_perc = round(frac*100)
data[f'下注比例{frac_perc}%'] = capital_history[frac]
# 导出为Excel文件
df = pd.DataFrame(data)
df.to_excel('./Kelly.xlsx', index=False)
print('模拟数据已导出为Excel文件: 凯利公式模拟.xlsx')
通过计算,下注比例在22% ,收益最高。