投資專案初期投入資本 12369 圓, 之後持續兩期再投入相同資金 12369 圓, 最後一期將專案賣掉後, 收回資金 37739 圓, 而投資期間回收的各期利潤分別是: 194, 391, 594, 606, 618, 1378, 1379 圓, 試計算該專案的 IRR
// irr.js
maxrate = 100/100 //折扣率上限 100%
minrate = 0.0 //折扣率下限
C0 = 12369 //初期成本
CT = [-C0, 194-C0, 391-C0, 594, 606, 618, 1378, 1379 + 37739] //現金流量矩陣(CFM)
k = 1000 //防止無限回圈計數器
while (k-- > 0) {
IRR = (maxrate + minrate) / 2 //取折扣率上下限的中間值估算 IRR
NPV = 0.0 //因 NPV 與 r 成反比關係, 為了讓 NPV 下降需提高 r, 反之使 NPV 上升則降低 r
for (i in CT) NPV = NPV + CT[i]/((1+IRR)**i) // 藉由累加 CFM, 計算 NPV
if ( Math.abs(NPV) < 1e-6 || (maxrate - minrate) < 1e-6) break;//上下限逼近時離開
if( NPV > 0 ) minrate = IRR //為了讓 NPV 下降為零, 修正下限以提升 IRR 估算
else maxrate = IRR //為了讓 NPV 上升為零, 修正上限以降低 IRR 估算
}
console.log("投資成本=" + C0*3 + "\tNPV=" + NPV + "\tIRR: " + IRR*100 + "%");
執行 js irr.js 看輸出結果:
投資成本=37107 NPV=-0.08050183637533337 IRR:2.547025680541992%
上述 NPV 計算結果雖然不等於零, 但很接近零, 因此說該折扣率(discount rate)非常近似 IRR
沒有留言:
張貼留言