日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

你真的认真想过了吗?

發(fā)布時(shí)間:2023/12/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你真的认真想过了吗? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

貸的款,遲早是要還的。 ------ 愛(ài)心覺(jué)羅 . 輯 . 蝦扯

文章目錄

  • 前言
  • 一、重新建模目標(biāo)函數(shù)
  • 二、繪制模型圖
    • 1.裝修貸轉(zhuǎn)化為同期房貸的利率變化圖
    • 2.還款差額函數(shù)圖
    • 3.最佳還款月的利率
  • 結(jié)論
  • 知識(shí)圖譜
  • 三、代碼
    • 1.裝修貸轉(zhuǎn)化為同期房貸的利率變化圖代碼
    • 2.差額函數(shù)的生成圖示代碼


前言

昨天用Python簡(jiǎn)單的計(jì)算了裝修貸和房貸的比較關(guān)系,我們的結(jié)論是裝修貸會(huì)比同期房貸利率高,還得到了裝修貸的年利率簡(jiǎn)單的估算關(guān)系。我們初步的結(jié)論是裝修貸沒(méi)有房貸劃算。

高中同屆唯一考上清華的同學(xué)看了說(shuō),裝修貸如果提前還款,在2-3年還清其實(shí)也挺劃算。所以,我們真的認(rèn)真思考過(guò)我們的模型了嗎?作為金融屌絲,我們就要跟銀行的數(shù)據(jù)分析師死磕到底。
我們真的就不能薅羊毛了嗎?能用裝修貸來(lái)還房貸嗎?


為了簡(jiǎn)化問(wèn)題,我們的目標(biāo)函數(shù)重新定義

一、重新建模目標(biāo)函數(shù)

鑒于缺錢(qián)的事實(shí),我們真的需要向銀行貸款30萬(wàn),用于日常的鬼混。一個(gè)是利率為5.39%的房貸,等額本息;一個(gè)是月利率0.28%的裝修貸,本金分期償還。兩者都可以提前還款,沒(méi)有額外費(fèi)用,裝修貸最長(zhǎng)可貸5年。
為了便于兩者的比較,我們假設(shè)房貸30萬(wàn)也是5年期的(因?yàn)槲覀兊姆抠J肯定遠(yuǎn)大于30萬(wàn),30萬(wàn)在深圳一個(gè)廁所都買(mǎi)不到),房貸每月還款金額13681.42,可能會(huì)比裝修貸每月多一點(diǎn)錢(qián),兩者做比較時(shí)就不考慮額外的影響了。
所以,我們簡(jiǎn)單的想一下就能知道,假設(shè)我們只貸款了一個(gè)月就把貸款全部結(jié)清,那么,房貸需要還多少錢(qián)?裝修貸又需要還多少錢(qián)呢?
假設(shè)我們只貸款了一個(gè)月就把貸款全部結(jié)清,房貸總計(jì)還款301347.5;裝修貸總計(jì)還款金額300840,裝修貸比房貸還款差額(ChaE):少還507.5元。
WHAT?不是說(shuō)房貸利率低嗎?怎么裝修貸還能少還錢(qián)?也就是說(shuō)如果我最開(kāi)始就用裝修貸還了房貸,1個(gè)月結(jié)清了貸款,銀行就會(huì)少賺我507.5元的利潤(rùn)。
計(jì)算公式推導(dǎo)如下:
設(shè)還款總期數(shù)為m,房貸每月還款金額X元后,房貸剩余的本金的計(jì)算公式為:

房貸的月利率為β。
所以,m期后我們結(jié)清房貸,總計(jì)還款金額為:m×X + Am
每期裝修貸還款金額T。
T = 貸款本金(B0)/還款期數(shù)(5×12) + 貸款本金(B0)×月利率
m期后裝修貸的剩余本金為:
貸款剩余本金(Bm) = 貸款初始本金(B0) - 貸款初始本金(B0)/(5×12)×m
B0是30萬(wàn)。所以,m期后我們結(jié)清裝修貸,總計(jì)還款金額為:m×T + Bm
所以,兩者的差額函數(shù)為:
ChaE = (m×T + Bm) – (m×X + Am)

怎么回事呢?仔細(xì)想想就知道,裝修貸因?yàn)樗憷r(shí)用的初始本金B(yǎng)0來(lái)算,假設(shè)你還到最后一個(gè)月,你的本金其實(shí)都快沒(méi)有了,然而你的利息還是用的最初貸款本金30萬(wàn)來(lái)計(jì)算,肯定吃虧啊。所以,裝修貸是越往后,年化利率越高。具體變化趨勢(shì)我畫(huà)了圖來(lái)展示。

