Amortization schedule

From Wikipedia, the free encyclopedia

An amortization schedule is a table detailing each periodic payment on a amortizing loan (typically a mortgage), as generated by an amortization calculator.

While a portion of every payment is applied towards both the interest and the principal balance of the loan, the exact amount applied to principal each time varies (with the remainder going to interest). An amortization schedule reveals the specific monetary amount put towards interest, as well as the specific put towards the Principal balance, with each payment. Initially, a large portion of each payment is devoted to interest. As the loan matures, larger portions go towards paying down the principal.

Many kinds of amortization exist, including:

  • Straight line (linear)
  • Declining balance
  • Annuity
  • Bullet (all at once)
  • Increasing balance (negative amortization)

Amortization schedules run in chronological order. The first payment is assumed to take place one full payment period after the loan was taken out, not on the first day (the amortization date) of the loan. The last payment completely pays off the remainder of the loan. Often, the last payment will be a slightly different amount than all earlier payments.

In addition to breaking down each payment into interest and principal portions, an amortization schedule also reveals interest-paid-to-date, principal-paid-to-date, and the remaining principal balance on each payment date.

Contents

[edit] Example amortization schedule

(To run your own numbers, try an amortization calculator.)

This amortization schedule is based on the following assumptions:

  • Principal = $100,000
  • Annual Interest rate = 8%
  • Number of payments = 360 (30 years x 12 months x 1 payment per month)
  • Fixed Monthly Payment = $733.76
Month Principal Interest P + I Σ Principal paid Σ Interest paid Principal balance
0 n/a n/a n/a n/a n/a 100,000.00
1 67.10 666.67 733.76 67.10 666.67 99,932.90
2 67.55 666.22 733.76 134.64 1,332.89 99,865.36
3 68.00 665.77 733.76 202.64 1,998.66 99,797.36
4 68.45 665.32 733.76 271.09 2,663.97 99,728.91
5 68.91 664.86 733.76 339.99 3,328.83 99,660.01
359 724.08 9.69 733.76 99,271.09 164,150.39 728.91
360 728.91 4.86 733.76 100,000.00 164,155.25 0.00

Note: Rounding errors mean that, depending how the lender accumulates these errors, the blended payment (principal + interest) may vary slightly some months to keep these errors from accumulating; or, the accumulated errors are adjusted for at the end of each year, or at the final loan payment.

There are a few crucial points worth noting when mortgaging a home with an amortized loan. First, there is substantial disparate allocation of the monthly payments toward the interest, especially during the first 18 years of the mortgage. In the example above, Payment 1 allocates about 80-90% of the total payment towards interest and only $67.09 (or 10-20%) toward the Principal balance. The exact percentage allocated towards payment of the principal depends on the interest rate. Not until payment 257 or 21 years into the loan does the payment allocation towards principal and interest even out and subsequently tip the majority of the monthly payment toward Principal balance pay down.

Second, understanding the above statement, the repetitive refinancing of an amortized mortgage loan, even with decreasing interest rates and decreasing Principal balance, can cause the borrower to pay over 500% of the value of the original loan amount. 'Re-amortization' or restarting the amortization schedule via a refinance causes the entire schedule to restart: the new loan will be 30 years from the refinance date, and initial payments on this loan will again be largely interest, not principal. If the rate is the same, say 8%, then the interest/principal allocation will be the same as at the start of the original loan (say, 90/10). This economically unfavorable situation is often mitigated by the apparent decrease in monthly payment and interest rate of a refinance, when in fact the borrower is increasing the total cost of the property. This fact is often (understandably) overlooked by borrowers.

Third, the payment on an amortized mortgage loan remains the same for the entire loan term, regardless of Principal balance owed. For example, the payment on the above scenario will remain $733.76 regardless if the Principal balance is $100,000 or $50,000. Paying down large chunks of the Principal balance in no way affects the monthly payment, it simply reduces the term of the loan and reduces the amount of interest that can be charged by the lender resulting in a quicker payoff. To avoid these caveats of an amortizing mortgage loan many borrowers are choosing an Interest-only loan to satisfy their mortgage financing needs. Interest-only loans have their caveats as well which must be understood before choosing the mortgage payment term that is right for the individual borrower.

[edit] Creating an Amortization Schedule

In order to create an amortization schedule, you will need to use the following formula to calculate a periodic payment, A:

A = \frac{i \times P \times (1 + i)^n}{(1+i)^n-1}

