# Why does the TD Bank principal portion of a mortgage payment go up and down in sawtooth? (why is interest payment on annuity in arrears non-monotonic)

I'm trying to understand the amortization schedules of TD mortgages, as produced by the TD Calculator.

The monthly payment amounts (on this fixed rate mortgage) are predictable and constant, but the portion of each payment that goes to interest is non-monotonic. I would expect it to start high, and progressively reduce. But it jumps up and down... why is that?

E.g.:

A 1M dollar loan, Amortization of 25 year, monthly payments, at a quoted fixed rate of 5.34%. Screenshot is from Aug 14 2022.  And the equivalent table, in text:

Payment # Opening Bal. Principal Interest Payment Closing Balance
1 \$1,000,000.00 \$1,672.48 \$4,338.62 \$6,011.10 \$998,327.52
2 \$998,327.52 \$1,535.36 \$4,475.74 \$6,011.10 \$996,792.16
3 \$996,792.16 \$1,686.40 \$4,324.70 \$6,011.10 \$995,105.76
4 \$995,105.76 \$1,549.80 \$4,461.30 \$6,011.10 \$993,555.96
5 \$993,555.96 \$1,556.75 \$4,454.35 \$6,011.10 \$991,999.21
6 \$991,999.21 \$1,994.12 \$4,016.98 \$6,011.10 \$990,005.09
7 \$990,005.09 \$1,572.67 \$4,438.43 \$6,011.10 \$988,432.42
8 \$988,432.42 \$1,722.67 \$4,288.43 \$6,011.10 \$986,709.75
9 \$986,709.75 \$1,587.45 \$4,423.65 \$6,011.10 \$985,122.30
10 \$985,122.30 \$1,737.03 \$4,274.07 \$6,011.10 \$983,385.27
11 \$983,385.27 \$1,602.35 \$4,408.75 \$6,011.10 \$981,782.92
12 \$981,782.92 \$1,609.53 \$4,401.57 \$6,011.10 \$980,173.39

What's at play?

## Edit: Wall of math below for trying out answers

It was promptly suggested that the varying rates might ebb and flow with the lengths of the months in the calendar (2022). I was curious to try which particular fraction they were using to estimate the length of the year.

First, I compute the effective annual rate from the fixed rate

``````# fixed mortgage rates in canada compound on 6 months, so
# we have to simulate the quoted APR compounding every 6 mo.

APR = 0.0534    # quoted rate
EAR = (1+0.0534/2)^2 - 1 = 0.05411289 = 5.41%
``````

From there, we can derive periodic interest rates for different periods:

``````# 30 day, 31 day, and 28 day
rate_30 = (1+EAR)^(30/365) - 1  # Apr, Jun, Sep, Nov
rate_31 = (1+EAR)^(31/365) - 1  # Jan, Mar, May, Jul, Aug, Oct, Dec
rate_28 = (1+EAR)^(28/365) - 1  # Feb
``````

This is the same as if we'd established the equivalent daily rate, and then compounded it each day of the month during that month.

``````daily_rate = (1+EAR)^(1/365) - 1

rate_30 = (1+EAR)^(30/165) - 1
= ((1+EAR)^(1/165))^30 - 1
= (1 + daily_rate)^30 - 1

# same for rate_28 and rate_31
``````

Just to show that the above works, if you borrowed `X` dollars at the start of the year, didn't make any payments, and at the end of each month multiplied the balance with the rate of that month, and then looked at the final balance a year later, you'd have accumulated 5.41% additional debt:

``````Y2_loan = X * (1+jan_rate) * (1+feb_rate) * ... * (1+dec_rate)
= X * (1+rate_31) * (1+ rate_28) * ... * (1+rate_31)
= X * (1+rate_31)^7 * (1 + rate_28) * (1+ rate_30)^4
= X * (1+EAR)^(217/365) * (1+EAR)^(28/365) * (1+EAR)^(120)
= X * (1+EAR)^(365/365) = X * (1+EAR)
= 1.0541129 * X
``````

(just to show that the interest compounded that way is equivalent to compounding once yearly at 5.411289%)

### Reversing the fractional year amounts

I then tried to use the equations above to determine which fractions of a year were being used by TD's calculator.

I look at the first few payment data points A, B, C, which are on consecutive months:

(O)pening principal (I)nterest Payment Effective monthly rate (I/O)
1,000,000 \$4,338.62 A= 0.004338620
998,327.52 \$4,475.74 B= 0.004483238
996,792.16 \$4,324.70 C= 0.004338618

We see that the rate for the second month is higher than the first, and we see that the third effective rate C is the same as A. Let's ignore the fact that the monetary values are rounded for a moment.

We can plug the obtained rate in our yearly formula to derive the exponent applied to the EAR, dubbed `frac_A` here:

`````` (1+EAR)^frac_A - 1 = A

(1+EAR)^frac_A - 1 = 0.004338620

(1+EAR)^frac_A = 1.004338620

log((1+EAR) ^ frac_A) = log(1.00338620)

frac_A * log(1+EAR) = log(1.00338620)

frac_A = log(1.00338620)/log(1+EAR)

frac_A = 0.082149378
= 29.98452308 / 365   # Assuming the year has 365 days exactly.
= 30 / 365.1883997    # Assuming the month has 30 days exactly.

``````

