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))