定期支払いのシミュレーション(I)
これで、時間の経過に伴う住宅ローンの支払いをシミュレーションするために必要な道具がそろいました。
毎回の返済のたびに、利息の支払いに充てられる割合はわずかに減っていきます。つまり、その分多くが銀行ではなく、住宅の持分(あなたが所有する部分)に充てられることになります。これは、完済前に家を売ったときにどれだけ手元に残るか、あるいはローン残高が物件価値を上回る「アンダーウォーター」状態になる時期を判断するうえで重要です。詳しくは後ほど見ていきます。
ここでは、各回の支払いに含まれる利息部分と元金部分を時系列で計算するシンプルなプログラムを書きます。
第3問の mortgage_loan、mortgage_rate_periodic、periodic_mortgage_payment 変数は使用可能です。
principal_remaining 変数は、支払い期間の数と同じ長さの 0 で初期化された配列として用意されています。
この演習はコースの一部です
Pythonで学ぶファイナンス入門
演習の手順
- 最初の期間、すなわち
(i == 0)のときのprevious_principal_remainingを住宅ローン元本の値に設定します。 - それ以外の期間の
previous_principal_remainingは、直前の期間の「残元本」([i - 1]) と同じに設定します。 - 各期間について、利払い額(直前の残元本と定期金利の積)と、元金返済額(定期返済額から利払い額を差し引いた金額)を計算します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Loop through each mortgage payment period
for i in range(0, mortgage_payment_periods):
# Handle the case for the first iteration
if i == 0:
previous_principal_remaining = ____
else:
previous_principal_remaining = ____
# Calculate the interest and principal payments
interest_payment = round(____*____, 2)
principal_payment = round(____-____, 2)
# Catch the case where all principal is paid off in the final period
if previous_principal_remaining - principal_payment < 0:
principal_payment = previous_principal_remaining
# Collect the principal remaining values in an array
principal_remaining[i] = previous_principal_remaining - principal_payment
# Print the payments for the first few periods
print_payments(i, interest_payment, principal_payment, principal_remaining)