投资回收期(Payback Period)的计算
投资回收期的计算分为两种情况:
1. 各期经营净现金流量相等
\footnotesize PP=\frac{初始投资}{经营净现金流量}
2. 各期经营净现金流量不相等
\footnotesize PP=累计净现金流量第一次出现正值的年份-1+\frac{|上年累计净现金流量|}{当年经营净现金流量}
def pp_f(cashflows, rate=0, option=0):
"""
计算投资回收期
参数:
cashflows 现金流量列表,例如[-1000,200,300,400,500,600]
rate 贴现率
option 0为静态回收期,1为动态回收期
"""
if option==0:
values=cashflows
if option==1:
values=[cashflow/(1+rate)**n for n, cashflow in enumerate(cashflows)]
#计算累计现金流量或累计现金流量现值
acc_values=[sum(values[0:n+1]) for n in range(len(values))]
#print(acc_values)
if acc_values[0]<0:
#初始投资必须为负
#flag为判断累计值变化的符号
flag=-1
n=-1
#获得累计值第一次出现0或正值的期数
while flag<0:
n+=1
#如果索引超过列表限度,则没有回收期
if n>len(acc_cashflows)-1:
print("没有回收期!")
return None
else:
flag=acc_values[n]
if flag==0:
pp=n
#print(flag)
print("回收期为:",pp)
return pp
if flag>0:
#print(flag)
pp=n-1+abs(acc_values[n-1])/values[n]
print("回收期为:",pp)
return pp
else:
print("初始投资必须为负!")
return None
举例:
help(pp_f)
Help on function pp_f in module main:
pp_f(cashflows, rate=0, option=0)
计算投资回收期
参数:
cashflows 现金流量列表,例如[-1000,200,300,400,500,600]
rate 贴现率
option 0为静态回收期,1为动态回收期
cashflows=[-1000, 700, 200, 400, 100, 300]
pp_f(cashflows, 0.15,1)
回收期为: 2.9128124999999994