App下載

python方法——現金流計算

猿友 2021-02-03 16:29:05 瀏覽數 (6395)
反饋

常用現金流的計算

1.固定現金流現值計算函數表達式:

PresentVal=pv(Rate,NumPeriods,Payment,ExtraPayment,Due) Rate:貼現率 NumPeriods:貼現周期 Payment 周期現金流 ExtraPayment:最后一次非周期現金流,函數默認為 0Due:現金流計息方式(0為周期末付息,1為周期初付息)PresentVal:現金流現值代碼如下:
import numpy as np
Facevalue=1000
# 債券付息(面值*利率),假設每年付息一次
Payment=0.05*Facevalue
# 市場利率
Rate=0.06
# 到期還本,ExtraPayment額外現金流為本金
ExtraPayment=Facevalue
# 債券期現為10年
NumPeriods=10
# 每年年末付息
Due=0
PresentVal=abs(np.pv(Rate,NumPeriods,Payment,ExtraPayment,Due))
print(PresentVal)  #該債券價格低于926.4,則被低估,高于926.4,則被高估

結果為:926.3991294858529

2.固定現金流終值計算函數

FutureVal=fv(Rate,NumPeriods,Payment,PresentVal,Due)
Rate:貼現率
NumPeriods:貼現周期
Payment 周期現金流
Due:現金流計息方式(0為周期末付息,1為周期初付息)
PresentVal:現金流現值 # FutureVal:現金流終值
代碼如下:

import numpy as np
Facevalue=1000
# 債券付息(面值*利率),假設每年付息一次
Payment=0.05*Facevalue
# 市場利率
Rate=0.06
# 到期還本,ExtraPayment額外現金流為本金
ExtraPayment=Facevalue
# 債券期現為10年
NumPeriods=10
# 每年年末付息
Due=0
FutureVal=abs(np.fv(Rate,NumPeriods,Payment,PresentVal,Due))
print(FutureVal)

結果如下:2318.079494238091

3.變化現金流計算

凈現值法(NPV)將現金流用必要收益率貼現計算 NPV 值,若 NPV>0,則可行,否則不可行內部收益率法假設 NPV=0,計算必要貼現率,若 IRR 大于必要收益率則可行,反之不可行凈現值 NPV 計算函數 PresentVal=npv(Rate,CashFlow)Rate:必要收益率CashFlow:現金流序列向量 PresentVal:現金流現值代碼如下:

import numpy as np
# 現金流
CashFlow=[-8000,2500.1500,3000,1000,2000]
# 利率
Rate=0.08
PresentVal1=-8000+2500/1.08+1500/1.08**2+3000/1.08**3+1000/1.08**4+2000/1.08**5
PresentVal1=np.npv(Rate,CashFlow)
print(PresentVal1)

結果如下:-849.137888777871

4. 內部收益率計算函數

Return=irr(CashFlow)Return :內部收益率代碼如下:

import numpy as np
CashFlow=[-8000,2500,1500,3000,1000,2000]
Return=np.round(np.irr(CashFlow),4) #round() 方法返回浮點數x的四舍五入值。如round(80.23456, 2) :  80.23
print(Return)

結果如下:0.0839

5. 年現金流計算

若投資100萬買房,還款期20年,每月還6000元,則貸款利率為多少?若改為每月還8000,貸款利率不變,則還款期限為多長?年金利率函數 rate Rate=rate(NumPeriods,Payment,PresentValue,FutureValue,Due) NumPeriods:現金流周期 Payment:現金流支出 FutureValue:現金流終值,函數默認為 0Due:現金流計息方式(0為周期末付息,1為周期初付息) PresentVal:現金流現值 Rate:利息率(貼現率)

代碼如下:

import numpy as np
# 貸款現值
PresentValue=1000000.0
# 每次還款金額
Payment=-6000.0
# 還款次數
NumPeriods=20*12
# 現金流終值為0
FutureValue=0
# 每周期還款一次,0為周期末付息
Due=0
# 調用rate函數
Rate=np.around(np.rate(NumPeriods,Payment,PresentValue,FutureValue),4)
print(Rate)

結果為:0.0032

繼續(xù)求解,

年金周期函數 nper NumPeriods=nper(Rate,Payment,PresentValue,fv,Due)Rate:貼現率 Payment:現金流收入(支出) PresentValue:現金流現值fv:現金流終值,默認值為 0Due:現金流計息方式 NumPeriods:現金流周期

import numpy as np
# 貸款現值
PresentValue=1000000.0
# 每次還款金額
Payment=-8000.0
# 現金流終值為0
FutureValue=0
# 每周期還款一次,0為周期末付息
Due=0
# 月利率,銀行的現行計息方式
Rate=0.0389/12
# 調用nper計算還款周期
NumPeriods=np.nper(Rate,Payment,PresentValue,fv=0,when='end')
print(NumPeriods/12)

結果如下:13.377524805437297


0 人點贊