FV(annuity)终值=本利和
PV(annuity)现值=
n=收付次数
r=利率
A是年金,就是定期给的钱的数量
普通年金:每期最后收钱
预付年金:每期开始的时候收钱
普通年金现值和终值的计算即
将每一次的收的钱按复利计算现值或者终值再求和
numpy的使用方法
Case1 计算现金流终值与现值
import numpy as np
n=np.arange(1,10)#左闭右开顺序的一个List
#list与list之间可以直接应用加减乘除
#计算现值
def pv_f(c,r,n,op):
'''
c代表每期现金流,可以每期不一样
r贴现率,也可以每期不一样
n为期数
op=1表示期末计数,默认,即普通年金
op=0表示期初计数,即预付年金
'''
import numpy as np # 导入numpy库
c=np.array(c)
r=np.array(r)
if op==1:
n=np.arange(1,n+1)
else:
n=np.arange(0,n)
pv=c/(1+r)**n
return pv.sum()
#将算现值和终值合并成一个值
def pv_f(c,r,n,op=1,fv=0):
'''
op继续用来判断是否是普通或者预付年金
c代表每期现金流,可以每期不一样
r贴现率,也可以每期不一样
n为期数
fv=0是现值 fv=1是终值
'''
import numpy as np # 导入numpy库
c=np.array(c)
r=np.array(r)
if fv==0:
if op==1:
n=np.arange(1,n+1)
else:
n=np.arange(1,n)
pv=c/(1+r)**n
return pv.sum()
else:
if op==1:
n=sorted(np.arange(0,n),reverse=1)
else:
n=sorted(np.arange(1,n+1),reverse=1)
fv=c*(1+r)**n
return fv.sum()
c=[100,100,110,90]
r=[0.01,0.01,0.02,0.03]
print(pv_f(c,r,4,1))
print(pv_f(c,r,4,1,0))