我可以使用计算 NPV
tvmnpv(i,cfo,cfall)=begin
n=collect(1:length(cfall));
cfo + sum(cfall./(1+i).^n)
end
哪里
cfo
是 t=0 时的初始现金流量,cfall
代表以下现金流和i
是使用的贴现率。但是,鉴于现金流,我找不到计算内部 yield 的方法。我相信 excel 使用一个函数来滚动浏览可能的值,直到找到 cfo 加上贴现后的现金流等于零的值。任何人都可以指出我正确的方向吗?
所需输出的示例如下:
cfo=[-100];cfall=[30,30,30,30]
Out: 0.07713847
因此,内部 yield 为 7.713847%。
感谢您的帮助。
最佳答案
计算 IRR是 Root-finding问题(找到 i
,NPV=0)。
进行此计算的一种方法是使用 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 版测试
关于julia - 在 Julia 中计算 IRR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403344/