社区
教程
Wiki
注册
登录
创作新主题
社区所有版块导航
Python
python开源
Django
Python
DjangoApp
pycharm
DATA
docker
Elasticsearch
分享
问与答
闲聊
招聘
翻译
创业
分享发现
分享创造
求职
区块链
支付之战
aigc
aigc
chatgpt
WEB开发
linux
MongoDB
Redis
DATABASE
NGINX
其他Web框架
web工具
zookeeper
tornado
NoSql
Bootstrap
js
peewee
Git
bottle
IE
MQ
Jquery
机器学习
机器学习算法
Python88.com
反馈
公告
社区推广
产品
短视频
印度
印度
一周十大热门主题
飒视频 | ChatGPT给你写的“调查报告”,可能不属于你
【Ludic:轻量Python框架,类似于 React,使用组件-20240322132157
写给不会代码的你:20分钟上手 Python + AI
类ChatGPT平台Cohere正融资5亿美元,估值50亿美元
本周github最火的开源项目是这个!!!
Python编程的终极十大工具
GPT-4「荣升」AI顶会同行评审专家?斯坦福最新研究:ICLR/NeurIPS等竟有16.9%评审...
GitHub(微博搜索)-20240324-1
Stability AI CEO宣布辞职;消息称OpenAI将与好莱坞电影公司会面并推荐Sora丨A...
内容整理人员招募|数据湖、大模型、推荐、图机器学习等
关注
Py学习
»
Python
Python仿真|如何“操纵”足球比赛的输赢
CDA数据分析师
• 2 年前 • 279 次点击
作者:Crossin先生
来源:Crossin的编程教室
欧洲杯马上就要决赛了。这届欧洲杯全是乌龙和冷门。于是网上少不了冒出各种“天台”梗。
还衍生出球队配合“盘口”踢的说法。所谓盘口,就是指国外一些博彩公司给一场比赛的胜负开出的赔率。更有甚者会神秘地告诉你,通过分析盘口,你就能看出来接下来的一场比赛是什么结果。
好家伙!财富密码尽在掌握啊。
那博彩公司究竟是如何操纵比赛,从而让自己赚得盆满钵满呢?
答案很简单:
我也不知道……
哎,别急!我是说不知道他们有没有操纵比赛以及如何操纵比赛。但如果让我开一家这样的公司,
我一样有办法可以把你们的钱都赚进我的口袋
。
因为
做到这一点这压根儿就不需要操纵比赛
,只要一要东西,那就是:
概率
。
假设现在A、B两队要进行一场比赛。
阿汪同学
说他觉得
A队
要赢,并愿意为此押上
100枚硬币
;
阿喵同学
说他觉得
B队
要赢,也愿意押
100枚硬币
。我说那行,我来给你们做个见证,你们把硬币都放我这里,
最后谁对了,我就把硬币全给谁
。不过,我得
从所有硬币里拿走10枚,也就是5%的硬币
,作为我的辛苦费。也就是说,赢的人最终可以拿走
190枚硬币
。
现在问题来了:
谁最有可能去操纵比赛?
阿汪和阿喵都有动机,唯独不可能是我
。因为不管谁赢谁输,我都稳赚10枚硬币。那我究竟是吃饱了撑的没事干,还是跟谁有深仇大恨,宁可瞒天过海偷天换日只为了把一人的钱转移给另一个人?
有人要说了,你举的这个例子不对。赢的人能拿多少钱走是博彩公司定的,所以他们会输小赢大!
No!No!No!
这个因果逻辑反了!
不同赔率的存在不是由博彩公司或者说庄家决定,而是由投注的人决定。
同样是刚才的例子
阿汪
依旧押
100枚硬币
支持
A队
赢;而
B队
这边,除了
阿喵同学
押了
100枚
,
阿咩同学
也押了
100枚
。这时候,我依旧从中拿走5%,现在是15枚。如果A队赢了,阿汪可以得到
285 枚硬币
,所以押A队的赔率是
(300-10)/100=
2.85
;而B队赢了,阿喵和阿汪同学各可以拿走
142.5 枚硬币
,所以押B队的赔率是
(300-10)/2/100=
1.425
。
作为庄家,我当然可以把赔率定的更低,比如A队为2.5,B队为1.2,这样我可以赚到更多的钱。但三位同学也不傻,他们一算,不对啊,怎么不管谁赢,我都还私藏了一部分硬币,以后就不来找我做公证了。于是我连原本稳赚的那5%也没了。
在现有普遍的博彩规则中,庄家需要在别人下注前预先给出明确赔率。这就要求博彩公司开出的赔率既要保证不管谁赢,自己都是能赚钱的,又要保证赔率尽可能高以便吸引人下注。
为此,就需要做两件事:
给出一个尽可能准的初始赔率
根据下注情况动态调整赔率
比如对于本届欧洲杯的决赛,某个网站给出了:
胜2.50 - 平3.10 - 负2.88
这样的即时赔率。
计算一下就可以发现,此时它的预期抽成为:
我用一段程序来模拟一场比赛的投注过程,来看看是不是真的可以仅通过调整赔率就让自己稳赚不赔。为了简化模型,这里
只考虑A队胜和B队胜两种情况,没有平局
。
假设
初始预估的胜率各为50%
,而投注者们的偏好是
80%会押A
,
20%押B
。
我的动态调整策略就是:
根据最近1000个投注者的选择作为依据
,按照前面说的方法计算出新的赔率。当然,我依旧会
从中抽取5%
。
当有
十万人次投注
之后,我得到的结果是这样的:
解释一下:
红色曲线是我收到的投注总额;
蓝色曲线是A队胜利后我需要根据每个投注者当时赔率所需支付的奖金;
绿色曲线则是B队胜利后需支付的奖金;
黄色虚线和青色虚线则分别是AB两队的即时赔率。
可以很明显地看出来,除了一开始因为初始赔率定得过于随意,导致出现短暂的轻微亏损外,之后时间里,我都是
稳赚不赔
的。
有人又要说了,你这个情况太理想,观众投注分布不会这么稳定的!
OK,没关系,我们继续来模拟。
现在假设
每经过一万人次的投注,大家就更看好B队一点
,A队的投注偏好就会在现有基础之上降低10%
。其他条件和策略不改变。我们将会得到这样的结果:
从投注开始到结束,尽管球迷们对AB两队的看好程度彻底发生了反转,但这
依旧不影响我赚钱的稳定性
。
再进一步,我设定在投注期间,
有万分之一的几率出现随机的球迷投注偏好的集体大波动
,也就是说庄家完全无法预测比赛的胜负。
即使在这种奇葩的情况下,
我的收益还是稳如老狗!
为了更有说服力,同样的规则,
重复100次
,
投注人次依次为 10000 到 110000递增
,把收益比画出来:
看见没,不过来多少人,
收益始终可以维持在5%左右
,也就是我预设的抽成比例,而且人越多越接近这个比例。这就是概率学上
大数定律
的体现,即
重复的次数越多真实发生的频率就越趋近于理论上的概率
。
现在,还有人觉得我需要去操纵某支队获胜吗?有必要吗?
我要的只是有很多很多人都来投注,越多越好
。我不关心哪支球队状态更好,天气更适宜,主力球员的感情生活更稳定,甚至初始的赔率也并不重要。
唯一关键的就是投注的实时情况
。我调整赔率不是为了坑你上天台,反而恰恰是为了让不同方的下注者更加平衡,避免赢小赔大或赢大赔小的情况出现。
所以,决定赔率的不是我,而是在我这里投注的阿汪阿喵阿咩们。我不需要动任何手脚,只要你坚持投注,把自己老婆本赔光是必然的事情。
不信我们再来看一个模拟:
假设所有比赛的赛前预计胜率都是合理的
,比如预计A队胜率80%,那实际就是有80%的可能赢球。在此基础上,阿汪带着
1个w的硬币
来了。每场比赛,他都会押上
1000硬币
,也就是初始总额的1/10。这样,一直持续下去,结果会怎样?
我
模拟了100次
,这是
硬币数量的变化曲线
。虽然也有不少时候,1万硬币会赢到两三万甚至更多,但绝大部分情况下,
在不到100次的时候,硬币数就归零了
。而拉长到1000次,更是几乎不可能幸免。
如果阿汪执迷不悟,继续借钱参与:
可以看到,由于庄家抽成的存在,
硬币数量的整体曲线是在不断下降的
。
而假如阿汪还很激进,动不动就 All-in,那么可以大大提速这个过程:
基本上两三次也就赔光了
。运气爆棚的话能狗屎运多撑几次,但最后的结局总是一样的。
这个实验告诉我们:
在一个零和游戏中,作为注定劣势的一方,最好的策略就是
一次都不要参与
,这样数学期望才是最大的。
所以请切记:
大赌伤身,久赌必输,赌到最后,一无所有!
获取文中模拟实验代码,请在公众号后台回复关键字
足球比赛
点这里👇关注我,记得标星哦,么么哒~
推荐阅读
CDA课程咨询
Python社区是高质量的Python/Django开发社区
本文地址:
http://www.python88.com/topic/116931
279 次点击
登录后回复