作者 | 倪家禹

责编 | 胡巍巍

上周七夕节的时候,我的暗恋对象邀我共进晚餐,这把我激动的!!!万年单身的我终于可以不再寂寞了。去了才知道,原来她被闺蜜们放了鸽子,奈何近期有喜事,需要找人一起喝酒,所以才有了我的出现。

当然我还是珍惜这难得的机会,到底是什么事如此迫不及待呢?主要有三件:

  • 暗恋对象最近学习了 Python 数据分析,换了一份月薪 1W 的工作,成为了一名优秀的数据分析师,并且公司每月会根据绩效给予 1500 元左右的奖金;

  • 暗恋对象在世界杯期间,参与了体育竞猜游戏,幸运地选中了法国队,还清了蚂蚁花呗巨额欠款;

  • 暗恋对象说,有钱了,可以随心所欲地浪,不用再担心还不起花呗吃土了,所以今天她请客。

对于前两件事,无疑是难得的。但第三件,为了防止她过度挥霍导致债台高筑,我决定用 Python 进行一次模拟测算,默默提醒她,体现我的贴心。

利用刚学会的蒙特卡洛原理,我决定建立收入支出模型进行测算:如果当月花费全部由花呗支付,当月花呗欠款大于当月可支出收入时,就要“吃土了”。预设计算 120 个月(十年),假如十年都没能吃上土,那就代表愿望成真。


  收入多少:每月净收入模型 

每月的净收入公式如下:

净收入=月薪-五险一金+奖金-个人所得税

其中,五险一金基数为月薪,个税基数为扣除五险一金后,月薪与奖金的和。

上海市五险一金缴纳系数:

以下所有图片,点击查看更清晰

个税政策:

奖金的数学模型设为以 1500 元为均值、200 元为标准差的正态分布:

据此,用 Python 建立计算每月净收入的模型如下:

def tax(salary_sum):
if salary_sum <= 3500:
return 0
elif salary_sum <= 5000:
return (salary_sum - 3500) * 0.03
elif salary_sum <= 8000 :
return (salary_sum - 5000) * 0.1 + 45
elif salary_sum <= 12500 :
return (salary_sum - 8000) * 0.2 + 345
elif salary_sum <= 38500 :
return (salary_sum - 12500) * 0.25 + 1245
elif salary_sum <= 58500 :
return (salary_sum - 38500) * 0.3 + 7745
elif salary_sum <= 83500 :
return (salary_sum - 58500) * 0.35 + 13745
else:
return (salary_sum - 80000) * 0.45 + 22495

def insurance(salary):
if salary <= 21396:
return (salary - salary * 0.175)
else:
return salary - 3744.58

def final_income(s,b_avg): 
salary = s
salary_get = insurance(salary)
bonus = pd.Series(np.random.normal(loc=b_avg,scale=200,size=120))\
.map(lambda x: round(x,2))
salary_sum = salary_get + bonus
income = salary_sum - salary_sum.apply(lambda x : tax(x))
return income

  花费多少:每月开支模型 

根据暗恋对象的自述和我对她的深刻了解,我模拟出了她每月开支的模型。

基本生活支出:

以她奢侈的生活,一天 100 不在话下。但由于是基本支出,变化也不会太大。我设定以 3000 元和 3500 元为限,均匀分布。

购物支出:

暗恋对象有句名言,“工资一分二,购物拿一半。”所以,模型设定为以 5000元为均值,500 元为标准差的正态分布。

娱乐支出:

暗恋对象闺蜜众多,每周一次的 girl’s night 是不能少的,一次至少花个 100,多则 300 不过分吧。所以,模型设定以 400 元和 1200 元为限,均匀分布。

学习支出:

爱学习,应该是暗恋对象少有的优点,某在线平台课程,价格大概在 100 元到 500 元不等。所以,这个也可以设定个均匀分布的模型。

其他支出:

每个月总会有些意外什么的,比如出门掉了个钱包等等。所以,为了计算尽可能接近真实,我设定 500 元为均值,40 元为标准差的正态分布模型。

