Python for PP

投资回收期(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

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权,转载请注明出处。
文章名称:《Python for PP》
文章来自:泰恩数据
文章链接:https://tyne.cc/611.html
本站资源仅供个人学习使用,请勿用于商业用途。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址