首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

硬币赌局三部曲+反击篇的建模思路

文:屠夫1868

欢迎关注:基业长红1868

转载需获本人授权,并注明作者和出处

一图胜千言。

金钱永不眠,屠夫问候各位早安。

本来是回复在交流群的一篇内容,怎料触发了敏感词导致反复被删。

幸好提交前进行了内容备份,只好发到这里,提前祝大家周末愉快~

「粉丝@一颗柚子婷提问」

屠夫你好。读过硬币赌局三部曲和反击篇后,收获良多,对你的分析思路很感兴趣,也想动手用python做一下蒙特卡洛模拟。

希望你分享一下这几篇的建模思路,谢谢!

(PS 本人有Python基础)

屠夫答」

看ID应该是位女同学,对数学和编程感兴趣还有python基础的女生应该算比较罕见了吧,感谢这个稀有的提问哈~

硬币赌局三部曲 + 反击篇虽然出发点不一样,但是建模的思路是很接近的。

先将问题拆解。n场赌局的结果相互独立,我们可以先考虑一局里的情况,而一场硬币赌局的基本要素有这几样:

【1】赌局胜负(掷硬币的结果)

【2】下注策略

【3】资金结算(根据赔率和下注策略)

【1】赌局胜负

不论赔率如何、下注策略是什么,每一场的结果都是相对独立的,所以赌局胜负可以最先计算出来,然后保存成文件,以便不同策略或不同赔率依据同样的赌局结果进行对比。

这一步使用numpy的random.choice模块就可以快速完成,运算时间也非常短。

【2】下注策略

三部曲里采用的都是静态下注策略,也就是每一局下注金额要么固定,要么随机,不会根据前一局的结果而调整,直接生成金额矩阵然后和赌局矩阵进行运算即可。

反击篇的仓位管理比较复杂,下注策略是动态的,每一局的结果会影响下一局的下注。屠夫只能为马丁格尔策略和凯利公式各写一个函数进行处理。

这里有个小技巧:

用pandas的dataframe是可以轻松快速地按列运算的,所以如果每行表示1个赌徒的赌局结果,每列表示1场赌局,那么在按列运算的方法下,赌徒数量再多也不会明显增加你的计算时间。

【3】资金结算

在有了【1】和【2】之后,资金结算无非是将余额(balance)和所有赌局结果求和。比较特殊的有两篇:

给我1枚硬币》因为爆仓就不能再赌,所以要专门有一个survival字段记录该赌徒是否已经爆仓,是的话就不需要参与下一轮运算了;

反击篇》同样有爆仓控制,外加凯利公式是要结合赌徒余额计算的,所以【2】和【3】都在策略函数里处理,不等最后进行资金结算。

完成上述3步后,其实已经得到了你的模拟结果。

数据可视化,可能是被许多分析师低估的工作。

一图胜千言,尤其是对于没有充分数据知识的读者来说,再详尽的解释都不如一张直观的图表来得深刻。

如果希望把蒙特卡洛模拟的结果进行展示,可视化值得你多花点功夫。

以上为个人见解,仅供参考,希望能帮到你~

[ 作者简介 ]

屠夫1868,一个秉持价值理念、专攻资产配置、追求财务自由的量化投基者。

更多投资思考、心得分享和「半天候资产配置」在【基业长红1868】更新,欢迎关注。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191018A02D6S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券