我可以使用
计算NPVtvmnpv(i,cfo,cfall)=begin
n=collect(1:length(cfall));
cfo + sum(cfall./(1+i).^n)
end
其中cfo
是t = 0时的初始现金流,cfall
表示以下现金流,i
是使用的折现率。
但是,鉴于现金流,我无法找到计算内部收益率的方法。我相信excel使用一个滚动可能值的函数,直到找到cfo加上折扣后的现金流等于零的值。谁能指出我正确的方向?
所需输出的示例如下:
cfo=[-100];cfall=[30,30,30,30]
Out: 0.07713847
因此,内部收益率为7.713847%。
感谢您的帮助。
答案 0 :(得分:5)
计算IRR是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 Version 0.5.0进行测试
答案 1 :(得分:1)
ActuaryUtilities软件包提供了internal_rate_of_return
(也别名为irr
)功能。