期間数N・年利I/Y・現在価値PV・毎期の支払額PMT・将来価値FVの5欄のうち、求めたい1欄だけを空欄にして、残りの4欄に数値を入力してください。空欄にした欄を逆算します。
このページでできること
- 期間数 \(N\)・年利 \(I/Y\)・現在価値 \(PV\)・毎期の支払額 \(PMT\)・将来価値 \(FV\) の5つのうち4つを入れると、残り1つを逆算できます(BA II PlusやHP 12Cなどの金融電卓の「5キーTVM」と同じ設計です)
- 符号の決まりも金融電卓と同じです:自分から出るお金(預ける・積み立てる・返す)はマイナス、自分に入るお金(借りる・受け取る)はプラスで入力します。例:毎年2,000円積み立てるなら PMT = -2000
- 支払いのタイミング(期末=普通のローンや積立/期首)と、P/Y(1年あたりの支払回数)・C/Y(1年あたりの複利回数)を設定できます
- 求めた値に加えて、毎期の支払額の合計と利息の合計も表示します。期間数が20以内の整数のときは、期ごとの「利息・残高」の推移表も出ます
- 残高の推移グラフ付き。式のやさしい解説・Excel(FV・PV・PMT・RATE・NPER関数)/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
FP技能検定で暗記しがちな「6つの係数」(終価係数・現価係数・年金終価係数・減債基金係数・年金現価係数・資本回収係数)は、実は全部このTVM方程式の変形です。例えば終価係数は \((1+i)^N\) そのもの、年金終価係数は \(\dfrac{(1+i)^N-1}{i}\) です。
このページで数値を変えながら確かめると、6つをバラバラに覚える代わりに「1本の式の読み替え」として理解でき、応用問題にも強くなります。
「3,000万円を年利1.5%(固定)・35年の元利均等返済で借りる」は、PV = +30,000,000・N = 420(35年×12回)・毎月払い(P/Y = C/Y = 12)・FV = 0 としてPMTを解く計算です。答えは毎月約91,855円、総返済額は約3,858万円で、利息の合計は約858万円になります。
金額の仕組みが式で見えると、「借入額・金利・期間のどれがどれだけ効くのか」を自分で確かめられます。実際のローンには手数料・保証料・金利の変動があるため、正確な返済額は金融機関の試算で確認してください。
「毎年120万円を20年間受け取りたい。年利2%で運用できるとしたら、最初にいくら必要か」は、PMT = +1,200,000・N = 20・FV = 0 としてPVを解く計算で、答えは約1,962万円(PV = −19,621,720円=最初に出すお金)です。
受取総額は2,400万円なので、差額の約438万円を運用益がまかなう計算になります。「率が変わると必要額がいくら変わるか」を数字で確かめられるのは、老後資金を考える上での大きな判断材料です(実際の運用では利率は一定でなく、元本割れの可能性もあります)。
「毎月1万円を年利3%(月複利)で積み立てて、100万円に届くのはいつか」は、PMT = -10,000・FV = +1,000,000・P/Y = C/Y = 12 としてNを解く計算で、答えは約89.4か月(約7.4年)です。
金利0%なら100か月かかるところが、利息のおかげで約10か月早く届く——という「利息の効き方」まで数字で見えるのが、Nの逆算の面白いところです。
「300万円の設備を5年リース(実質年利4%相当・毎月払い)」なら、PV = +3,000,000・N = 60・P/Y = C/Y = 12・FV = 0 としてPMTを解くと月額約55,250円、支払総額は約331.5万円です。差額の約31.5万円が金利・手数料に相当します。
逆に「月額と総額だけ提示されている」場合は、I/Yを逆算すると実質の年利が見抜けます。分割払い・カーリース・携帯端末の分割などの比較に役立つ考え方です。
式とグラフ
用語・記号の解説
記号
| \(PV\) | ピーブイ げんざいかち | 現在価値(Present Value)。今の時点で動くお金です。借りる・受け取るならプラス、預ける・投資するならマイナスで表します。 |
| \(FV\) | エフブイ しょうらいかち | 将来価値(Future Value)。期間の最後の時点で動くお金です。満期に受け取るならプラス、最後に支払うならマイナスで表します。 |
| \(PMT\) | ペイメント | 毎期の支払額(Payment)。毎期くり返し動くお金です。積立や返済のように自分から出るお金はマイナス、家賃収入のように入るお金はプラスで表します。 |
| \(N\) | エヌ | 期間数(支払回数)。利息が付く期間の数です。年1回払いなら年数と同じですが、毎月払い(P/Y = 12)では月数で数えます(10年なら \(N = 120\))。 |
| \(I/Y\) | アイワイ | 年利(Interest per Year)。1年あたりの利率を%で表したものです。金融電卓のキーの名前がそのまま使われています。 |
| \(P/Y\) | ピーワイ | 1年あたりの支払回数(Payments per Year)。毎期の支払額 \(PMT\) が1年に何回あるかです。年1回払いなら1、毎月払いなら12にします。 |
| \(C/Y\) | シーワイ | 1年あたりの複利回数(Compounding per Year)。利息が元本に組み入れられる回数です。普通は \(P/Y\) と同じ値にし、違う値のときは複利の周期を支払いの周期に換算して計算します。 |
| \(i\) | アイ(小文字) | 1期あたりの利率を小数で表したもの。年1回払いなら年利そのもの(6%なら \(i = 0.06\))、毎月払いなら月あたりに直した利率です。 |
| \(g\) | ジー | 支払いのタイミングを表すスイッチ。期首払いなら \(g = 1\)、期末払いなら \(g = 0\) として、期首払いのとき \(PMT\) の項に \((1+i)\) を1回多く掛けます。 |
| \(\ln\) | ログ・ナチュラル エル・エヌ | 自然対数。「何回掛けたらこの倍率になるか」を取り出す道具で、期間数 \(N\) の逆算に使います。 |
用語
| 貨幣の時間価値 (TVM) |
かへいのじかんかち | 「今の1万円は、将来の1万円より価値が高い」という考え方(Time Value of Money)。今のお金は利息を付けて増やせるからです。ファイナンス(金融論)の一番の土台で、このページの方程式はその考え方を1本の式にしたものです。 |
| 現在価値 | げんざいかち | 将来のお金を「今のお金に直すといくらか」で表した金額。例えば年利2%なら、1年後の102万円は今の100万円と同じ価値です。 |
| 将来価値 | しょうらいかち | 今のお金や毎期の積立が、利息込みで将来いくらになるかを表した金額。 |
| 割引 | わりびき | 将来のお金を現在価値に直す計算のこと。将来の金額を \((1+i)^N\) で割るので「割り引く」と言います。利息を付ける計算(複利)のちょうど逆向きです。 |
| 年金終価係数 | ねんきんしゅうかけいすう | 毎期1円ずつ積み立てたときに、利息込みで将来いくらに積み上がるかを表す倍率 \(\dfrac{(1+i)^N - 1}{i}\) のこと。FP技能検定で学ぶ「6つの係数」の一つで、毎期の支払額に掛けて使います。 |
| 年金現価係数 | ねんきんげんかけいすう | 毎期1円ずつ受け取る権利が、今のお金に直すといくらかを表す倍率 \(\dfrac{1-(1+i)^{-N}}{i}\) のこと。年金や住宅ローン(借入額と毎回の返済額の関係)の計算に使う、年金終価係数の現在価値版です。 |
| キャッシュフロー | キャッシュフロー | お金の出入りの流れのこと。TVMでは「いつ・いくら・どちら向きに」お金が動くかだけに注目し、向きを符号(プラス・マイナス)で表します。 |
| 符号規約 | ふごうきやく | 自分から出て行くお金(預ける・積み立てる・返す)はマイナス、自分に入るお金(借りる・受け取る)はプラスで表す決まり。金融電卓やExcelの財務関数と共通のルールで、この決まりのおかげで種類の違う計算(ローン・積立・年金)を全部1本の式で扱えます。 |
| 期末払い | きまつばらい | 毎期の支払い(PMT)を各期間の終わりに行う方式。普通のローン返済や積立はこちらで、このページの初期設定も期末払いです。 |
| 期首払い | きしゅばらい | 毎期の支払い(PMT)を各期間の初めに行う方式。同じ支払額でも1期分早く利息が付き始めるため、\(PMT\) の項に \((1+i)\) を1回多く掛けて計算します。家賃の前払いのような「先払い」がこの形です。 |
| 金融電卓 | きんゆうでんたく | TVM計算専用のキー(N・I/Y・PV・PMT・FV)を持つ電卓。BA II Plus(テキサス・インスツルメンツ)やHP 12Cが有名で、CFP・証券アナリストなどの試験や実務で使われます。このページは同じ5キー方式のWEB版です。 |
| 数値解法 (二分法) |
すうちかいほう(にぶんほう) | 式変形で答えを取り出せないとき、「答えがある区間を半分ずつに狭めて」近似値を求める方法。年利I/Yの逆算はN次方程式を解くことになり公式が無いため、このページも二分法で計算しています。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
| 正負の数(中学1年) |
|
| 割合・百分率(小学5年) |
|
| 累乗・指数(中学1年) |
|
| 複利の基本(このサイトの「複利計算」ページ・中学〜) |
|
| 対数(高校 数学II・発展) |
|
Excelで計算する方法
| 1期あたりの利率(6%なら0.06) | 0.06 |
| 期間数N | 10 |
| 毎期の支払額PMT | -2000 |
| 現在価値PV | 20000 |
| 将来価値FV | =FV(B1,B2,B3,B4,0) |
| 1期あたりの利率(6%なら0.06) | 0.06 |
| 期間数N | 10 |
| 現在価値PV | 20000 |
| 将来価値FV | 0 |
| 毎期の支払額PMT | =PMT(B1,B2,B3,B4,0) |
| 期間数N | 5 |
| 毎期の支払額PMT | 0 |
| 現在価値PV | -1000 |
| 将来価値FV | 1500 |
| 1期あたりの利率 | =RATE(B1,B2,B3,B4) |
| 1期あたりの利率(8%なら0.08) | 0.08 |
| 毎期の支払額PMT | 0 |
| 現在価値PV | -1000 |
| 将来価値FV | 2000 |
| 期間数N | =NPER(B1,B2,B3,B4) |
| 1期あたりの利率(5%なら0.05) | 0.05 |
| 期間数N | 20 |
| 毎期の支払額PMT | -100 |
| 将来価値FV | 0 |
| 現在価値PV | =PV(B1,B2,B3,B4,1) |
1つ目の表はB5に-9,455.36、2つ目はB5に-2,717.36、3つ目はB5に約0.0845(=年利8.447%。セルの表示形式をパーセントにすると読みやすくなります)、4つ目はB5に約9.006、5つ目はB5に1,308.53と表示されます。
FV・PMT・PV関数の最後の引数は支払いのタイミングで、0または省略=期末払い、1=期首払いです。毎月払いの計算では、利率は月あたり(年利÷12)、Nは月数で入れます。
Googleスプレッドシートで計算する方法
| 1期あたりの利率(6%なら0.06) | 0.06 |
| 期間数N | 10 |
| 毎期の支払額PMT | -2000 |
| 現在価値PV | 20000 |
| 将来価値FV | =FV(B1,B2,B3,B4,0) |
| 1期あたりの利率(6%なら0.06) | 0.06 |
| 期間数N | 10 |
| 現在価値PV | 20000 |
| 将来価値FV | 0 |
| 毎期の支払額PMT | =PMT(B1,B2,B3,B4,0) |
| 期間数N | 5 |
| 毎期の支払額PMT | 0 |
| 現在価値PV | -1000 |
| 将来価値FV | 1500 |
| 1期あたりの利率 | =RATE(B1,B2,B3,B4) |
| 1期あたりの利率(8%なら0.08) | 0.08 |
| 毎期の支払額PMT | 0 |
| 現在価値PV | -1000 |
| 将来価値FV | 2000 |
| 期間数N | =NPER(B1,B2,B3,B4) |
| 1期あたりの利率(5%なら0.05) | 0.05 |
| 期間数N | 20 |
| 毎期の支払額PMT | -100 |
| 将来価値FV | 0 |
| 現在価値PV | =PV(B1,B2,B3,B4,1) |
Pythonで計算する方法
import math
# 求めたい欄を None にする(下の例では fv を求める)
n = 10 # 期間数N(支払回数)
annual_rate = 6 # 年利I/Y(%)
pv = 20000 # 現在価値PV(入るお金=プラス、出るお金=マイナス)
pmt = -2000 # 毎期の支払額PMT
fv = None # 将来価値FV
is_beginning = False # True=期首払い、False=期末払い
g = 1 if is_beginning else 0
# 1期あたりの利率(年1回払いの場合。毎月払いなら12で割り、nは月数にする)。年利を求めるときはNoneのまま
i = annual_rate / 100 if annual_rate is not None else None
def tvm_left_side(i_, n_, pv_, pmt_, fv_):
"""TVM方程式の左辺(0になる組み合わせが答え)"""
if abs(i_) < 1e-12:
return pv_ + pmt_ * n_ + fv_
growth = (1 + i_) ** n_
return pv_ * growth + pmt_ * (1 + i_ * g) * (growth - 1) / i_ + fv_
if fv is None:
fv = -(pv + pmt * n) if abs(i) < 1e-12 else -(pv * (1 + i) ** n + pmt * (1 + i * g) * ((1 + i) ** n - 1) / i)
print(f"将来価値FV = {fv:,.2f}")
elif pv is None:
pv = -(fv + pmt * n) if abs(i) < 1e-12 else -(fv + pmt * (1 + i * g) * ((1 + i) ** n - 1) / i) / (1 + i) ** n
print(f"現在価値PV = {pv:,.2f}")
elif pmt is None:
pmt = -(pv + fv) / n if abs(i) < 1e-12 else -(pv * (1 + i) ** n + fv) / ((1 + i * g) * ((1 + i) ** n - 1) / i)
print(f"毎期の支払額PMT = {pmt:,.2f}")
elif n is None:
if abs(i) < 1e-12:
n = -(pv + fv) / pmt
else:
k = pmt * (1 + i * g) / i
n = math.log((k - fv) / (pv + k)) / math.log(1 + i)
print(f"期間数N = {n:.3f}")
else:
# 年利は式変形で取り出せないため二分法で探索する(解が無い入力もある)
low, high = -0.9999, 10.0
if tvm_left_side(low, n, pv, pmt, fv) * tvm_left_side(high, n, pv, pmt, fv) > 0:
raise SystemExit("この範囲では解が見つかりません。お金の向き(符号)を確認してください")
for _ in range(200):
mid = (low + high) / 2
if tvm_left_side(low, n, pv, pmt, fv) * tvm_left_side(mid, n, pv, pmt, fv) <= 0:
high = mid
else:
low = mid
i = (low + high) / 2
print(f"年利I/Y = {i * 100:.3f} %")
total_interest = abs(pv + pmt * n + fv)
print(f"利息の合計 = {total_interest:,.2f}")
数式記述言語(LaTeX等)での書き方(コピペ可)
PV(1 + i)ᴺ + PMT × ((1 + i)ᴺ − 1)/i + FV = 0
PV(1+i)^{N} + PMT \cdot \dfrac{(1+i)^{N}-1}{i} + FV = 0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>PV</mi>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>+</mo>
<mi>PMT</mi>
<mo>⋅</mo>
<mfrac>
<mrow>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
<mi>i</mi>
</mfrac>
<mo>+</mo>
<mi>FV</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
PV(1+i)^N + PMT((1+i)^N-1)/i + FV = 0
pv (1 + i)^n + pmt ((1 + i)^n - 1)/i + fv == 0
pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i + fv = 0;
pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i + fv == 0
PV(1+i)^N + PMT((1+i)^N-1)/i + FV = 0
FV = −(PV(1 + i)ᴺ + PMT × ((1 + i)ᴺ − 1)/i)
FV = -\left( PV(1+i)^{N} + PMT \cdot \dfrac{(1+i)^{N}-1}{i} \right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>FV</mi>
<mo>=</mo>
<mo>−</mo>
<mrow>
<mo>(</mo>
<mi>PV</mi>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>+</mo>
<mi>PMT</mi>
<mo>⋅</mo>
<mfrac>
<mrow>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
<mi>i</mi>
</mfrac>
<mo>)</mo>
</mrow>
</mrow>
</math>
FV = -(PV(1+i)^N + PMT((1+i)^N-1)/i)
fv = -(pv (1 + i)^n + pmt ((1 + i)^n - 1)/i)
fv := -(pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i);
fv = -(pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i);
FV = -(PV(1+i)^N + PMT((1+i)^N-1)/i)
N = ln(−FV/PV) / ln(1 + i)
N = \dfrac{\ln\left(-\dfrac{FV}{PV}\right)}{\ln(1+i)}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>ln</mi>
<mrow>
<mo>(</mo>
<mo>−</mo>
<mfrac><mi>FV</mi><mi>PV</mi></mfrac>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>ln</mi>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
</mrow>
</mfrac>
</mrow>
</math>
N = ln(-FV/PV) / ln(1+i)
n = Log[-fv/pv]/Log[1 + i]
n := ln(-fv/pv)/ln(1 + i);
n = log(-fv/pv)/log(1 + i);
N = ln(-FV/PV)/ln(1+i)
PV + PMT × N + FV = 0
PV + PMT \cdot N + FV = 0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>PV</mi>
<mo>+</mo>
<mi>PMT</mi>
<mo>⋅</mo>
<mi>N</mi>
<mo>+</mo>
<mi>FV</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
PV + PMT * N + FV = 0
pv + pmt n + fv == 0
pv + pmt*n + fv = 0;
pv + pmt*n + fv == 0
PV + PMT N + FV = 0
ChatGPT に聞いて計算してもらう方法
あなたはファイナンス計算(貨幣の時間価値・TVM)のアシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 標準TVM方程式 PV(1+i)^N + PMT(1+i*g)*((1+i)^N - 1)/i + FV = 0 を使います(g=1が期首払い、g=0が期末払い)。 符号の決まりは金融電卓と同じで、自分から出るお金はマイナス、入るお金はプラスです。 20,000円を年利6%で借りて(PV = +20000)、毎年一定額を10年間、各年の終わり(期末)に返済して完済します(FV = 0)。 次の値をそれぞれ求めてください。 1. 毎年の返済額PMT 2. 返済額の合計(PMT × 10) 3. 利息の合計(|PV + PMT×N + FV|) 計算に使った式と、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの式と符号の決まりを、自分の手で使えるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