Where P is the principal, i is the periodic interest rate, and n is the number of periods (payments) in which the principal is to be paid. For monthly payments, the periodic interest rate i is the annual interest rate divided by 12 (number of periods per year), and the number of periods n is the number of years times 12 (again, number of periods per year).

Once you determine the fixed monthly payment using the formula above, you can determine the allocation of each payment between interest and principal. The amount of principal paid each month is the difference between the monthly payment amount and the amount of interest due on the balance for that month.

First, determine the amount of interest due for a payment by multiplying the periodic interest rate by the outstanding principal (for monthly payments, divide the annual rate by 12 to get the periodic rate). For the first payment, the outstanding principal is the full loan amount. Second, determine the amount of principal paid by subtracting the interest due from the total monthly payment amount. Finally, subtract the amount of principal paid from the outstanding loan amount to determine the new principal balance. Repeat the calculation for each follwing period (month) using the previous month's ending balance as the next month's outstanding principal in the calculation of interest due.

As you get near the end of the loan, the loan balance (principal) gets smaller and less interest is due. Since the monthly payment amount stays the same (at least for a standard 15 or 30 year mortgage) and the interest due decreases, you apply an increasingly larger amount of each successive payment towards the principal. For your last few payments, you owe very little interest on the small remaining balance, so you pay off the remaining principal very quickly.

As a simple example, let's say that we're lending $100 at a 10% a year to be paid back in five years using annual payments. The payments would be:

\frac{10% \times $100 \times (100% + 10%)^5}{(100% + 10%)^5-100%} = $26.38

We can now create a table detailing the principal, and interest.

Year Outstanding Balance Payment Interest Paid Principal Paid
1 $100 $26.38 $10.00 $16.38
2 $83.62 $26.38 $8.36 $18.02
3 $65.60 $26.38 $6.56 $19.82
4 $45.78 $26.38 $4.58 $21.80
5 $23.98 $26.38 $2.40 $23.98

As you can see, the amount of interest due each year is 10% of the balance. The amount paid towards the principal is the difference between the fixed annual payment (determined by the formula) and the annual interest due.

[edit] Sample VB.NET Program

