# 前提条件:
- タイトル: 簡易版住宅ローン返済シミュレーション
- 依頼者条件: ローン返済計画を立てたい人
- 制作者条件: 返済計画を計算できる人、将来設計の提案と修正ができる人
- 目的と目標: ローン返済計画で、月々の返済額を把握して、人生設計をサポートする
# 実行指示:
{対象プロファイル}の借入情報を元に、{参考情報}を活用して、
ローン返済計画一覧を作成してください。
{ローン返済シミュレーションのPythonコード}に必要情報を入れてローン返済表を作成し、
返済1年目と最後の1年を抽出して出力してください。
コード表示はせず、無条件でpythonコードを実行して結果を表示してください。
最後に、月ごとの返済額、元金返済額,利息返済額,残債 の項目を持つ、グラフを作成してください。
# 対象プロファイル:
借入金額="
"
借入期間="
"
当初金利="
"
返済方法(元利均等/元金均等)="
"
# 参考フォーマット:
**条件:**
- 借入金額: 45,000,000 円
- 借入期間: 30年
- 金利: 0.8%
- 返済方法: 元金均等
**元金均等返済シミュレーション**
- 返済額合計: 50,414,858 円
- 元金合計: 45,000,000 円
- 利息合計: 5,414,858 円
**返済計画:**
| 月 | 返済額 | 元金返済額 | 利息返済額 | 残債
|---|---|---|---|---|---|
| 1 | 85,833 | 83,333 | 2,500 | 29,916,667 |
| 2 | 85,833 | 83,333 | 2,500 | 29,833,334 |
| 3 | 85,833 | 83,333 | 2,500 | 29,750,001 |
| 4 | 85,833 | 83,333 | 2,500 | 29,666,668 |
| 5 | 85,833 | 83,333 | 2,500 | 29,583,335 |
| 6 | 85,833 | 83,333 | 2,500 | 29,500,002 |
| 7 | 85,833 | 83,333 | 2,500 | 29,416,669 |
| 8 | 85,833 | 83,333 | 2,500 | 29,333,336 |
| ... | ... | ... | ... | ... | ... |
| 359 | 85,833 | 83,333 | 2,500 | 83,334 |
| 360 | 85,833 | 83,333 | 2,500 | 0 |
<グラフで表示>
**注記:**
- 元金均等返済では、毎月の元金返済額が一定となり、利息返済額は残債に応じて減少していきます。
- ボーナス返済は、ボーナス支給月に返済額から差し引かれるため、その月の返済額は減額されます。
- 表は簡略化されており、実際の返済額は金融機関や金利計算により多少異なる場合があります。
- ボーナス返済を加味することで、返済期間を短縮したり、毎月の返済額を減額したりすることができます。
# 補足:
- 指示の復唱はしないでください。
- 自己評価はしないでください。
- {参考フォーマット}から外れた余計な前置き、結論やまとめは書かないください。
# 参考情報:
- ローン返済シミュレーションのPythonコード
import numpy as np
import pandas as pd
# パラメータの設定
debt = 4500 # 万円
year = 30 # 年
rate = 0.8 # %
repayment_method = "元金均等返済" # "元利均等返済"または"元金均等返済"
# 元利均等返済計算関数
def calculate_monthly_payment_equal_interest(rate, debt, year):
monthly_interest_rate = rate / 12.0 / 100
total_months = year * 12
monthly_payment = (monthly_interest_rate * debt * 10000 * np.power(1 + monthly_interest_rate, total_months)) / (np.power(1 + monthly_interest_rate, total_months) - 1)
return round(monthly_payment) # 返済額を四捨五入して整数にする
# 元金均等返済計算関数
def calculate_monthly_payment_equal_principal(debt, year):
total_months = year * 12
monthly_principal = debt * 10000 / total_months
return monthly_principal
# 元利均等返済方式のテーブル作成
def create_table_equal_interest(debt, rate, year):
monthly_payment = calculate_monthly_payment_equal_interest(rate, debt, year)
data = []
remaining_debt = debt * 10000
total_months = year * 12
total_payment_rounded = 0
total_principal_rounded = 0
for i in range(total_months):
interest = round(remaining_debt * rate / 12 / 100) # 四捨五入
principal = monthly_payment - interest
total_payment = principal + interest
total_payment_rounded += total_payment // 1 # 小数切り捨て
total_principal_rounded += principal // 1 # 小数切り捨て
remaining_debt -= principal
data.append([i + 1, total_payment // 1, principal // 1, interest, max(remaining_debt, 0)])
# 最終月に残債と端数を調整
final_row = data[-1]
final_row[2] += debt * 10000 - total_principal_rounded # 元金の端数を調整
final_row[4] = 0
final_row[1] = final_row[2] + final_row[3]
# データを更新
data[-1] = final_row
return pd.DataFrame(data, columns=['月', '返済額', '元金返済額', '利息返済額', '残債'])
# 元金均等返済方式のテーブル作成
def create_table_equal_principal(debt, rate, year):
monthly_principal = calculate_monthly_payment_equal_principal(debt, year)
data = []
remaining_debt = debt * 10000
total_months = year * 12
total_payment_rounded = 0
total_principal_rounded = 0
for i in range(total_months):
interest = round(remaining_debt * rate / 12 / 100) # 四捨五入
total_payment = monthly_principal + interest
total_payment_rounded += total_payment // 1 # 小数切り捨て
total_principal_rounded += monthly_principal // 1 # 小数切り捨て
remaining_debt -= monthly_principal
data.append([i + 1, total_payment // 1, monthly_principal // 1, interest, max(remaining_debt, 0)])
# 最終月に残債と端数を調整
final_row = data[-1]
final_row[1] += total_payment_rounded - sum(row[1] for row in data)
final_row[2] += debt * 10000 - total_principal_rounded # 元金の端数を調整
final_row[4] = 0
# データを更新
data[-1] = final_row
return pd.DataFrame(data, columns=['月', '返済額', '元金返済額', '利息返済額', '残債'])
# 返済計画表の作成
if repayment_method == "元利均等返済":
loan_table = create_table_equal_interest(debt, rate, year)
elif repayment_method == "元金均等返済":
loan_table = create_table_equal_principal(debt, rate, year)
# データの表示
print(loan_table)
print(f"返済合計:{loan_table['返済額'].sum()}, 元金合計:{loan_table['元金返済額'].sum()}, 利息合計:{loan_table['利息返済額'].sum()}")