割引現在価値を求める

なんとなく利息法の割引計算の式を書いてみた。電卓だと解けないんで問題文に書いてあって、割引現在価値は現価係数表で求めるやつ。

#!/usr/bin/env perl -w
# risokuhou_test.pl
# -*- Mode: Perl; coding: shift_jis -*-
# for Perl 5 or later only.
#
# 958, 766 = 30, 000 / (1 + r)
#          + 30, 000 / (1 + r) * (1 + r)
#          + 30, 000 + 100, 000 / (1 + r) * (1 + r) * (1 + r)
# となるr(実効利子率)の値を求める。
#
use strict;
use warnings 'all';

my $ganpon  = 1_000_000;
my $coupon  = 0.03;             # クーポン利子率
my $hakkou_kagaku = 958_766;
my $r = 0.001;
my $PV = $ganpon;               # とりあえず元本を入れておく

while ($hakkou_kagaku - $PV < 0) {

    # 割引計算式
    $PV = (
        (($ganpon * $coupon) / (1 + $r)) +
        (($ganpon * $coupon) / ((1 + $r) * (1 + $r))) +
        (($ganpon * $coupon + $ganpon) / ((1 + $r) * (1 + $r) * (1 + $r)))
        );
    printf ("r = %.1f PV = %7d \n", $r * 100, $PV);
    $r = $r + 0.001;
}

# risokuhou_test.pl ends here.

結果は、

r = 0.1 PV = 1086826 
r = 0.2 PV = 1083665 

(ひたすら0.1刻みで続く)

r = 4.4 PV =  961441 
r = 4.5 PV =  958765 

となった。