Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- # Modify the following as inputs:
- LAC = 10**5
- CURRENT_YEAR = 2021
- RETIREMENT_YEAR = 2027
- DEATH_YEAR = 2080
- INFLATION_RATE = 0.06 # 6% inflation rate in India on average
- SALARY_INCREASE_INTERVAL = 3 # Will get a salary bump after these many years (job hop interval)
- SALARY_INCREASE_RATE = 0.5 # 50% salary hike at job switch
- EQUITY_RETURN_RATE = 0.1 # Assuming 10% return rate from index funds.
- CURRENT_WEALTH = 5000000.0 # The corpus you have right now
- CURRENT_ANNUAL_EXPENSES = 1000000.0 # Your current annual expenses
- CURRENT_ANNUAL_INCOME = 3700000.0 # Your current annual salary after tax
- EXPENSE_REDUCTION_RATIO_AFTER_RETIREMENT = 0.5 # Annual expenses will become half of before due to no rents/donations etc.
- def get_real_money_value_multiplier(src_year, target_year):
- """Inflation multiplier: To help compute the real value of money at a future/past target date."""
- return (1.0 + INFLATION_RATE) ** (target_year - src_year)
- def earning_phase():
- """Earning phase: Period of your life when you are hustling and earning."""
- i = 0
- year = CURRENT_YEAR
- wealth = CURRENT_WEALTH
- expenses = CURRENT_ANNUAL_EXPENSES
- salary = CURRENT_ANNUAL_INCOME
- while year < RETIREMENT_YEAR:
- savings = salary - expenses
- wealth += savings
- if i % SALARY_INCREASE_INTERVAL == 0:
- salary = salary * (1 + SALARY_INCREASE_RATE)
- expenses = expenses * (1 + INFLATION_RATE)
- wealth = wealth * (1 + EQUITY_RETURN_RATE)
- year += 1
- i += 1
- real_value_multiplier = get_real_money_value_multiplier(RETIREMENT_YEAR, CURRENT_YEAR)
- print(f'Real value multiplier for {RETIREMENT_YEAR} -> {CURRENT_YEAR} = {real_value_multiplier}')
- print(f'YEAR {RETIREMENT_YEAR}: Corpus at the start of retirement = {wealth/LAC:0.2f} lacs [Real value in {CURRENT_YEAR} = {wealth * real_value_multiplier/LAC:0.2f} lacs]')
- print(f'YEAR {RETIREMENT_YEAR}: Annual expenses during the first year of retirement = {expenses/LAC:0.2f} lacs [Real value in {CURRENT_YEAR} = {expenses * real_value_multiplier/LAC:0.2f} lacs]')
- print(f'YEAR {RETIREMENT_YEAR}: At the start of retirement, your corpus is {wealth/expenses:0.2f} times your annual expenses.')
- expenses *= EXPENSE_REDUCTION_RATIO_AFTER_RETIREMENT
- print(f'YEAR {RETIREMENT_YEAR}: Annual expenses (x{EXPENSE_REDUCTION_RATIO_AFTER_RETIREMENT:0.2f}) after retirement = {expenses/LAC:0.2f} lacs [Real value in {CURRENT_YEAR} = {expenses * real_value_multiplier/LAC:0.2f} lacs]')
- return wealth, expenses
- def retirement_phase(wealth, expenses):
- """Period of your life when you are retired and not earning anything."""
- year = RETIREMENT_YEAR
- while year < DEATH_YEAR:
- wealth = wealth * (1 + EQUITY_RETURN_RATE)
- expenses = expenses * (1 + INFLATION_RATE)
- wealth -= expenses
- year += 1
- real_value_multiplier = get_real_money_value_multiplier(DEATH_YEAR, CURRENT_YEAR)
- print(f'Real value multiplier for {DEATH_YEAR} -> {CURRENT_YEAR} = {real_value_multiplier}')
- print(f'YEAR {DEATH_YEAR}: Corpus at deathbed = {wealth/LAC:0.2f} lacs [Real value in {CURRENT_YEAR} = {wealth * real_value_multiplier/LAC:0.2f} lacs]')
- print(f'YEAR {DEATH_YEAR}: Annual expenses at deathbed = {expenses/LAC:0.2f} lacs [Real value in {CURRENT_YEAR} = {expenses * real_value_multiplier/LAC:0.2f} lacs]')
- print(f'YEAR {DEATH_YEAR}: At deathbed, your corpus is {wealth/expenses:0.2f} times your annual expenses')
- def main():
- retirement_phase(*earning_phase())
- main()
Advertisement
Add Comment
Please, Sign In to add comment