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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你真的认真想过了吗?

發布時間:2023/12/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你真的认真想过了吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

貸的款,遲早是要還的。 ------ 愛心覺羅 . 輯 . 蝦扯

文章目錄

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


前言

昨天用Python簡單的計算了裝修貸和房貸的比較關系,我們的結論是裝修貸會比同期房貸利率高,還得到了裝修貸的年利率簡單的估算關系。我們初步的結論是裝修貸沒有房貸劃算。

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


為了簡化問題,我們的目標函數重新定義

一、重新建模目標函數

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

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

怎么回事呢?仔細想想就知道,裝修貸因為算利息時用的初始本金B0來算,假設你還到最后一個月,你的本金其實都快沒有了,然而你的利息還是用的最初貸款本金30萬來計算,肯定吃虧啊。所以,裝修貸是越往后,年化利率越高。具體變化趨勢我畫了圖來展示。

二、繪制模型圖

1.裝修貸轉化為同期房貸的利率變化圖

我畫了一個圖來展示裝修貸轉化為同期房貸的利率變化圖。(代碼較長,最后附)

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

2.還款差額函數圖

把期數m設為自變量,得到的差額函數為下圖。差額函數ChaE和提前還款期數m的關系圖如下:

藍色柱狀圖是差額。可以看出50期之前,裝修貸都比房貸優惠,50期后,裝修貸比房貸貴。
我們最能省到錢的地方是在25個月,能夠節約到6594.35元的利息。所以我清華高中同學說法是正確的。
而25個月,對應的裝修貸轉化的年利率是多少呢?這又是個非線性方程的求解,我們需要使用到scipy.optimize 中的fsolve,專門來解這些高維方程的。

3.最佳還款月的利率

使用到scipy.optimize 中的fsolve求解25個月時裝修貸轉化的年利率

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


結論

裝修貸真的可以用來還25個月房貸!!!
結果挺出乎預料的,所以當我們感嘆錢太不禁花的時候,聰明的人總能在任何時候看到可操作的空間。
感謝我清華的高中同學,讓我們再次認真審視了這個現實中的數學問題。我也順手拿出了我的POS機,準備滴滴滴。。。

知識圖譜

對于Python知識,本文用到了:
1、 同一個坐標X,左右兩邊Y軸分別畫兩個圖的twinx;
2、 Y軸顯示為%號的設置,通過set_yticklabels設置格式
3、 在圖示中添加箭頭和備注,揭示重要的信息

三、代碼

1.裝修貸轉化為同期房貸的利率變化圖代碼

畫了一個圖來展示裝修貸轉化為同期房貸的利率變化圖。
代碼如下:

import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as mtick from scipy.optimize import fsolve #定義基本參數 benJin=300000 #本金30萬 nianXian=5 #貸款年限 zongYueShu=nianXian*12 #貸款總月份數 FangDaiNianXian=5 #貸款年限 FangDaiZongYueShu=FangDaiNianXian*12 #貸款總月份數#房貸計算公式,輸入年利率,輸出每月還款額 def fangDaiJiSuan(fangDaiLiLv,tiQianHuanKuanYue):yueLiLv = fangDaiLiLv / 12 # 月利率meiYueHuanKuan = (benJin * yueLiLv * (1 + yueLiLv) ** FangDaiZongYueShu) / ((1 + yueLiLv) ** FangDaiZongYueShu - 1) #每月還款額print('每月房貸還款額度為:', meiYueHuanKuan)shiJiGuiHuanE = meiYueHuanKuan*tiQianHuanKuanYue #實際歸還額shengYuBenJin = benJin * ((1 + yueLiLv) ** tiQianHuanKuanYue) - meiYueHuanKuan * ((1 + yueLiLv) ** tiQianHuanKuanYue - 1) / yueLiLv #剩余本金print('房貸剩余本金:', shengYuBenJin)fangDaiZongHuan = shiJiGuiHuanE + shengYuBenJin # 房貸總還款金額print('房貸總計還款額為:', fangDaiZongHuan)return fangDaiZongHuan#信用卡利息計算公式,輸入月利率,輸出每月還款額 def xinYongKaJiSuan(yueLiXi,tiQianHuanKuanYue):meiYueliXi = benJin * yueLiXi # 信用卡月利息meiYueHuanBenJin = benJin / zongYueShu # 信用卡每月歸還本金meiYueHuanKuanZongE = meiYueliXi + meiYueHuanBenJin # 信用卡每月歸還額xinYongKaShiJiGuiHuan = meiYueHuanKuanZongE * tiQianHuanKuanYue #信用卡實際還款xinYongKaShengYuBenJin = benJin - meiYueHuanBenJin * tiQianHuanKuanYue #剩余本金的print('信用卡每月還款額:', meiYueHuanKuanZongE)print('信用卡剩余本金:', xinYongKaShengYuBenJin)huanKuanZongE = meiYueHuanKuanZongE * tiQianHuanKuanYue + xinYongKaShengYuBenJin #信用卡總計還款金額print('信用卡總計還款額為:', huanKuanZongE)return huanKuanZongE#定義差額函數,也就是求非線性方程的解,輸入房貸年利率,輸出房貸和信用卡的還款差額 def chaE(x):##信用卡利息參數yueLiXi = 0.0028 # 信用卡月利率return fangDaiJiSuan(x,tiQianHuanKuanYue)-xinYongKaJiSuan(yueLiXi,tiQianHuanKuanYue)#主函數 n = 60 #貸款總月份數 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())#打印求解結果print(solve)#驗證結果是否真的是方程的解print(np.isclose(chaE(solve), [0.0],atol=1e-3)) #檢驗解是否是符合方程組的近似解 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軸顯示為百分數 vals = ax.get_yticks() ax.set_yticklabels(['{:,.2%}'.format(x) for x in vals]) plt.xlabel('5年期貸款提前歸還月份') plt.ylabel('轉換成同期房貸利率') 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() #設置Y軸的格式 ax.set_yticklabels(['{:,.2%}'.format(x) for x in vals]) plt.legend(('裝修貸轉換利率','房貸利率')) plt.grid() tem = solveList2[24][0] #取最佳的還款年限的利率 tem=round(tem,4)*100 print('tem') print(tem) string = '最佳還款月在25月,轉換利率為:' + str(tem)+'%' #圖示標注信息 print(string) #添加箭頭說明 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()

對于Python知識,本文用到了:
1、 Y軸顯示為%號的設置,通過set_yticklabels設置格式
2、 在圖示中添加箭頭和備注,揭示重要的信息

2.差額函數的生成圖示代碼

畫了一個差額函數的生成圖。
代碼如下:

import numpy as np import pandas as pd import matplotlib.pyplot as plt #定義基本參數 benJin=300000 #本金30萬 FangDaiNianXian=5 #貸款年限 tiQianHuanKuanYue = np.arange(1,60,1) #提前還款月份 FangDaiZongYueShu=FangDaiNianXian*12 #貸款總月份數 ##房貸計算參數 fangDaiLiLv=0.0539 #房貸利率 yueLiLv=fangDaiLiLv/12 #月利率 ##房貸計算公式 meiYueHuanKuan=(benJin*yueLiLv*(1+yueLiLv)**FangDaiZongYueShu)/((1+yueLiLv)**FangDaiZongYueShu-1) print('每月房貸還款額度為:',meiYueHuanKuan) shiJiGuiHuanE = meiYueHuanKuan*tiQianHuanKuanYue #實際歸還額 shengYuBenJin = benJin*((1+yueLiLv)**tiQianHuanKuanYue) - meiYueHuanKuan*((1+yueLiLv)**tiQianHuanKuanYue-1)/yueLiLv print('房貸剩余本金:',shengYuBenJin) fangDaiZongHuan=meiYueHuanKuan*tiQianHuanKuanYue + shengYuBenJin #房貸總還款金額 print('房貸總計還款額為:',fangDaiZongHuan)XinYongKaNianXian = 5 zongYueShu=XinYongKaNianXian*12 #貸款總月份數 ##信用卡利息計算參數 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 #信用卡總計還款金額 print('信用卡總計還款額為:',huanKuanZongE)#兩種貸款歸還金額差額 chaE= huanKuanZongE-fangDaiZongHuan #信用卡比房貸多還款的金額 print('信用卡比房貸多還款金額:',chaE) print('差額最大出現在:',np.argmin(chaE)) #畫圖參數 fig = plt.figure() ax1 = fig.add_subplot(111) ax1.bar(tiQianHuanKuanYue,chaE,color='deepskyblue',label='left') ax1.set_ylabel('裝修貸與房貸差額(元)') plt.xlabel('5年期貸款提前歸還月份') string = '最大的差額出現在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('裝修貸和房貸對比圖') 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()

對于Python知識,本文用到了:
1、 同一個坐標X,左右兩邊Y軸分別畫兩個圖的twinx;

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。