So it could be that the first period corresponds to a 29.9845 day-period in a year of 365 days, or a period of 30 days in a year with 365.19 days.

If I do the same to datapoint B, then we obtain a period of 30.9818 days in a year of 365 days, or a period of 31 days in a year with 365.21 days.

### Considering numerical rounding on the dollar amounts

There shouldn't be much rounding error on the very first payment, and so when taking into account rounding, the true value of that first payment could lie anywhere between \$4,338.61 and \$4,338.63 before rounding (either up or down).

• If the number was on the limit of \$4338.61, then that would correspond to a month with 29.98445 days, or a 30 day period in a 365.1892 day year

• If the number was on the limit of 4338.63, then that's 29.98459 days, or a 365.2149 days in a year.

I can't get it over the 30 day mark, so the rounding must happen elsewhere, probably on the EAR calculation.

• Should this be tagged as Canadian-specific? Aug 15, 2022 at 17:04
• This specific bank is Canadian, but I expect there are similar issues with other amortization tables. The general principle certainly isn’t specific to Canada.
– cjm
Aug 16, 2022 at 5:00
• @cjm That certainly is not how US mortgages work, for one. Aug 16, 2022 at 6:13
• @void_ptr not US mortgages, but I have a US vehicle loan that has principal payment amounts that fluctuate like this example. Aug 16, 2022 at 15:00
• Do you have data about when each payment was received, credited, or posted? I wonder if variability in the payment receipt date could be affecting this. Also, what date was the loan taken out, and what date was first payment due? Sep 8, 2022 at 23:17

I'm fairly sure this is because they're including the fact that months aren't all the same length. This is obscured because they don't actually include the relevant dates with the results, or even mention that the table will vary slightly based on the current date. But here's your table with the months and their length inserted, and a new column that divides the interest by the number of days in the month.

Payment # Opening B. Principal Month Interest Payment Ending B. Interest/Day
1 \$1,000,000.00 \$1,672.48 Sep 30 \$4,338.62 \$6,011.10 \$998,327.52 \$144.62
2 \$998,327.52 \$1,535.36 Oct 31 \$4,475.74 \$6,011.10 \$996,792.16 \$144.38
3 \$996,792.16 \$1,686.40 Nov 30 \$4,324.70 \$6,011.10 \$995,105.76 \$144.16
4 \$995,105.76 \$1,549.80 Dec 31 \$4,461.30 \$6,011.10 \$993,555.96 \$143.91
5 \$993,555.96 \$1,556.75 Jan 31 \$4,454.35 \$6,011.10 \$991,999.21 \$143.69
6 \$991,999.21 \$1,994.12 Feb 28 \$4,016.98 \$6,011.10 \$990,005.09 \$143.46
7 \$990,005.09 \$1,572.67 Mar 31 \$4,438.43 \$6,011.10 \$988,432.42 \$143.18
8 \$988,432.42 \$1,722.67 Apr 30 \$4,288.43 \$6,011.10 \$986,709.75 \$142.95
9 \$986,709.75 \$1,587.45 May 31 \$4,423.65 \$6,011.10 \$985,122.30 \$142.70
10 \$985,122.30 \$1,737.03 Jun 30 \$4,274.07 \$6,011.10 \$983,385.27 \$142.47
11 \$983,385.27 \$1,602.35 Jul 31 \$4,408.75 \$6,011.10 \$981,782.92 \$142.22
12 \$981,782.92 \$1,609.53 Aug 31 \$4,401.57 \$6,011.10 \$980,173.39 \$141.99

Notice how the amount of interest varies with the length of the month, especially the big dip in February. Of course, since you have a fixed payment amount, the principal varies inversely with the interest. The Interest/Day is steadily decreasing, as you'd expect as you pay the balance down.

• Ooooh! you're on to something for sure. TD computes interests on a daily basis then?. Every lender seems to use their own special sauce... I'll try to see if the numbers line up when I bring back the EAR to the period of a day `daily_interest = (1+EAR)^(1/365) - 1`, and then compound it to the number of days since the last payment. Aug 15, 2022 at 3:23
• @pf_init_js look us "day count basis". There are a handful of industry standard methods - many banks choose ACT/360 or ACT/365 which uses the actual number of days in a month. Some use 30/360 which uses the same number of days each month. It's not "using :"their own special sauce" Aug 15, 2022 at 13:27
• @pf_init_js Also note that interest does not compound daily, so your equivalent interest rate for a month should just be `R * (N/365)` or possibly `R * (N/360)` Aug 15, 2022 at 16:04
• in canada, fixed rates compound every 6 months according to the interest act of canada, but banks still seem to compute the EAR, and then derive a periodic interest rate matching your desired payment period, month, semi-month, bi-week, week, etc. i just meant that it’s possible to obtain daily interest rate from EAR: e.g. `daily_rate = (1+EAR)^(1/365) - 1` and experiment with that. Re: “special sauce: the RBC online calculator defines a week as 7/365.25 years”. Thanks for ACT36X pointers, that looks fun. Aug 16, 2022 at 2:01
• I edited my question with some derivations in an "appendix". I tried to reverse the exact fractions used in the calculator. I got close, but I can't land exactly on the dollar amounts the calculator provides. In any case, it's definitely a 30 day vs 31 day thing (with a year of about 365.20 days). I tried the astronomical year too (365.2425), it's not that. Definitely not ACT360. Aug 17, 2022 at 5:57