Spaces:
Sleeping
Sleeping
File size: 5,980 Bytes
aaa66d0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
from utils.css import load_css
def retirement_planning_tool(current_age, retirement_age, current_investment, monthly_investment, pre_retirement_roi, post_retirement_roi, pre_retirement_dividend_yield, post_retirement_dividend_yield, reinvest_dividends, life_expectancy):
# NoneTypeμΌ λ 0μΌλ‘ μ²λ¦¬
current_age = current_age if current_age is not None else 0
retirement_age = retirement_age if retirement_age is not None else 0
current_investment = current_investment if current_investment is not None else 0
monthly_investment = monthly_investment if monthly_investment is not None else 0
pre_retirement_roi = pre_retirement_roi if pre_retirement_roi is not None else 0
post_retirement_roi = post_retirement_roi if post_retirement_roi is not None else 0
pre_retirement_dividend_yield = pre_retirement_dividend_yield if pre_retirement_dividend_yield is not None else 0
life_expectancy = life_expectancy if life_expectancy is not None else 0
# μν΄ μ νμ λ
μ κ³μ°
years_to_retirement = retirement_age - current_age
post_retirement_years = life_expectancy - retirement_age
# νμ¬ ν¬μμ‘μΌλ‘ μ΄κΈ° ν¬μ μ€μ
total_investment = current_investment
# μν΄ μ μκ° μ΄μμ¨
# μ°κ° μμ΅λ₯ μ μκ° μμ΅λ₯ λ‘ λ³ν: (1 + μ°κ° μμ΅λ₯ )^(1/12) - 1
monthly_return_pre = (1 + pre_retirement_roi / 100) ** (1/12) - 1
# μν΄ μμ μ ν¬μ κ³μ°
for year in range(years_to_retirement):
for month in range(12):
total_investment = (total_investment + monthly_investment) * (1 + monthly_return_pre)
if reinvest_dividends:
total_investment += total_investment * (pre_retirement_dividend_yield / 100 / 12)
# μν΄ μμ μμ μ μ΄ ν¬μμ‘κ³Ό μ°κ° λ°°λΉ μμ΅ μ μ₯
investment_at_retirement = total_investment
annual_dividend_at_retirement = investment_at_retirement * (pre_retirement_dividend_yield / 100)
monthly_dividend_at_retirement = annual_dividend_at_retirement / 12
# μν΄ ν μκ° μ΄μμ¨
# μ°κ° μμ΅λ₯ μ μκ° μμ΅λ₯ λ‘ λ³ν: (1 + μ°κ° μμ΅λ₯ )^(1/12) - 1
monthly_return_post = (1 + post_retirement_roi / 100) ** (1/12) - 1
# μν΄ ν ν¬μ λͺ©λ‘ μ΄κΈ°ν
post_retirement_investments = [(retirement_age, investment_at_retirement, annual_dividend_at_retirement, monthly_dividend_at_retirement)]
# μν΄ ν κ° λ
λμ ν¬μ λ° λ°°λΉ μμ΅ κ³μ°
for year in range(1, post_retirement_years + 1):
total_investment *= (1 + post_retirement_roi / 100) # μν΄ ν μμ΅λ₯ μ μ©
annual_dividend_income = total_investment * (post_retirement_dividend_yield / 100) # μ°κ° λ°°λΉ μμ΅ κ³μ°
monthly_dividend_income = annual_dividend_income / 12 # μκ° λ°°λΉ μμ΅ κ³μ°
post_retirement_investments.append((retirement_age + year, total_investment, annual_dividend_income, monthly_dividend_income))
# style.cssμμ CSS μ½κΈ°
css = load_css()
# μν΄ κ³νμ λν HTML κ²°κ³Ό μμ±
result_html = css + f"""
<div class="wrap-text" style="box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1); border-radius: 0.5rem; padding: 3rem; position: relative; width: 100%; padding: 1.5rem;">
<div>
<div style="margin-bottom: 1.5rem;">
<div style="font-size: 1.5rem; margin-top: 1.5rem; margin-bottom: 1.5rem;">Total investment at retirement:</div>
<div style="font-size: 1.5rem; font-weight: bold; color: #1c75bc;">
<span style='color: #1678fb'>{investment_at_retirement:,.0f}</span>
</div>
<hr style="margin: 1.5rem 0;">
</div>
</div>
<div>
<div style="margin-bottom: 1.5rem;">
<div style="font-size: 1.5rem; margin-top: 1.5rem; margin-bottom: 1.5rem;">Dividend income at retirement:</div>
<span style='font-size: 1.5rem; font-weight: bold; color: #1678fb'>{annual_dividend_at_retirement:,.0f}</span>
Annual
<p></p>
<span style='font-size: 1.5rem; font-weight: bold; color: #1678fb'>{monthly_dividend_at_retirement:,.0f}</span>
Monthly
<hr style="margin: 1.5rem 0;">
</div>
</div>
<div>
</div>
</div>
<h3>Dividend Income After Retirement</h3>
<div class='table-container'>
<table style='border-collapse: collapse; width: 100%;'>
<thead>
<tr>
<th style='border: 1px solid #ddd; padding: 0.5rem;'>Age</th>
<th style='border: 1px solid #ddd; padding: 0.5rem;'>Total</th>
<th style='border: 1px solid #ddd; padding: 0.5rem;'>Annual</th>
<th style='border: 1px solid #ddd; padding: 0.5rem;'>Monthly</th>
</tr>
</thead>
<tbody>
"""
for age, investment, annual_dividend_income, monthly_dividend_income in post_retirement_investments:
result_html += f"""
<tr>
<td style='border: 1px solid #ddd; padding: 0.5rem;'>{age}</td>
<td style='border: 1px solid #ddd; padding: 0.5rem;'>{investment:,.0f}</td>
<td style='border: 1px solid #ddd; padding: 0.5rem;'>{annual_dividend_income:,.0f}</td>
<td style='border: 1px solid #ddd; padding: 0.5rem;'>{monthly_dividend_income:,.0f}</td>
</tr>
"""
result_html += """
</tbody>
</table>
</div>
<p style="padding: 10px; border: 1px solid; border-radius: 5px; text-align: center; max-width: 400px; margin: 20px auto;">
<strong>Note:</strong> No additional investments or reinvestment of dividends after retirement.
</p>
"""
return result_html
|