二、繪制模型圖

1.裝修貸轉(zhuǎn)化為同期房貸的利率變化圖

我畫(huà)了一個(gè)圖來(lái)展示裝修貸轉(zhuǎn)化為同期房貸的利率變化圖。(代碼較長(zhǎng),最后附)

可以看到,49期之前裝修貸利率都比房貸利率低。而49期后,裝修貸便比房貸高了。
那么,我們是否需要持有裝修貸到49期最劃算呢?答案是NO,NO,NO。
第一期雖然裝修貸利率低,相當(dāng)于3.36%的房貸利率,但是因?yàn)橘J款時(shí)間短,兩者利息差僅為507.5元,第二期差額是995.38反而比第一期還高。所以最能薅羊毛的月份不是第一期,也不是49期。
繼續(xù)分析我們的差額函數(shù)ChaE。

2.還款差額函數(shù)圖

把期數(shù)m設(shè)為自變量,得到的差額函數(shù)為下圖。差額函數(shù)ChaE和提前還款期數(shù)m的關(guān)系圖如下:

藍(lán)色柱狀圖是差額。可以看出50期之前,裝修貸都比房貸優(yōu)惠,50期后,裝修貸比房貸貴。
我們最能省到錢(qián)的地方是在25個(gè)月,能夠節(jié)約到6594.35元的利息。所以我清華高中同學(xué)說(shuō)法是正確的。
而25個(gè)月,對(duì)應(yīng)的裝修貸轉(zhuǎn)化的年利率是多少呢?這又是個(gè)非線性方程的求解,我們需要使用到scipy.optimize 中的fsolve,專(zhuān)門(mén)來(lái)解這些高維方程的。

3.最佳還款月的利率

使用到scipy.optimize 中的fsolve求解25個(gè)月時(shí)裝修貸轉(zhuǎn)化的年利率

裝修貸轉(zhuǎn)化的年利率是4.12%,比房貸5.39%能節(jié)約1.2個(gè)百分點(diǎn)。所以在25個(gè)月結(jié)清貸款,能防止銀行薅走我們6K多的羊毛。


結(jié)論

裝修貸真的可以用來(lái)還25個(gè)月房貸!!!
結(jié)果挺出乎預(yù)料的,所以當(dāng)我們感嘆錢(qián)太不禁花的時(shí)候,聰明的人總能在任何時(shí)候看到可操作的空間。
感謝我清華的高中同學(xué),讓我們?cè)俅握J(rèn)真審視了這個(gè)現(xiàn)實(shí)中的數(shù)學(xué)問(wèn)題。我也順手拿出了我的POS機(jī),準(zhǔn)備滴滴滴。。。

知識(shí)圖譜

對(duì)于Python知識(shí),本文用到了:
1、 同一個(gè)坐標(biāo)X,左右兩邊Y軸分別畫(huà)兩個(gè)圖的twinx;
2、 Y軸顯示為%號(hào)的設(shè)置,通過(guò)set_yticklabels設(shè)置格式
3、 在圖示中添加箭頭和備注,揭示重要的信息

三、代碼

1.裝修貸轉(zhuǎn)化為同期房貸的利率變化圖代碼

畫(huà)了一個(gè)圖來(lái)展示裝修貸轉(zhuǎn)化為同期房貸的利率變化圖。
代碼如下:

