🔎 Intro
In the last post, I quickly compared the outcomes of investing in the stock market or paying off the mortgage early over a 2-year and 5-year period. In this post, I’ll explore the option of investing in stocks and paying off the mortage simultaneously, and see how the numbers stack up for 2-year period.
Assumptions
- Monthly Cash Available: £2,000
- Monthly Mortgage Payment: £2,000
- Mortgage Interest Rate: 5.8%
- Investment Return Rate: 7% - 10% per year (In this case we will use midpoint 8.5% for illustration)
- Investment Period: 2 years and 5 years
- Remaining Mortgage Amount (Principal): £111,000
- Maximum Early Repayment without Penalty per year: £11,000
We’ll use two scenarios this time to do our analysis:
Scenario 1: Invest in stocks with £2,000 monthly and withdraw £11,000 towards the mortgage at the end of year.
Investment Growth:
- Year 1:
Year-end Investment Value = £24,000 * 1.085 - £11,000 = £15,040
- Year 2:
Year-end Investment Value = £15,040 * (1 + 0.085/12)**12 + £2,000 * ((1 + 0.085/12)**12 - 1)/(0.085/12) - £11,000 &approx £30,139
Mortgage Reduction:
Monthly interest rate: 5.8%/12 = 0.0048333
Year 1:
Month 1:
Principal = £111,000
Interest = £111,000 * 0.0048333 = £536.99
Payment = £2,000
Principal Reduction = £2,000 − £536.99 = £1,463.01
New Principal = £111,000 − £1,463.01 = £109,536.99
```
Continue this calculation for 24 months to get the peirod-end principal.
# Function to calculate the amortization schedule and interest savings
def calculate_amortization_schedule(principal, rate, monthly_payment, extra_annual=0, extra_monthly=0):
monthly_rate = rate / 12 / 100
schedule = []
total_interest_paid = 0
for month in range(1, 25): # 2 years = 24 months
interest = principal * monthly_rate
principal_reduction = monthly_payment - interest
total_payment = monthly_payment
if extra_monthly > 0:
total_payment += extra_monthly
principal_reduction += extra_monthly
principal -= principal_reduction
total_interest_paid += interest
schedule.append((month, total_payment, interest, principal_reduction, principal))
if month % 12 == 0 and extra_annual > 0:
principal -= extra_annual
return pd.DataFrame(schedule, columns=['Month', 'Total Payment', 'Interest', 'Principal Reduction', 'Remaining Principal']), total_interest_paid
# Scenario 1: $2,000 monthly, $11,000 annual extra payment
principal_1 = 111000
monthly_payment_1 = 2000
extra_annual_1 = 11000
schedule_1, total_interest_1 = calculate_amortization_schedule(principal_1, 5.8, monthly_payment_1, extra_annual_1)
# Scenario 2: $2,000 monthly, $900 monthly extra payment
principal_2 = 111000
monthly_payment_2 = 2000
extra_monthly_2 = 900
schedule_2, total_interest_2 = calculate_amortization_schedule(principal_2, 5.8, monthly_payment_2, extra_monthly=extra_monthly_2)
import ace_tools as tools; tools.display_dataframe_to_user("Scenario 1 Amortization Schedule", schedule_1)
import ace_tools as tools; tools.display_dataframe_to_user("Scenario 2 Amortization Schedule", schedule_2)
total_interest_1, total_interest_2
Total interest paid over 2 years: $10,197.47
Scenario 2: Invest in stocks with £1,100 monthly and use £900 towards the mortgage at each month.
Investment Growth:
- Year 2:
Year-end Investment Value = £1,100 * ((1 + 0.085/12)**24 - 1)/(0.085/12) &approx £27,480
Mortgage Reduction:
Month 1:
Principal = £111,000
Interest = £111,000×0.0048333 = £536.99
Payment = £2,000 + £900 − £536.99 = £2,363.01
New Principal = £111,000 − £2,363.01 = £108,636.99
```
Continue this calculation for 24 months to get the peirod-end principal using the same calculation as above.
Total interest paid over 2 years: $9,608.45
Conclusion
**Scenario 1: **
- Total interest paid over 2 years: £10,197.47
- Investment value after 2 years: £30,139
Scenario 2:
- Scenario 2: Total interest paid over 2 years: £9,608.45
- Investment value after 2 years: £27,480
In this case, the second scenario is better as it results in lower interest paid and a higher investment value after 2 years with the difference of £589.02. However, the Investment value is still lower than the Scenario 1 due to the lower monthly investment amount with the difference of £2,659.
So in summary, scenario 1 is gaining more in total at £2,659 - £589.02 = £2069.98 in 2-year period.
Intersting Insights
Again this whole analysis was generated using GPT4o. Although the accuracy and the numbers are not 100% accurate, the insights are very interesting and the short of amount of time it took to generate this analysis is very impressive. This could be further developed to provide more accurate and detailed analysis for sure but more importantly, it can be used as a tool to generate ideas and insights for personal finance.