[Python] 現在割引価値

現在割引価値

割引現在価値(わりびきげんざいかち)とは、将来に受け取れる価値が、もし現在受け取れるとしたらどの程度の価値をもつかを表すもの。たとえば利率が5%のとき、1年後の105万円の割引現在価値は100万円となる。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

現在持っているお金と将来持っているお金では価値が異なります。

例えば、余命が半年しかない場合、1年後の1000万円は無価値です。

一般的に、現在価値は将来価値より高いです。

もし寿命が無限だとしても、「利率」を考えることで、現在の価値と将来の価値を比較することができます。

例えば、100万円投資すると1年後に必ず120万円になって償還される国債があるとすると、現在の100万円の価値と1年後の 120万円の価値は同じである、同じことの言いかえですが、1年後の120万円は割り引かれて現在の価値は100万円である、考えることができます。

このように、将来受け取れる価値が現在ではどれぐらいなのかを利率を使い割引いて計算した価値を、現在割引価値と言います。

離散的に考える現在価値/将来価値

現在価値を Present Value \(PV\) 利率を \(r\) と考えると、\(n\)年後の将来価値 Future Value \(FV\) を以下のように表すことができます。

$$ FV = PV {(1 + r)}^n $$

現在価値 Present Value \(PV\) は、将来価値を用いて以下のように表せます。

$$ PV = \displaystyle \frac{ FV }{ {(1 + r)}^n } $$

連続的に考える現在価値/将来価値

1 連続時間のもとでの複利計算または割り引きについて

微分方程式を使い連続的に現在価値/将来価値を考えます。

\(x(t)\) をある時点\(t\)での価値とすると、以下のように立式できます。

$$ x(t + dt) – x(t) = \frac {dx(t)}{dt} dt $$

また、単位時間当たりの利率\(r\)を考えて、以下のように立式できます。

$$ x(t + dt) – x(t) = r x(t) dt $$

よって、以下の微分方程式が得られます。

$$ \frac {dx(t)}{dt} dt = r x(t) dt $$

$$ \frac {dx(t)}{dt} = r x(t) $$

この微分方程式を解くと、以下のようになり、将来価値を求めることができます。

微分方程式

$$ FV = x(0) \cdot e^{r t} $$

また、ある時点\(t\)の現在価値は、上式を使い割り引くことで求めることができます。

$$ PV = x(t) \cdot e ^ {-rt} $$

現在価値/将来価値の実装

Python で現在価値/将来価値を以下のように実装できます。

import math

def discrete_fv(x, r, n):
    return x * (1+r) ** n

def discrete_pv(x, r, n):
    return x * (1+r) ** -n

def continuous_fv(x, r, t):
    return x * math.exp(r*t)

def continuous_pv(x, r, t):
    return x * math.exp(-r*t)


if __name__ == '__main__':
    x = 10000
    r = 0.01
    n = 10

    # discrete_fv 11046.221254112046
    # discrete_pv 9052.869546929833 
    print('discrete_fv', discrete_fv(x, r, n))
    print('discrete_pv', discrete_pv(x, r, n))

    # continuous_fv 11051.709180756478
    # continuous_pv 9048.374180359595
    print('continuous_fv', continuous_fv(x, r, n))
    print('continuous_pv', continuous_pv(x, r, n))


当然ながら、離散的に考えても、連続的に考えても、同じような値が求まります。