import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as mtick from scipy.optimize import fsolve #定義基本參數(shù) benJin=300000 #本金30萬(wàn) nianXian=5 #貸款年限 zongYueShu=nianXian*12 #貸款總月份數(shù) FangDaiNianXian=5 #貸款年限 FangDaiZongYueShu=FangDaiNianXian*12 #貸款總月份數(shù)#房貸計(jì)算公式,輸入年利率,輸出每月還款額 def fangDaiJiSuan(fangDaiLiLv,tiQianHuanKuanYue):yueLiLv = fangDaiLiLv / 12 # 月利率meiYueHuanKuan = (benJin * yueLiLv * (1 + yueLiLv) ** FangDaiZongYueShu) / ((1 + yueLiLv) ** FangDaiZongYueShu - 1) #每月還款額print('每月房貸還款額度為:', meiYueHuanKuan)shiJiGuiHuanE = meiYueHuanKuan*tiQianHuanKuanYue #實(shí)際歸還額shengYuBenJin = benJin * ((1 + yueLiLv) ** tiQianHuanKuanYue) - meiYueHuanKuan * ((1 + yueLiLv) ** tiQianHuanKuanYue - 1) / yueLiLv #剩余本金print('房貸剩余本金:', shengYuBenJin)fangDaiZongHuan = shiJiGuiHuanE + shengYuBenJin # 房貸總還款金額print('房貸總計(jì)還款額為:', fangDaiZongHuan)return fangDaiZongHuan#信用卡利息計(jì)算公式,輸入月利率,輸出每月還款額 def xinYongKaJiSuan(yueLiXi,tiQianHuanKuanYue):meiYueliXi = benJin * yueLiXi # 信用卡月利息meiYueHuanBenJin = benJin / zongYueShu # 信用卡每月歸還本金meiYueHuanKuanZongE = meiYueliXi + meiYueHuanBenJin # 信用卡每月歸還額xinYongKaShiJiGuiHuan = meiYueHuanKuanZongE * tiQianHuanKuanYue #信用卡實(shí)際還款xinYongKaShengYuBenJin = benJin - meiYueHuanBenJin * tiQianHuanKuanYue #剩余本金的print('信用卡每月還款額:', meiYueHuanKuanZongE)print('信用卡剩余本金:', xinYongKaShengYuBenJin)huanKuanZongE = meiYueHuanKuanZongE * tiQianHuanKuanYue + xinYongKaShengYuBenJin #信用卡總計(jì)還款金額print('信用卡總計(jì)還款額為:', huanKuanZongE)return huanKuanZongE#定義差額函數(shù),也就是求非線性方程的解,輸入房貸年利率,輸出房貸和信用卡的還款差額 def chaE(x):##信用卡利息參數(shù)yueLiXi = 0.0028 # 信用卡月利率return fangDaiJiSuan(x,tiQianHuanKuanYue)-xinYongKaJiSuan(yueLiXi,tiQianHuanKuanYue)#主函數(shù) n = 60 #貸款總月份數(shù) tiQianHuanKuanYueList = np.arange(1,n+1,1) #提前還款月份 solveList = [] #求解得到的利率列表 for i in np.arange(1,n+1,1):tiQianHuanKuanYue = tiQianHuanKuanYueList[i-1]solve = fsolve(chaE,[0.5]) #求解房貸年利率solveList.append(solve.tolist())#打印求解結(jié)果print(solve)#驗(yàn)證結(jié)果是否真的是方程的解print(np.isclose(chaE(solve), [0.0],atol=1e-3)) #檢驗(yàn)解是否是符合方程組的近似解 print(solveList)plt.rcParams['font.sans-serif']=['SimHei'] #解決中文亂碼 plt.rcParams['axes.unicode_minus'] = False #ax = plt.figure(111) solveList2 = np.array(solveList).reshape((60,1)).tolist() print('solveList2) 為') print(solveList2) df = pd.DataFrame(solveList2,index=tiQianHuanKuanYueList) print(df) # you get ax from here ax = df.plot() type(ax) # matplotlib.axes._subplots.AxesSubplot# 為了讓Y軸顯示為百分?jǐn)?shù) vals = ax.get_yticks() ax.set_yticklabels(['{:,.2%}'.format(x) for x in vals]) plt.xlabel('5年期貸款提前歸還月份') plt.ylabel('轉(zhuǎn)換成同期房貸利率') fangdaililv = [0.0537]*n print(fangdaililv) plt.plot(tiQianHuanKuanYueList,fangdaililv) #房貸利率 fmt = '%.0f%%' # Format you want the ticks, e.g. '40%' yticks = mtick.FormatStrFormatter(fmt) vals = ax.get_yticks() #設(shè)置Y軸的格式 ax.set_yticklabels(['{:,.2%}'.format(x) for x in vals]) plt.legend(('裝修貸轉(zhuǎn)換利率','房貸利率')) plt.grid() tem = solveList2[24][0] #取最佳的還款年限的利率 tem=round(tem,4)*100 print('tem') print(tem) string = '最佳還款月在25月,轉(zhuǎn)換利率為:' + str(tem)+'%' #圖示標(biāo)注信息 print(string) #添加箭頭說(shuō)明 plt.annotate(string,xy=(25,solveList2[24][0]),xytext=(25*0.7,solveList2[24][0]*1.1), arrowprops=dict(arrowstyle="->",connectionstyle = "arc3,rad=.1")) #尋找最佳還款月份的利率 a=[25]*20 b=np.arange(0,0.06,0.003) b=b.reshape((20,1)) plt.plot(a,b) plt.ylim(0.02,0.065) plt.show()

