Pay back mortgage or invest in bond?
Question
Q. I'm undertaking a mortgage, which is 300,000 principal with 4% fixed rate for 25 years. When I have 100,000 in hand, should I invest in a 2% bond (option a) or payback mortgage (option b)?
It's such a confusing problem hanging in my mind. In general, I think investing helps gain wealth, but chopping down mortgage in advance helps save interest on debt. Both option goes in the same direction.
Anyway, essentially, I'm curious about two questions:
- Is paying back mortgage a solid option when making asset allocation?
- If so, where does it fit into the spectrum for portfolio investment?
Let's try focusing on the mathematic part of the problem to figure out what happens after 25 years, leaving tax, inflation and real estate price fluctuation for now.
(The point might be opinionated or wrong. Forgive me for just climbing on the Mount Stupid)
Option A - invest in 2% bond
The bonds value gets compounded to 164061 after 25 years. In terms of the mortgage, by paying 1584 every month, I'll pay 475,200 in total and 175,200 on interest.
# Invest p for n years with r as anual rate
#
# p is principal
# r is anual rate
# n is number of years
def invest_once(p, r, n)
p * (1+r)**n
end
invest_once(100_000, 0.02, 25) # => 164061
# Calculate montly mortgage payment
#
# p is principal
# r is monthly rate
# n is number of months
def monthly_payment(p, r, n)
(p.to_f * r * (1+r)**n) / ( (1+r)**n - 1 )
end
mp = monthly_payment(300_000, 0.04/12, 25*12) # => 1584
paid_in_total = mp * 25 * 12 # => 475200
paid_for_interest = paid_in_total - 300_000 # => 175200
#
# p is principal
# r is anual rate
# n is number of years
def invest_once(p, r, n)
p * (1+r)**n
end
invest_once(100_000, 0.02, 25) # => 164061
# Calculate montly mortgage payment
#
# p is principal
# r is monthly rate
# n is number of months
def monthly_payment(p, r, n)
(p.to_f * r * (1+r)**n) / ( (1+r)**n - 1 )
end
mp = monthly_payment(300_000, 0.04/12, 25*12) # => 1584
paid_in_total = mp * 25 * 12 # => 475200
paid_for_interest = paid_in_total - 300_000 # => 175200
Option B - pay back 4% mortgage
After paying back 100,000, I keep the same mortgage for 25 years. By paying 1056 every month, I'll pay 316800 in total and 116800 on interest.
Analysis
By following option A, I've gained 64,061 on bonds. With option B, I've saved 58,400 on debt interest. It seems like the 2% bond shows us a pretty good compound value.
However, what we miss is the fact that option B helps save the monthly payment as well, for 528 per month. How much difference it'll make?
- If we just save 528 every month, after 25 years, we have 158400 in hand, which is 5661 short, compared to 164061.
- If we invest the 528 onto the 2% bond every month, after 25 years, we'll have 206168, which is 42107 more than 164061.
# Invest p every month for n months with r as monthly rate
#
# p is principal
# r is montly rate
# n is number of months
def invest_every_month(p, r, n)
p * ( ((1+r)**(n+1) - 1) / r )
end
invest_every_month(528, 0.02/12, 25*12) # => 206168
#
# p is principal
# r is montly rate
# n is number of months
def invest_every_month(p, r, n)
p * ( ((1+r)**(n+1) - 1) / r )
end
invest_every_month(528, 0.02/12, 25*12) # => 206168
There is another option that we keep the 1584 monthly payment, and shorten our mortgage term. What'll happen?
It'll take us 165 months (less than 14 years) to pay back the whole mortgage. After that, if we start investing the 1584 onto the 2% bond for the left 135 months, in the end, we are gonna have 241568, which is 77507 more than 164061.
Generalization
There are a few factors we need to consider:
money: 100_000,
bond_rate: 0.02,
mortgage_principal: 300_000,
mortgage_rate: 0.04,
mortgage_term: 25
bond_rate: 0.02,
mortgage_principal: 300_000,
mortgage_rate: 0.04,
mortgage_term: 25
Here is how I calculate them
option_a = invest_once(money, bond_rate, mortgage_term)
save_per_monthly_payment = monthly_payment(money, mortgage_rate/12, mortgage_term*12)
option_b_lower = saved_per_monthly_payment * mortgage_term * 12
option_b_higher = invest_every_month(saved_per_monthly_payment, bond_rate/12, mortgage_term*12)
save_per_monthly_payment = monthly_payment(money, mortgage_rate/12, mortgage_term*12)
option_b_lower = saved_per_monthly_payment * mortgage_term * 12
option_b_higher = invest_every_month(saved_per_monthly_payment, bond_rate/12, mortgage_term*12)
Guess 1 - Does different
money/mortgage_principal
rate make a difference?--> for money/mortgage_principal: 100000/100000
OPTION A: 164060.59944647306
OPTION B: 158351.05208933106 (-3.5%) - 206104.00785186747 (25.6%)
--> for money/mortgage_principal: 100000/200000
OPTION A: 328121.1988929461
OPTION B: 316702.1041786621 (-3.5%) - 412208.01570373494 (25.6%)
--> for money/mortgage_principal: 100000/300000
OPTION A: 492181.7983394192
OPTION B: 475053.15626799315 (-3.5%) - 618312.0235556023 (25.6%)
--> for money/mortgage_principal: 100000/400000
OPTION A: 656242.3977858922
OPTION B: 633404.2083573242 (-3.5%) - 824416.0314074699 (25.6%)
--> for money/mortgage_principal: 100000/500000
OPTION A: 820302.9972323653
OPTION B: 791755.2604466551 (-3.5%) - 1030520.0392593372 (25.6%)
OPTION A: 164060.59944647306
OPTION B: 158351.05208933106 (-3.5%) - 206104.00785186747 (25.6%)
--> for money/mortgage_principal: 100000/200000
OPTION A: 328121.1988929461
OPTION B: 316702.1041786621 (-3.5%) - 412208.01570373494 (25.6%)
--> for money/mortgage_principal: 100000/300000
OPTION A: 492181.7983394192
OPTION B: 475053.15626799315 (-3.5%) - 618312.0235556023 (25.6%)
--> for money/mortgage_principal: 100000/400000
OPTION A: 656242.3977858922
OPTION B: 633404.2083573242 (-3.5%) - 824416.0314074699 (25.6%)
--> for money/mortgage_principal: 100000/500000
OPTION A: 820302.9972323653
OPTION B: 791755.2604466551 (-3.5%) - 1030520.0392593372 (25.6%)
^ It doesn't matter at all, which makes sense that, essentially, option a is about using
money
to invest, option b is about how much money
we could save from monthly payment and make use of it.Guess 2 - how does
rate/mortgage_ratge
affects the result?--> for rate/mortgage_rate: 0.02/0.02
OPTION A: 164060.59944647306
OPTION B: 127156.3015932198 (-22.5%) - 165502.04773631014 (0.9%)
--> for rate/mortgage_rate: 0.02/0.025
OPTION A: 164060.59944647306
OPTION B: 134585.02022298123 (-18.0%) - 175170.9994899993 (6.8%)
--> for rate/mortgage_rate: 0.02/0.03
OPTION A: 164060.59944647306
OPTION B: 142263.39415730393 (-13.3%) - 185164.8935675483 (12.9%)
--> for rate/mortgage_rate: 0.02/0.035
OPTION A: 164060.59944647306
OPTION B: 150187.07107784745 (-8.5%) - 195478.06514866342 (19.1%)
--> for rate/mortgage_rate: 0.02/0.04
OPTION A: 164060.59944647306
OPTION B: 158351.05208933103 (-3.5%) - 206104.0078518674 (25.6%)
OPTION A: 164060.59944647306
OPTION B: 127156.3015932198 (-22.5%) - 165502.04773631014 (0.9%)
--> for rate/mortgage_rate: 0.02/0.025
OPTION A: 164060.59944647306
OPTION B: 134585.02022298123 (-18.0%) - 175170.9994899993 (6.8%)
--> for rate/mortgage_rate: 0.02/0.03
OPTION A: 164060.59944647306
OPTION B: 142263.39415730393 (-13.3%) - 185164.8935675483 (12.9%)
--> for rate/mortgage_rate: 0.02/0.035
OPTION A: 164060.59944647306
OPTION B: 150187.07107784745 (-8.5%) - 195478.06514866342 (19.1%)
--> for rate/mortgage_rate: 0.02/0.04
OPTION A: 164060.59944647306
OPTION B: 158351.05208933103 (-3.5%) - 206104.0078518674 (25.6%)
^ This seems the most important factor. Every one has a different expectation for
rate/mortgage_ratge
which really makes a difference.Guess 3 - How about
mortgage_term
?--> for mortgage_term: 10
OPTION A: 121899.44199947573
OPTION B: 121494.16579785553 (-0.3%) - 135608.60851450314 (11.2%)
--> for mortgage_term: 15
OPTION A: 134586.833832413
OPTION B: 133143.8266096664 (-1.1%) - 156120.44007379338 (16.0%)
--> for mortgage_term: 20
OPTION A: 148594.7395978355
OPTION B: 145435.27903185826 (-2.1%) - 179544.79822893484 (20.8%)
--> for mortgage_term: 25
OPTION A: 164060.59944647306
OPTION B: 158351.05208933103 (-3.5%) - 206104.0078518674 (25.6%)
--> for mortgage_term: 30
OPTION A: 181136.15841033548
OPTION B: 171869.50636756342 (-5.1%) - 236104.109499623 (30.3%)
OPTION A: 121899.44199947573
OPTION B: 121494.16579785553 (-0.3%) - 135608.60851450314 (11.2%)
--> for mortgage_term: 15
OPTION A: 134586.833832413
OPTION B: 133143.8266096664 (-1.1%) - 156120.44007379338 (16.0%)
--> for mortgage_term: 20
OPTION A: 148594.7395978355
OPTION B: 145435.27903185826 (-2.1%) - 179544.79822893484 (20.8%)
--> for mortgage_term: 25
OPTION A: 164060.59944647306
OPTION B: 158351.05208933103 (-3.5%) - 206104.0078518674 (25.6%)
--> for mortgage_term: 30
OPTION A: 181136.15841033548
OPTION B: 171869.50636756342 (-5.1%) - 236104.109499623 (30.3%)
^
mortgage_term
as expected, works as a magnifier.Summary
The bond return rate and mortgage interest rate are the two main factors. With the consideration of putting the saved monthly payment into the bonds, paying back 4% mortgage seems always a better option than investing 2% bonds. However, 2% and 4% are a subjective estimation, which varies on your own situation. As a side note, how many years left for your mortgage, the mortgage term, could magnify the difference.
Taking into account of other factors
With new factors taking into consideration, let's change our base line to 2% bond and 2% mortgage.
Tax
The interest from bonds are taxable as income. Suppose I'll only take out my investment after retirement, let's say I'll withdraw 60,000 every year, which is at an average 20% (23.23% to be accurate) tax rate. Applying to the 2% bond, can I say I should expect a 1.6% (2% * 80%) real return? No, the math seems wrong to me 🤔, but anyway it should goes to ⬇2%.
P*(1+real_rate)^n = P*(1+rate)^n*0.8
Paying out mortgage (debt) won't relate to tax. However, it has an opportunity cost. Other than that, if the saved monthly payment is invested into bonds, there is also a tax implication.
Inflation
As bond interests are fixed return, which is affected by inflation. I don't have an estimation on inflation. We might consider 2% bond return rate is after inflation. Anyway, inflation should depreciate the value of bond, ⬇2%.
With my superficial understanding, I kinda believe real estate is anti-inflation. In reality, there might be more factors affecting the relationship between real estate and inflation. However, compared to bond, paying back mortgage should be less punished by inflation.
Real estate fluctuation
I don't think it matters. I'm making the comparison between investing in bond to gain and prepaying the fixed amount mortgage to save.
Liquidity
amortised mortgage rate
I'm not sure how to have a solid estimation on mortgage rate over 20 or 30 years, considering it's split into 2~5 years terms in reality.
Reference