告诉你怎么用Python实现年金现值计算
每天财务转一转
告诉你怎么用Python实现年金现值计算
内容导入:
大家好,这里是每天财务转一转。Python的应用领域现在非常的广泛,随着会计与财务智能化的步伐加快,Python数据分析在财务分析中会占有一席之地。
形如SPSS与SAS这样的可视化数据分析,是没有进行财务专业方向的模块的,excel中虽然有财务函数,但是使用不太灵活,也不能用于系统开发。如果你是R语言的使用者,可以忽略此类型内容,这方面,R语言与Python语言功能大致相同。
小神马目前准备了一系列财务运算的内容,给大家做分享。今天准备给大家介绍普通与预付年金现值的概念与计算。
概念介绍:
年金现值就是在已知等额收付款金额未来本利、利率和计息期数时,考虑货币时间价值,计算出的这些收付款到现在的等价票面金额。
年金现值也可分为:普通年金现值、先付年金现值、递延年金现值、永续年金现值。
年金是指一定期间内每期等额收付的款项。因此,可以说年金是复利的产物,是复利的一种特殊形式。
普通年金是指每期期末收付款项的年金,例如采用直线法计提的单项固定资产的折旧(折旧总额会随着固定资产数量的变化而变化,不是年金,但就单项固定资产而言,其使用期内按直线法计提的折旧额是一定的)、一定期间的租金(租金不变期间)、每年员工的社会保险金(按月计算,每年7月1日到次年6月30日不变)、一定期间的贷款利息(即银行存贷款利率不变且存贷金额不变期间,如贷款金额在银行贷款利率不变期间有变化可以视为多笔年金)等。
先付年金是指每期期初收付款项的年金,例如先付钱后用餐的餐厅,每一道菜(包括米饭、面、饺子和馄饨等)分别出来之后都是先付年金。
普通年金现值
普通年金现值是以计算期期末为基准,在给定投资报酬率下按照货币时间价值计算出的未来一段期间内每年或每月收取或给付的年金现金流的折现值之和。类似普通年金终值,计算普通年金现值时,同样要考虑到现金流是期初年金还是期末年金。
年金现值系数公式:PVA/A =1/i-1/[i (1+i)^n]。
其中i表示报酬率,n表示期数,PVA表示现值,A表示年金。
举例:比如你在银行里面每年年末存入1200元,连续5年,年利率是10%的话,你这5年所存入资金的现值
=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
先付年金现值
先付年金现值:是其最后一期期末时的本利和,相当于各期期初等额收付款项的复利现值之和。
n期先付年金与n期普通年金的收付款次数相同,但由于付款时间不同,n期先付年金现值比n期普通年金的现值多计算一期利息。因此在n期普通年金现值的基础上乘以(1+i)而将分母加1就得出n期先付年金的现值了,公式为:
记作P(A,i,n)=A·[(P/A,i,n-1)+1]
例如:某公司租用某设备,每年年初需要支付租金100元,年利率为10%,问5年内应支付的租金总额的现值是多少?
实现过程:
1、自定义计算一系列现金流现值(如年金)的函数def pv_f(c,r,n,when=1):
'''
c代表每期现金流,可以每期不一样,如c=[100,90,80,120]
r贴现率,也可以每期不一样,如相应的,r=[2%,3%,2%,4%]
n为期数
when=1表示期末计数,默认,即普通年金 when=0表示期初计数,即预付年金 '''
import numpy as np #导入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、应用实例1:有个五年的普通年金年金,每年可获得20000元,假设贴现率为5%,现值是多少?c=20000
r=0.05
n=5
3、调用前文定义的函数pv_f(c,r,n,when=1)
pv1=pv_f(c,r,n,when=1)
print('普通年金现值(年末):%.2f'% pv1)
#如果是预付年金,则when=0
pv2=pv_f(c,r,n,when=0)
print('预付年金现值(年初):%.2f' % pv2)
4、调用numpy内部函数年金计算包
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、输出结果
普通年金现值(年末):86589.53
预付年金现值(年初):90919.01
numpy自带公式计算(年末):86589.53
numpy自带公式计算(年初):90919.01
各位小伙伴,今天就分享到这里,本次介绍了普通年金与预付的概念与计算方式。我们可以通过改变资金数量、利息与年限,实现所有普通年金与预付年金的计算,这就是Python的魅力。