The following code sample is intended for use in a Microsoft Visual Basic .NET 2005 Windows Console application. With minimal effort is could be converted to work in an ASP.NET or Windows Forms environment. Considering the formula in the previous section, this program will generate payments P1 through Pn-1 having an amount equal to P. Payment Pn will be adjusted to account for any rounding errors. Pn may be less than, equal to, or greater than P.

        Sub DoLoanCalc()

                ' ~120% APR w/ five monthly payments on $100.00 loan
                WritePaymentSchedule(120 / 100 / 12, 5, 100)

                Console.WriteLine()
                Console.WriteLine()

                ' ~140% APR w/ 19 bi-weekly payments on $2500.00 loan
                WritePaymentSchedule(140 / 100 / 365 * 14, 19, 2500)

        End Sub
        ' Create a simple interest amoritization schedule, rounding each periodic interest payment to the nearest 1/100th (US penny)
        Sub WritePaymentSchedule(ByVal PeriodicRate As Double, ByVal NumberOfPeriods As Integer, ByVal LoanAmount As Decimal)

                Dim decI, decPmt As Decimal
                Dim decTotP, decTotI, decTotPmt As Decimal
                Dim strP, strI, strBal, strPmtAmount As String
                Dim intColWidth As Integer = 12

                ' get the simple interest payment
                decPmt = GetRoundedSimpleInterestPayment(PeriodicRate, NumberOfPeriods, LoanAmount)

                ' Write out pretty header
                Console.CursorLeft = intColWidth + NumberOfPeriods.ToString.Length - 6
                Console.Write("Payment")
                Console.CursorLeft = intColWidth * 2 + NumberOfPeriods.ToString.Length - 7
                Console.Write("Principal")
                Console.CursorLeft = intColWidth * 3 + NumberOfPeriods.ToString.Length - 5
                Console.Write("Interest")
                Console.CursorLeft = intColWidth * 4 + NumberOfPeriods.ToString.Length - 3
                Console.Write("Balance")
                Console.WriteLine()

                ' Write out starting balance
                Console.CursorLeft = intColWidth * 4 + NumberOfPeriods.ToString.Length - Format(LoanAmount, "0.00").Length + 4
                Console.Write(Format(LoanAmount, "0.00"))
                Console.WriteLine()

                ' make a pretty payment amount
                strPmtAmount = Format(decPmt, "0.00")

                For intX As Integer = 1 To NumberOfPeriods

                        ' figure out amount of current payment that goes to interest
                        decI = CDec(Math.Round(LoanAmount * PeriodicRate, 2))

                        ' adjust the last payment to account for accumulated rounding errors
                        If intX = NumberOfPeriods Then
                                decPmt = LoanAmount + decI
                                strPmtAmount = Format(decPmt, "0.00")
                        End If

                        decTotP += decPmt - decI
                        decTotI += decI
                        decTotPmt += decPmt

                        ' reduce the loan balance by the amount of the principal payment
                        LoanAmount -= decPmt - decI

                        ' make pretty strings for output
                        strI = Format(decI, "0.00")
                        strP = Format(decPmt - decI, "0.00")
                        strBal = Format(LoanAmount, "0.00")

                        ' output the pretty values that make up one line in the amort schedule
                        Console.CursorLeft = NumberOfPeriods.ToString.Length - intX.ToString.Length
                        Console.Write(intX.ToString)
                        Console.CursorLeft = intColWidth + NumberOfPeriods.ToString.Length - strPmtAmount.Length + 1
                        Console.Write(strPmtAmount)
                        Console.CursorLeft = intColWidth * 2 + NumberOfPeriods.ToString.Length - strP.Length + 2
                        Console.Write(strP)
                        Console.CursorLeft = intColWidth * 3 + NumberOfPeriods.ToString.Length - strI.Length + 3
                        Console.Write(strI)
                        Console.CursorLeft = intColWidth * 4 + NumberOfPeriods.ToString.Length - strBal.Length + 4
                        Console.Write(strBal)
                        Console.WriteLine()

                Next

                ' Write out totals
                Console.CursorLeft = intColWidth + NumberOfPeriods.ToString.Length - Format(decTotPmt, "0.00").Length + 1
                Console.Write(Format(decTotPmt, "0.00"))
                Console.CursorLeft = intColWidth * 2 + NumberOfPeriods.ToString.Length - Format(decTotP, "0.00").Length + 2
                Console.Write(Format(decTotP, "0.00"))
                Console.CursorLeft = intColWidth * 3 + NumberOfPeriods.ToString.Length - Format(decTotI, "0.00").Length + 3
                Console.Write(Format(decTotI, "0.00"))
                Console.WriteLine()

        End Sub
        ' Calculates a loan payment using simple interest - this is the same as the Excel PMT function except we round to the nearest 1/100th (US penny)
        Function GetRoundedSimpleInterestPayment(ByVal RatePerPeriod As Double, ByVal NumberOfPeriods As Integer, ByVal LoanAmount As Double) As Decimal

                Return CDec(Math.Round((RatePerPeriod * LoanAmount * (1 + RatePerPeriod) ^ NumberOfPeriods) / ((1 + RatePerPeriod) ^ NumberOfPeriods - 1), 2))

        End Function

The output from the above program is as follows:

       Payment    Principal     Interest      Balance
                                               100.00
1        26.38        16.38        10.00        83.62
2        26.38        18.02         8.36        65.60
3        26.38        19.82         6.56        45.78
4        26.38        21.80         4.58        23.98
5        26.38        23.98         2.40         0.00
        131.90       100.00        31.90


        Payment    Principal     Interest      Balance
                                               2500.00
 1       213.14        78.89       134.25      2421.11
 2       213.14        83.13       130.01      2337.98
 3       213.14        87.59       125.55      2250.39
 4       213.14        92.30       120.84      2158.09
 5       213.14        97.25       115.89      2060.84
 6       213.14       102.48       110.66      1958.36
 7       213.14       107.98       105.16      1850.38
 8       213.14       113.78        99.36      1736.60
 9       213.14       119.89        93.25      1616.71
10       213.14       126.32        86.82      1490.39
11       213.14       133.11        80.03      1357.28
12       213.14       140.26        72.88      1217.02
13       213.14       147.79        65.35      1069.23
14       213.14       155.72        57.42       913.51
15       213.14       164.09        49.05       749.42
16       213.14       172.90        40.24       576.52
17       213.14       182.18        30.96       394.34
18       213.14       191.96        21.18       202.38
19       213.25       202.38        10.87         0.00
        4049.77      2500.00      1549.77


[edit] External links