综上,总支出=基本生活+购物+娱乐+学习+其他

啧啧,大概是一名挥霍无度的月光少女吧。

  是否吃土:每月收支模型 

下面,我们正式开始模拟每月的收支情况,看看要不要吃土。

整理几个约束条件:

  • 每月先还欠款,再消费。

  • 所有的支出除还款外,都可以使用花呗透支。

  • 当这月的收入小于等于需要还款的金额,就代表你要吃土了。

第一回合:不使用分期功能

当月支出,下月需全部还清。算法模型如下:

ef case_a():
data_1 = []
for i in range(0,120):
if -debt[i] >= income[i]:
print('第{}个月,没钱了,要吃土了!'.format(str(i+1)))
break
if saving[i] >= 0:
money = saving[i] + income[i] + debt[i] - expense[i]
if money >= 0:
saving[i+1] = money
else:
debt[i+1] = money
data_1.append([i+1,income[i],debt[i],expense[i],saving[i+1],debt[i+1]])
result_a = pd.DataFrame\
(data_1,columns=['月份','收入','需还贷款','支出总计','本月余钱','欠债'])
return result_a

为了使结果更为精确,结合以上收支模型我进行了 1 万次模拟,模拟的过程是这样的:

模拟结果如下:

横坐标代表第 x 个月要吃土;柱形图高度 h 代表 1w 次模拟中,结果恰好为第 x 个月要吃土的模拟次数。

显然,在不分期借贷的情况下,她几乎会在一年后面临吃土,而最快只要 6 个月。那么,可以分期会不会好一点呢?

第二回合:允许分期

分期相当于把当月需要还的款项,分摊到之后数个月,当月的负担减小了,但代价是支付一定的利息。此时我快速翻出了花呗的利率表:

蚂蚁花呗的利率表:

看明白了吗?数学好的可以仔细算算。现在余额宝年化 3.5%,而花呗分期10%!

如果每期欠款都做分期偿还,则算法模型如下:

def case_b():
data_1 = []
for i in range(0,1200):
if -debt[i] >= income[i]:
print('第{}个月,没钱了,要吃土了!'.format(str(i+1)))
break
if saving[i] >= 0:
money = saving[i] + income[i] + debt[i] - expense[i]
if money >= 0:
saving[i+1] = money
else:
money_piece = (money+ money*0.025)/3
debt[i+1] = money_piece + debt[i+1]
debt[i+2] = money_piece + debt[i+2]
debt[i+3] = money_piece + debt[i+3]
else:
money = income[i] + debt[i] - expense[i]
if money >= 0:
saving[i+1] = money
else:
money_piece = (money+ money*0.025)/3
debt[i+1] = money_piece + debt[i+1]
debt[i+2] = money_piece + debt[i+2]
debt[i+3] = money_piece + debt[i+3]
data_1.append([i+1,income[i],debt[i],expense[i],saving[i+1],debt[i+1]])
result_b = pd.DataFrame\
(data_1,columns=['月份','收入','需还贷款','支出总计','本月余钱','欠债'])
return result_b

同样一万次模拟。先来看看分期三月的情况:

果然效果显著,大大延缓了吃土的日子,可以尽情挥霍 20 个月。

分期六、九个月和一年的情况分布在图上是这样的:

注意图上标注的“平均 XX 个月后吃土”。结果已经很明朗了,虽然没有达到预定的十年吃不上土的标准,但是分期时间越长,可以尽情挥霍不吃土的时间就越长,表明通过透支、借贷,能够大大延缓面临吃土的时间。

挥霍四年才会破产,已经大大地出乎我的意料。并且我相信,我在这段时间内,能靠自己的天分,从“高帅”变成“高富帅”,她爱上我,嫁了我,吃土的问题,就可以迎刃而解了!

曾经,有人和我说,“还完花呗,月月吃土!”,我现在通过测算,可以很肯定地说,这不存在!只要敢分期,不怕没钱花。

......但是当我打开我的花呗首页时,我发现一个问题:我的信用总额度只有 1.5 万:

我选取了分期十二个月、一万次模拟中的一次数据,看了下吃土前夕最后 12 个月欠款项总额:

