在 Julia 中计算 IRR

Calculating IRR in Julia

我可以使用

计算 NPV
tvmnpv(i,cfo,cfall)=begin
n=collect(1:length(cfall));
cfo + sum(cfall./(1+i).^n)
end

其中 cfo 是 t=0 时的初始现金流量,cfall 代表后续现金流量,i 是使用的贴现率。

但是,在给定现金流的情况下,我找不到计算 IRR 的方法。我相信 excel 使用滚动浏览可能值的函数,直到找到 cfo 加上贴现后的现金流量等于零的值。谁能指出我正确的方向?

所需输出的示例如下:

cfo=[-100];cfall=[30,30,30,30]

Out: 0.07713847

因此,内部收益率为 7.713847%。

感谢您的帮助。

计算 IRR is a Root-finding 问题(找到 NPV=0 的 i)。

进行此计算的一种方法是使用 Roots.jl 程序包 (Pkg.add("Roots")),如下所示:

julia> using Roots

julia> tvmnpv(i,cfo,cfall)=begin
         n=collect(1:length(cfall));
         cfo + sum(cfall./(1+i).^n)
       end
tvmnpv (generic function with 1 method)

julia> f(x)=tvmnpv(x, cfo, cfall)
f (generic function with 1 method)

julia> cfo=-100.0
-100.0

julia> cfall=[30, 30, 30, 30];

julia> fzero(f, [0.0, 1.0])
0.07713847295208355

可以更改间隔 [0.0, 1.0] 以获得更好的性能。

如果你不想安装包,我建议你实现Bisection方法,简单高效。

使用 Julia 版本 0.5.0 测试

ActuaryUtilities 软件包提供了一个 internal_rate_of_return(也称为 irr)函数。