PHP IRR(内部收益率)财务函数

Tom*_*lez 3 php financial

如何在 PHP 中实现 MS Excel 的“IRR()”公式?

我尝试了本页中提到的算法,但结果不准确,而且速度非常慢。

Tom*_*lez 5

经过一段时间的研究后,我最终得到了下面复制的函数。

正是基于这个问题

function IRR($investment, $flow, $precision = 0.001) {
    $min = 0;
    $max = 1;
    $net_present_value = 1;
    while(abs($net_present_value - $investment) > $precision) {
        $net_present_value = 0;
        $guess = ($min + $max) / 2;
        foreach ($flow as $period => $cashflow) {
            $net_present_value += $cashflow / (1 + $guess) ** ($period + 1);
        }
        if ($net_present_value - $investment > 0) {
            $min = $guess;
        } else {
            $max = $guess;
        }
    }
    return $guess * 100;
}
Run Code Online (Sandbox Code Playgroud)

  • 您总是可以查看[PHPExcel 中的实现](https://github.com/PHPOffice/PHPExcel/blob/1.8/Classes/PHPExcel/Calculation/Financial.php#L1329) (4认同)