有谁蚂蚁花呗额度是 6 万的?看她的样子就不像,只能继续研究下了。


考虑实际:有额度限制的收支模型 

这次我对分期十二月的算法增加一个限制,当未来 12 个月欠款金额大于等于 1.5 万,则剁手,不再使用花呗。我截取了额度用尽时的时间点。

图表显示,在第 20 个月额度用尽,未来 12 个月所需偿还的贷款总额为 16544 元,符合正常额度。而当月需还 2291 元,而后每月递减。2000 元的还款,绝对不会让我的暗恋对象吃土,只是,或许当月 shopping 额度,就没那么多了。

当然,真实情境可能更为纠结,当月初还完款,总会有部分额度恢复,那么是不是又可以透支起来了呢?这真是满满的套路啊!

花呗会诱使你尽可能的使用完每一份额度,但绝不会允许你还不上。所谓“有了花呗,再也不用吃土!”只是挥霍无度,过度透支,但又乐在其中的错觉罢了。


彩蛋:同时使用多个平台?  

有些世外高人,想出了一个绝妙的主意:市面上借贷平台,又不止花呗一家,只要在手机上装上足够多的 App ,没了花呗还有买呗、用呗......叠加起来,额度限制就不是问题了!

这......你肯定没有好好看文章,我来给你回顾下!

选取分期十二个月、一万次模拟中的一次数据:第 55 月以后,需要还款的金额,就超过了当月收入(开始吃土),图上是每个月需还款的数量。从此时开始,是不能用借贷平台的,并且当月就需要还款 9000+。

在这段令人忧伤的时间里,我建议任何想在刷爆边缘疯狂试探的小伙伴们,学一首歌,捧一只碗,买一张地铁票,遨游一下上海的地下世界。

作者:数据侠倪家禹,城市数据团特约撰稿人,数据分析师(Python)微专业学员,喜欢用数据挖掘生活中的小秘密。对数据研究有着敏锐的洞察力,善于把复杂的问题简单化,简单的问题流程化。希望大家通过数据感受生活的魅力。

声明:本文为作者投稿,版权归对方所有。


征稿啦

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。

————— 推荐阅读 —————

