今天有兴趣看看凯利公式,发现大部分文章只讲怎么用,不讲原理,自己思考了一下,并打算记录一下。
凯利公式解决的问题
实际用处部分写的简略,一是会接触这个公式的人,肯定是先知道它能解决什么问题,才学习的,二是已经有很多文章了。
大概来说,该公式解决一个问题:在赌局中知道输赢概率和赔率时,下注多少是最优的,结果是
f
∗
=
p
∗
b
−
(
1
−
p
)
∗
l
b
∗
l
f^* = \frac{p*b-(1-p)*l}{b*l}
f∗=b∗lp∗b−(1−p)∗l
其中p是赢的概率,b是赢时的收益率,比如本金翻倍的话,b是1,即100%。l是输时的收益率绝对值,输一半就是50%,全输光就是100%。
可以参考以下文章:
https://blog.youkuaiyun.com/qq_37477357/article/details/105516818
凯利公式的内涵
首先举个例子,猜大小,50%胜率,赢了翻3倍,收益率200%,输了输光,收益率-100%。压多少?
如果从单次期望来看,全压,因为期望是正的。但只要输一次,就输光,完蛋。所以单次期望在这里失效,为什么失效?因为这是一个连续游戏,如果按50%胜率,至少要一输一赢才是一轮,而连续游戏,就是无数轮拼接,当然实际中不可能刚好一输一赢,这也是一种期望。
那如果看一轮的收益率呢?赢一把本金乘3,输一把归零,所以一轮合起来就是归零,所以不能这么下注。挺反直觉的,但符合现实情况。
那下注我本金的1%呢?是不会归零但是增长太慢了。所以存不存在有个地方能让我在连续游戏下期望收益最大?这就是凯利公式的内涵。
凯利公式的推导
这是一个最值问题,首先写出连续游戏下的期望
f
(
x
)
=
(
1
+
b
x
)
p
∗
(
1
−
l
x
)
1
−
p
f(x) = (1+bx)^p*(1-lx)^{1-p}
f(x)=(1+bx)p∗(1−lx)1−p
f表示每完成一次的期望,x表示下注值,其余符号如前所述。这个期望就很不太容易写出来,跟单次期望差别很大,为什么p在指数上?
举个例子,还考虑刚才的猜大小游戏,如果一轮是一输一赢,那两轮下来,每轮平均收益率是多少?
(
1
+
200
%
∗
1
)
∗
(
1
−
100
%
∗
1
)
\sqrt{(1+200\%*1)*(1-100\%*1)}
(1+200%∗1)∗(1−100%∗1)这里p是50%,即
1
2
\frac{1}{2}
21,这两个小括号部分开二次根号也可以理解为是二分之一次方。
也就是说其实最开始是这样
f
(
x
)
=
[
(
1
+
b
x
)
100
p
∗
(
1
−
l
x
)
(
100
−
100
p
)
]
1
100
f(x) = [(1+bx)^{100p}*(1-lx)^{(100-100p)}]^{\frac{1}{100}}
f(x)=[(1+bx)100p∗(1−lx)(100−100p)]1001
大概是这个样子,毕竟100p也不见得是整数。
然后看看这里面的变量,只有x,而f(x)是每次后的期望,注意这不是钱的数量,是这一次结束后,拥有的钱的期望。x也不是时间,而是下注值。
然后要求f(x)的最大值,就用导数为0的方法推导一下即可。为什么要强调上面这句话?因为我之前习惯性把f(x)当作一个财富关于下注量的函数,并且想不通为什么导数为0时最优,因为这时表示财富并没有增长而是停滞了。其实这个f(x)更像是财富的导数,相当于二阶导为0找出增长最快的点那个意思。
总结
凯利公式的理念大于实用程度,毕竟能清楚地得到所要的输赢概率和赔率数据的地方,不会让你能通过这个公式赚到钱,不能清楚得到这些数据的市场,即使用了也只能作为参考,真正理解连续游戏和单轮游戏的期望差别才是关键点。