python在财务分析的应用,用python做财务数据分析

本篇文章给大家谈谈python在财务分析的应用,以及用python做财务数据分析,希望对各位有所帮助,不要忘了收藏本站喔。

将一项分析工作划分为若干个可操作的小部分。

根据操作顺序进行分解

  1. 确定工作流程
  2. 按工作流程将复杂工作划分成简单的部分
  3. 对各个部分进行程序设计,并一步步执行,并加以注释
  4. 组装成完整的程序

例1 分析一个项目的IRR

  1. 首先确定IRR计算步骤,计算NPV和期初投入相等时的收益率即为内部收益率IRR
  2. 先做出货币的时间价值的计算方法,即求现金流的现值
  3. 将计算NPV的方法打包成函数
  4. 计算循环无限逼近IRR

例2 计算现金流的现值

假设投资者未来10年每年收到10000元的退休金,期间贴现率为5%,请问这笔投资的现值为?

很明显,这里可以使用Python的循环求和的方法,即计算每一期的现金流,将他们以次加起来;

首先需要写出每一期i(i从0开始)现金流的计算方法 cf_i = 10000/(1+5/100)**i;

在循环开始前定义一个储存总现值的变量total,每一期total=total+cf i;

把各部分组成完整循环如下:

def discount(n,cp,r)
    total = 0

     for i in range(n):

        cf_i = cp/(1 + r)**(i + 1)

        total = total + cf_i

    print(total)

discount(10,10000,0.05)

代码运行结果如下:

例3 净现值分析投资项目

净现值时未来现金流(带正负号表明其流入流出方向)贴现后的加总python简单代码画爱心

假设贴现率为5%,有A、B两个项目,前期均需投入120万,A项目第一年至第五年分别收入10、30、50、40、10万,而项目B第一至五年分别收入30、40、40、20、10万,项目A和项目B那个投资价值高?

判断哪个项目的投资价值更高,可以考虑分别计算2个项目的净现值。

首先考虑项目计算的输入为贴现率、现金流,输出为净现值。项目的现金流可以用列表表示,项目的总值可以用类似例1中的循环表示。定义一个函数,输入贴现率和现金流,输出为净现值。

def npv_function(rate,cashflows):
    total = 0
    for i, cashflow in enumerate(cashflows):
        #(0,-120),(1,10),(2,30)    
        
        total = total +cashflow /(1 + rate)**i
    return total

cashflows_A = [-120,10,30,50,40,10]
cashflows_B = [-120,30,40,40,20,10]
net_value_A = npv_f(0.05,cashflows_A)
net_value_B = npv_f(0.05,cashflows_B)

print(net_value_A,net_value_B)

代码运行结果如下:

 例4 IRR方法分析投资项目

投资项目的净现值为0时,其贴现率的值即为内部回报率IRR。

假设贴现率为5%,有A、B两个项目,前期均需揉入120万,A项目第一年至第五年分别收入10、30、50、40、10万,而项目B第一至五年分别收入30、40、40、20、10万,项目A和B哪个投资价值高?

判断哪个项目的投资价值更高,可以考虑分别计算2个项目的IRR并进行对比。

这里可以考虑调用例2中已经写好的函数,简化IRR的计算。同时采用迭代的思路对投资项目的IRR进行计算。

def irr_f(cashflows,iteration=10000):
    rate_d = 0
    rate_u = 1
    rate = (rate_d + rate_u)/2
    npv = npv_f(rate,cashflows)
    while abs(npv)>0.0001:
        if npv > 0:
            rate_d = rate
            rate = (rate_u+ rate_d)/2
            npv = npv_f(rate,cashflows)
        else:
            rate_u = rate
            rate(rate_u + rate_d)/2
            npv = npv(rate,cashflows)
    return rate


irr_f(cashflows_A,iterations=10000)
irr_f(cashflows_B,iterations=10000)

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值