每天財務(wù)轉(zhuǎn)一轉(zhuǎn)
告訴你怎么用Python實現(xiàn)年金現(xiàn)值計算
內(nèi)容導(dǎo)入:
大家好,這里是每天財務(wù)轉(zhuǎn)一轉(zhuǎn)。Python的應(yīng)用領(lǐng)域現(xiàn)在非常的廣泛,隨著會計與財務(wù)智能化的步伐加快,Python數(shù)據(jù)分析在財務(wù)分析中會占有一席之地。
形如SPSS與SAS這樣的可視化數(shù)據(jù)分析,是沒有進(jìn)行財務(wù)專業(yè)方向的模塊的,excel中雖然有財務(wù)函數(shù),但是使用不太靈活,也不能用于系統(tǒng)開發(fā)。如果你是R語言的使用者,可以忽略此類型內(nèi)容,這方面,R語言與Python語言功能大致相同。
小神馬目前準(zhǔn)備了一系列財務(wù)運算的內(nèi)容,給大家做分享。今天準(zhǔn)備給大家介紹普通與預(yù)付年金現(xiàn)值的概念與計算。
概念介紹:
年金現(xiàn)值就是在已知等額收付款金額未來本利、利率和計息期數(shù)時,考慮貨幣時間價值,計算出的這些收付款到現(xiàn)在的等價票面金額。
年金現(xiàn)值也可分為:普通年金現(xiàn)值、先付年金現(xiàn)值、遞延年金現(xiàn)值、永續(xù)年金現(xiàn)值。
年金是指一定期間內(nèi)每期等額收付的款項。因此,可以說年金是復(fù)利的產(chǎn)物,是復(fù)利的一種特殊形式。
普通年金是指每期期末收付款項的年金,例如采用直線法計提的單項固定資產(chǎn)的折舊(折舊總額會隨著固定資產(chǎn)數(shù)量的變化而變化,不是年金,但就單項固定資產(chǎn)而言,其使用期內(nèi)按直線法計提的折舊額是一定的)、一定期間的租金(租金不變期間)、每年員工的社會保險金(按月計算,每年7月1日到次年6月30日不變)、一定期間的貸款利息(即銀行存貸款利率不變且存貸金額不變期間,如貸款金額在銀行貸款利率不變期間有變化可以視為多筆年金)等。
先付年金是指每期期初收付款項的年金,例如先付錢后用餐的餐廳,每一道菜(包括米飯、面、餃子和餛飩等)分別出來之后都是先付年金。
普通年金現(xiàn)值
普通年金現(xiàn)值是以計算期期末為基準(zhǔn),在給定投資報酬率下按照貨幣時間價值計算出的未來一段期間內(nèi)每年或每月收取或給付的年金現(xiàn)金流的折現(xiàn)值之和。類似普通年金終值,計算普通年金現(xiàn)值時,同樣要考慮到現(xiàn)金流是期初年金還是期末年金。
年金現(xiàn)值系數(shù)公式:PVA/A =1/i-1/[i (1+i)^n]。
其中i表示報酬率,n表示期數(shù),PVA表示現(xiàn)值,A表示年金。
舉例:比如你在銀行里面每年年末存入1200元,連續(xù)5年,年利率是10%的話,你這5年所存入資金的現(xiàn)值
=1200/(1+10%)+1200/(1+10%)2+1200/(1+10%)3+1200/(1+10%)4+1200/(1+10%)5= 1200*[1-(1+10%)-5]/10%=1200*3.7908=4548.96
先付年金現(xiàn)值
先付年金現(xiàn)值:是其最后一期期末時的本利和,相當(dāng)于各期期初等額收付款項的復(fù)利現(xiàn)值之和。
n期先付年金與n期普通年金的收付款次數(shù)相同,但由于付款時間不同,n期先付年金現(xiàn)值比n期普通年金的現(xiàn)值多計算一期利息。因此在n期普通年金現(xiàn)值的基礎(chǔ)上乘以(1+i)而將分母加1就得出n期先付年金的現(xiàn)值了,公式為:
記作P(A,i,n)=A·[(P/A,i,n-1)+1]
例如:某公司租用某設(shè)備,每年年初需要支付租金100元,年利率為10%,問5年內(nèi)應(yīng)支付的租金總額的現(xiàn)值是多少?
實現(xiàn)過程:
1、自定義計算一系列現(xiàn)金流現(xiàn)值(如年金)的函數(shù)def pv_f(c,r,n,when=1):
'''
c代表每期現(xiàn)金流,可以每期不一樣,如c=[100,90,80,120]
r貼現(xiàn)率,也可以每期不一樣,如相應(yīng)的,r=[2%,3%,2%,4%]
n為期數(shù)
when=1表示期末計數(shù),默認(rèn),即普通年金 when=0表示期初計數(shù),即預(yù)付年金 '''
import numpy as np #導(dǎo)入numpy庫
c=np.array(c)
r=np.array(r)
if when==1:
n=np.arange(1,n+1)
else:
n=np.arange(0,n)
pv=c/(1+r)**n
return pv.sum()
2、應(yīng)用實例1:有個五年的普通年金年金,每年可獲得20000元,假設(shè)貼現(xiàn)率為5%,現(xiàn)值是多少?c=20000
r=0.05
n=5
3、調(diào)用前文定義的函數(shù)pv_f(c,r,n,when=1)
pv1=pv_f(c,r,n,when=1)
print('普通年金現(xiàn)值(年末):%.2f'% pv1)
#如果是預(yù)付年金,則when=0
pv2=pv_f(c,r,n,when=0)
print('預(yù)付年金現(xiàn)值(年初):%.2f' % pv2)
4、調(diào)用numpy內(nèi)部函數(shù)年金計算包
import numpy as np
print('numpy自帶公式計算(年末):{:.2f}'.format(np.pv(r,5,-c),when=0))
print('numpy自帶公式計算(年初):{:.2f}'.format(np.pv(r,5,-c,when=1)))
5、輸出結(jié)果
普通年金現(xiàn)值(年末):86589.53
預(yù)付年金現(xiàn)值(年初):90919.01
numpy自帶公式計算(年末):86589.53
numpy自帶公式計算(年初):90919.01
各位小伙伴,今天就分享到這里,本次介紹了普通年金與預(yù)付的概念與計算方式。我們可以通過改變資金數(shù)量、利息與年限,實現(xiàn)所有普通年金與預(yù)付年金的計算,這就是Python的魅力。
聯(lián)系客服