为什么别的程序员天天吃鸡,你却顿顿吃土?相关推荐

  1. python程序员爬取分析20万场吃鸡数据,带妹吃鸡,终成人生赢家

    首先,神枪镇楼 python程序员爬取分析20万场吃鸡数据,带妹吃鸡,终成人生赢家 吃鸡,撩妹神器 吃鸡游戏受到很多年轻人的喜爱,用户量也非常大.有很多地图,场景逼真,技术玩法,增加了游戏可玩性.而且 ...

  2. 绝地求生linux版本,别吃鸡游戏下载-别吃鸡官方版v1.0-Linux公社

    别吃鸡是一款游戏画面设计非常的精致的手机游戏.游戏的故事背景依托我国三国时期的故事来作为故事背景进行设计.游戏里面还原了超多的三国经典人物,但是玩法却是非常的不一样.这是一场全新的利用炮台作为塔防的游 ...

  3. 腾讯吃鸡 android,腾讯吃鸡安卓版

    腾讯吃鸡安卓版是一款全新的大逃杀枪战射击游戏,游戏不仅有着真实的游戏场景,而且还有着独特的射击体验,配合上充满特色的玩法,让玩家之间可以更好配合快乐吃鸡. 腾讯吃鸡安卓版特色 1.绝地吃鸡是大逃杀类型 ...

  4. 程序员第一次相亲,因请女方吃肯德基而被怒删!

    今天看到一个有趣的话题,一个粉丝投稿: "我是程序员,今天相亲时被对方嫌弃了,最后她删了我". 楼主男生,第一次见面时请对方吃肯德基,女生吐槽了他很多,最后删了他···看看他俩的聊 ...

  5. 程序员天天写代码,如何拓展社交圈?

    作为一个程序员,天天忙着写代码,周末又宅在家中,如何拓展有效社交圈?这不仅仅是程序员的面临的问题.今天就聊聊自己在这方面的感悟. 社交圈的固化 无论是否是程序员,大家的社交圈越来越固化,特别是疫情之后 ...

  6. 农村程序员:月收入20k,舍不得吃穿,引起网友共鸣

    一名来自农村的程序员吐槽,称感觉对自己太不好了:我挣得还行,税前2万,住着几百块钱的城中村,舍不得买贵重的衣服,也不怎么出去吃好吃的,也不买啥电子产品,有一个吃饭的家伙mac pro是我最贵的东西,手 ...

  7. 接口是什么意思_程序员天天用却不懂得冷知识,这两句口诀,让你理解RESTful接口...

    在我们前后端交互过程中,我们经常提到一个英文单词RESTful,那么什么是RESTful接口呢? REST,全称Resource Representational State Transfer,翻译成 ...

  8. 用计算机弹吃鸡,Win10系统玩吃鸡提示游戏缺少msvcp140.dll的解决方法

    最近有位win10系统用户反映,电脑运行吃鸡游戏的时候,系统弹出提示:"无法启动此程序,因为计算机中丢失msvcp140.dll,尝试重新安装该程序以解决此问题.",其实这是win ...

  9. 用Python分析了1w场吃鸡数据,原来吃鸡要这么玩!

    微信改版,加星标不迷路! 用Python分析如何才能高效吃鸡? 作者:阿广 概述 前言 获取数据 观察数据 数据处理 吃鸡到底和哪个数据相关性最强? 分析热度图 期望研究的问题 结论 阿广说 推荐阅读 ...

  10. 计算机内存不足吃鸡怎么办,Win10玩吃鸡游戏提示虚拟内存不足怎么办?

    Win10玩吃鸡游戏提示"虚拟内存不足"怎么办? 最近吃鸡游戏非常火,大家都想大吉大利晚上吃鸡!因为吃鸡游戏对电脑配置的要求非常高,所以很多用户在玩吃鸡手游时会遇到各种问题,最常见 ...

最新文章

  1. 猎头出500万年薪挖百度某高T,却被对方拒绝!网友:钱不是最重要的!
  2. NHibernate: Session.Save 采用版本控制时无必要地自动Update版本字段的问题
  3. VideoTool之FFmpeg:FFmpeg的简介、安装、使用方法之详细攻略
  4. OpenLayers 3 之 地图样式(ol.style)详解
  5. linux命令--sysctl
  6. 物联网技术渐趋成熟 车联网应用或成市场主驱力
  7. Nginx 部署 Vue 项目刷新页面出现404
  8. 不改代码也能全面 Serverless 化,阿里中间件如何破解这一难题?
  9. Java排序之直接选择排序
  10. base——JRE和JDK的区别【转】
  11. 数据科学高级分析 (Data science advanced analytics)
  12. Julia:副本copy引发的问题,期待0.4.0版本!
  13. 北京市常用电话号码表
  14. 微软疑断自由软件开发者“活路”,禁止在微软商店发布商业开源
  15. Kali Linux 2022下载
  16. 极路由b70官方固件
  17. 单行文本溢出省略号显示
  18. Date DateFormat SimpleDateFormat Calendar Joda-Time
  19. Word2007从指定页插入页码,不包括封面和目录,指定页为首页第1页
  20. 交换机与路由器技术-05-路由器工作原理

热门文章

  1. 三招教你图片文字转语音怎么转
  2. 闭环系统和开环系统的频域性能指标
  3. 2017年微商软文推广写作技巧
  4. 卸料装置弹性零件的计算方法_第三篇:冲压模具结构设计学习--退料零件、模架零件...
  5. 云计算服务模型和openstack架构常用模块介绍
  6. oracle所有作业的答案,Oracle作业及其答案.ppt
  7. xd怎么制作年月日选项_XD教程| 如何使用Adobe XD CC制作动画原型
  8. 【数据库】关系数据理论习题及解析
  9. 在endnote中制作符合硕士毕业论文的输出格式
  10. python画地球旋转代码_90行代码让微信地球转起来,太酷了!(python实现)