為什麼別的工程師天天吃雞,你卻頓頓吃土?

作者 |倪家禹

  • 暗戀對象最近學習了 Python 數據分析,換了一份月薪 1W的工作,成為了一名優秀的數據分析師,並且公司每月會根據績效給予1500 元左右的獎金;

  • 暗戀對象在世界盃期間,參與了體育競猜遊戲,幸運地選中了法國隊,還清了螞蟻花唄巨額欠款;

  • 暗戀對象說,有錢了,可以隨心所欲地浪,不用再擔心還不起花唄吃土了,所以今天她請客。

  • 對於前兩件事,無疑是難得的。但第三件,為了防止她過度揮霍導致債台高築,我決定用 Python 進行一次模擬測算,默默提醒她,體現我的貼心。

    利用剛學會的蒙特卡洛原理,我決定建立收入支出模型進行測算:如果當月花費全部由花唄支付,當月花唄欠款大於當月可支出收入時,就要「吃土了」。預設計算 120 個月(十年),假如十年都沒能吃上土,那就代表願望成真。

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

    每月的淨收入公式如下:

    淨收入=月薪-五險一金+獎金-個人所得稅

    其中,五險一金基數為月薪,個稅基數為扣除五險一金後,月薪與獎金的和。

    上海市五險一金繳納系數:

    以下所有圖片,點擊查看更清晰

    個稅政策:

    獎金的數學模型設為以 1500 元為均值、200 元為標準差的正態分布:

    據此,用 Python 建立計算每月淨收入的模型如下:

    deftax(salary_sum):ifsalary_sum<=3500:return0elifsalary_sum<=5000:return(salary_sum-3500)*0.03elifsalary_sum<=8000:return(salary_sum-5000)*0.1+45elifsalary_sum<=12500:return(salary_sum-8000)*0.2+345elifsalary_sum<=38500:return(salary_sum-12500)*0.25+1245elifsalary_sum<=58500:return(salary_sum-38500)*0.3+7745elifsalary_sum<=83500:return(salary_sum-58500)*0.35+13745else:return(salary_sum-80000)*0.45+22495definsurance(salary):ifsalary<=21396:return(salary-salary*0.175)else:returnsalary-3744.58deffinal_income(s,b_avg):salary=ssalary_get=insurance(salary)bonus=pd.Series(np.random.normal(loc=b_avg,scale=200,size=120))\.map(lambdax:round(x,2))salary_sum=salary_get+bonusincome=salary_sum-salary_sum.apply(lambdax:tax(x))returnincome

    花費多少:每月開支模型

    根據暗戀對象的自述和我對她的深刻了解,我模擬出了她每月開支的模型。

    基本生活支出:

    以她奢侈的生活,一天 100 不在話下。但由於是基本支出,變化也不會太大。我設定以 3000 元和 3500 元為限,均勻分布。

    購物支出:

    暗戀對象有句名言,「薪水一分二,購物拿一半。」所以,模型設定為以 5000元為均值,500 元為標準差的正態分布。

    娛樂支出:

    暗戀對象閨蜜眾多,每周一次的 girl’s night 是不能少的,一次至少花個 100,多則 300 不過分吧。所以,模型設定以 400 元和 1200 元為限,均勻分布。

    學習支出:

    愛學習,應該是暗戀對象少有的優點,某在線平台課程,價格大概在100 元到 500 元不等。所以,這個也可以設定個均勻分布的模型。

    其他支出:

    每個月總會有些意外什麼的,比如出門掉了個錢包等等。所以,為了計算盡可能接近真實,我設定500 元為均值,40 元為標準差的正態分布模型。

    綜上,總支出=基本生活+購物+娛樂+學習+其他

    嘖嘖,大概是一名揮霍無度的月光少女吧。

    是否吃土:每月收支模型

    下面,我們正式開始模擬每月的收支情況,看看要不要吃土。

    整理幾個約束條件:

    • 每月先還欠款,再消費。

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

    • 當這月的收入小於等於需要還款的金額,就代表你要吃土了。

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

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

    efcase_a():data_1=[]foriinrange(0,120):if-debt[i]>=income[i]:print('第{}個月,沒錢了,要吃土了!'.format(str(i+1)))breakifsaving[i]>=0:money=saving[i]+income[i]+debt[i]-expense[i]ifmoney>=0:saving[i+1]=moneyelse:debt[i+1]=moneydata_1.append([i+1,income[i],debt[i],expense[i],saving[i+1],debt[i+1]])result_a=pd.DataFrame\(data_1,columns=['月份','收入','需還貸款','支出總計','本月餘錢','欠債'])returnresult_a

    為了使結果更為精確,結合以上收支模型我進行了 1 萬次模擬,模擬的過程是這樣的:

    模擬結果如下:

    橫坐標代表第 x 個月要吃土;柱形圖高度 h 代表 1w 次模擬中,結果恰好為第 x 個月要吃土的模擬次數。

    顯然,在不分期借貸的情況下,她幾乎會在一年後面臨吃土,而最快只要 6 個月。那麼,可以分期會不會好一點呢?

    第二回合:允許分期

    分期相當於把當月需要還的款項,分攤到之後數個月,當月的負擔減小了,但代價是支付一定的利息。此時我快速翻出了花唄的利率表:

    螞蟻花唄的利率表:

    看明白了嗎?數學好的可以仔細算算。現在餘額寶年化 3.5%,而花唄分期10%!

    如果每期欠款都做分期償還,則算法模型如下:

    defcase_b():data_1=[]foriinrange(0,1200):if-debt[i]>=income[i]:print('第{}個月,沒錢了,要吃土了!'.format(str(i+1)))breakifsaving[i]>=0:money=saving[i]+income[i]+debt[i]-expense[i]ifmoney>=0:saving[i+1]=moneyelse:money_piece=(money+money*0.025)/3debt[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]ifmoney>=0:saving[i+1]=moneyelse:money_piece=(money+money*0.025)/3debt[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=['月份','收入','需還貸款','支出總計','本月餘錢','欠債'])returnresult_b

    同樣一萬次模擬。先來看看分期三月的情況:

    果然效果顯著,大大延緩了吃土的日子,可以盡情揮霍 20 個月。

    分期六、九個月和一年的情況分布在圖上是這樣的:

    注意圖上標註的「平均 XX 個月後吃土」。結果已經很明朗了,雖然沒有達到預定的十年吃不上土的標準,但是分期時間越長,可以盡情揮霍不吃土的時間就越長,表明通過透支、借貸,能夠大大延緩面臨吃土的時間。

    揮霍四年才會破產,已經大大地出乎我的意料。並且我相信,我在這段時間內,能靠自己的天分,從「高帥」變成「高富帥」,她愛上我,嫁了我,吃土的問題,就可以迎刃而解了!

    曾經,有人和我說,「還完花唄,月月吃土!」,我現在通過測算,可以很肯定地說,這不存在!只要敢分期,不怕沒錢花。

    ……但是當我打開我的花唄首頁時,我發現一個問題:我的信用總額度只有1.5 萬:

    我選取了分期十二個月、一萬次模擬中的一次數據,看了下吃土前夕最後 12 個月欠款項總額:

    有誰螞蟻花唄額度是 6 萬的?看她的樣子就不像,只能繼續研究下了。

    考慮實際:有額度限制的收支模型

    這次我對分期十二月的算法增加一個限制,當未來 12 個月欠款金額大於等於 1.5 萬,則剁手,不再使用花唄。我截取了額度用盡時的時間點。

    圖表顯示,在第 20 個月額度用盡,未來 12 個月所需償還的貸款總額為 16544 元,符合正常額度。而當月需還 2291 元,而後每月遞減。2000 元的還款,絕對不會讓我的暗戀對象吃土,只是,或許當月 shopping 額度,就沒那麼多了。

    當然,真實情境可能更為糾結,當月初還完款,總會有部分額度恢復,那麼是不是又可以透支起來了呢?這真是滿滿的套路啊!

    花唄會誘使你盡可能的使用完每一份額度,但絕不會允許你還不上。所謂「有了花唄,再也不用吃土!」只是揮霍無度,過度透支,但又樂在其中的錯覺罷了。

    彩蛋:同時使用多個平台?

    有些世外高人,想出了一個絕妙的主意:市面上借貸平台,又不止花唄一家,只要在手機上裝上足夠多的 App ,沒了花唄還有買唄、用唄……疊加起來,額度限制就不是問題了!

    這……你肯定沒有好好看文章,我來給你回顧下!

    選取分期十二個月、一萬次模擬中的一次數據:第 55 月以後,需要還款的金額,就超過了當月收入(開始吃土),圖上是每個月需還款的數量。從此時開始,是不能用借貸平台的,並且當月就需要還款 9000+。

    在這段令人憂傷的時間里,我建議任何想在刷爆邊緣瘋狂試探的小夥伴們,學一首歌,捧一只碗,買一張地鐵票,遨遊一下上海的地下世界。

    作者:數據俠倪家禹,城市數據團特約撰稿人,數據分析師(Python)微專業學員,喜歡用數據挖掘生活中的小秘密。對數據研究有著敏銳的洞察力,善於把複雜的問題簡單化,簡單的問題流程化。希望大家通過數據感受生活的魅力。

    聲明:本文為作者投稿,版權歸對方所有。

    征稿啦

    CSDN公眾號秉持著「與千萬技術人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時間以技術人的獨特視角描述技術人關心的行業焦點事件,更有「技術頭條」專欄,深度解讀行業內的熱門技術與場景應用,讓所有的開發者緊跟技術潮流,保持警醒的技術嗅覺,對行業趨勢、技術有更為全面的認知。

    如果你有優質的文章,或是行業熱點事件、技術趨勢的真知灼見,或是深度的應用實踐、場景方案等的新見解,歡迎聯繫CSDN投稿,聯繫方式:微信(guorui_1118,請備註投稿+姓名+公司職位),郵箱([email protected])。

    ————— 推薦閱讀 —————

    [do_widget id=yuzo_widget-4] [do_widget id=yuzo_widget-9] 職場