對(duì)于Python知識(shí),本文用到了:
1、 Y軸顯示為%號(hào)的設(shè)置,通過(guò)set_yticklabels設(shè)置格式
2、 在圖示中添加箭頭和備注,揭示重要的信息

2.差額函數(shù)的生成圖示代碼

畫(huà)了一個(gè)差額函數(shù)的生成圖。
代碼如下:

import numpy as np import pandas as pd import matplotlib.pyplot as plt #定義基本參數(shù) benJin=300000 #本金30萬(wàn) FangDaiNianXian=5 #貸款年限 tiQianHuanKuanYue = np.arange(1,60,1) #提前還款月份 FangDaiZongYueShu=FangDaiNianXian*12 #貸款總月份數(shù) ##房貸計(jì)算參數(shù) fangDaiLiLv=0.0539 #房貸利率 yueLiLv=fangDaiLiLv/12 #月利率 ##房貸計(jì)算公式 meiYueHuanKuan=(benJin*yueLiLv*(1+yueLiLv)**FangDaiZongYueShu)/((1+yueLiLv)**FangDaiZongYueShu-1) print('每月房貸還款額度為:',meiYueHuanKuan) shiJiGuiHuanE = meiYueHuanKuan*tiQianHuanKuanYue #實(shí)際歸還額 shengYuBenJin = benJin*((1+yueLiLv)**tiQianHuanKuanYue) - meiYueHuanKuan*((1+yueLiLv)**tiQianHuanKuanYue-1)/yueLiLv print('房貸剩余本金:',shengYuBenJin) fangDaiZongHuan=meiYueHuanKuan*tiQianHuanKuanYue + shengYuBenJin #房貸總還款金額 print('房貸總計(jì)還款額為:',fangDaiZongHuan)XinYongKaNianXian = 5 zongYueShu=XinYongKaNianXian*12 #貸款總月份數(shù) ##信用卡利息計(jì)算參數(shù) yueLiXi = 0.0028 #信用卡月利率 meiYueliXi=benJin*yueLiXi #信用卡月利息 meiYueHuanBenJin = benJin/zongYueShu #信用卡每月歸還本金 meiYueHuanKuanZongE = meiYueliXi+meiYueHuanBenJin #信用卡每月歸還額 xinYongKaShiJiGuiHuan = meiYueHuanKuanZongE*tiQianHuanKuanYue xinYongKaShengYuBenJin = benJin - meiYueHuanBenJin*tiQianHuanKuanYue print('信用卡每月還款額:',meiYueHuanKuanZongE) print('信用卡剩余本金:',xinYongKaShengYuBenJin) huanKuanZongE = meiYueHuanKuanZongE*tiQianHuanKuanYue + xinYongKaShengYuBenJin #信用卡總計(jì)還款金額 print('信用卡總計(jì)還款額為:',huanKuanZongE)#兩種貸款歸還金額差額 chaE= huanKuanZongE-fangDaiZongHuan #信用卡比房貸多還款的金額 print('信用卡比房貸多還款金額:',chaE) print('差額最大出現(xiàn)在:',np.argmin(chaE)) #畫(huà)圖參數(shù) fig = plt.figure() ax1 = fig.add_subplot(111) ax1.bar(tiQianHuanKuanYue,chaE,color='deepskyblue',label='left') ax1.set_ylabel('裝修貸與房貸差額(元)') plt.xlabel('5年期貸款提前歸還月份') string = '最大的差額出現(xiàn)在25月,金額為:' + str(round(chaE[24],2)) plt.annotate(string,xy=(25,chaE[24]),xytext=(25*0.7,chaE[24]*1.1), arrowprops=dict(arrowstyle="->",connectionstyle = "arc3,rad=.1"))plt.grid() ax2 = ax1.twinx() ax2.scatter(tiQianHuanKuanYue,fangDaiZongHuan,c='blue') ax2.scatter(tiQianHuanKuanYue,huanKuanZongE,c='red',marker='*')ax2.set_title('裝修貸和房貸對(duì)比圖') plt.rcParams['font.sans-serif']=['SimHei'] #解決中文亂碼 plt.rcParams['axes.unicode_minus'] = False plt.legend(('房貸','裝修貸')) plt.ylabel('還款總額(元)') plt.grid() #plt.subplots_adjust(left=0.01) plt.show()

對(duì)于Python知識(shí),本文用到了:
1、 同一個(gè)坐標(biāo)X,左右兩邊Y軸分別畫(huà)兩個(gè)圖的twinx;

總結(jié)

以上是生活随笔為你收集整理的你真的认真想过了吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。