In this chapter, you will:
Understand the concept of the time value of money
Calculate loan payments, interest costs, and cumulative principal and interest payments
Building fixed-rate and dynamic loan amortization schedules
Determine the term of a loan given the interest rate, the regular payment, and the loan principal amount
Calculate the interest rate required for a loan given the loan term, the loan payment, and the loan principal
Figure out how much you can borrow given the interest rate, loan payment, and loan term
Excel is loaded with financial features that give you powerful tools for building worksheets that manage both business and personal finances. You can use these functions to calculate such things as the monthly payment on a loan, the future value of an annuity, the internal rate of return of an investment, or the yearly depreciation of an asset. The final three chapters of this book cover these and many other uses for Excel’s financial formulas.
This chapter covers formulas and functions related to loans and mortgages. You’ll learn about the time value of money; how to calculate loan payments, loan periods, the principal and interest components of a payment, and the interest rate; and how to build an amortization schedule.
The time value of money means that a dollar in hand now is worth more than a dollar promised at some future date. This seemingly simple idea underlies not only the concepts and techniques you learn in this chapter but also the investment formulas in Chapter 5, “Working with investment formulas,” and the discount formulas in Chapter 16, “Building discount formulas.” A dollar now is worth more than a dollar promised in the future for two reasons:
You can invest a dollar now. If you earn a positive return, the sum of the dollar and interest earned will be worth more than the future dollar.
You might never see the future dollar. Due to bankruptcy, cash-flow problems, or any number of other reasons, there’s a risk that the company or person promising you the future dollar might not be able to deliver it.
These two factors—interest and risk—are at the heart of most financial formulas and models. More realistically, these factors mean that you’re mostly comparing the benefits of investing a dollar now versus getting a dollar in the future plus some risk premium—an amount that compensates for the risk you’re taking in waiting for the dollar to be delivered.
You compare these by looking at the present value (the amount something is worth now) and the future value (the amount something is worth in the future). They’re related as follows:
Future value = Present value + Interest
Present value = Future value – discount
Much financial analysis boils down to comparing these formulas. If the present value in A is greater than the present value in B, A is the better investment; conversely, if the future value in B is better than the future value in A, B is the better investment.
Most of the formulas you’ll work with over the next three chapters involve these three factors—the present value, the future value, and the interest rate (or the discount rate)—plus two related factors: the periods, which are the number of payments or deposits over the term of the loan or investment, and the payment, which is the amount of money paid out or invested in each period.
When building your financial formulas, you need to ask yourself the following questions:
Who or what is the subject of the formula? On a mortgage analysis, for example, are you performing the analysis on behalf of yourself or the bank?
Which way is the money flowing with respect to the subject? For the present value, future value, and payment, enter money that the subject receives as a positive quantity, and enter money that the subject pays out as a negative quantity. For example, if you’re the subject of a mortgage analysis, the loan principal (the present value) is a positive number because it’s money that you receive from the bank; the payment and the remaining principal (the future value) are negative because they’re amounts that you pay to the bank.
What is the time unit? The underlying unit of both the interest rate and the period must be the same. For example, if you’re working with the annual interest rate, you must express the period in years. Similarly, if you’re working with monthly periods, you must use a monthly interest rate.
When are the payments made? Excel differentiates between payments made at the end of each period and those made at the beginning.
When negotiating a loan to purchase equipment or a mortgage for your house, the first concern that comes up is almost always the size of the payment you’ll need to make each period. This is just basic cash-flow management because the monthly (or whatever) payment must fit within your budget.
To return the periodic payment for a loan, use the PMT() function:
PMT(rate, nper, pv[, fv][, type])
rate |
The fixed rate of interest over the term of the loan. |
nper |
The number of payments over the term of the loan. |
pv |
The loan principal. |
fv |
The future value of the loan. |
type |
The type of payment. Use 0 (the default) for end-of-period payments; use 1 for beginning-of-period payments. |
For example, the following formula returns the monthly payment of a $10,000 loan with an annual interest rate of 6% (0.5% per month) over five years (60 months):
=PMT(0.005, 60, 10000)
Financial formulas rarely use hard-coded function arguments. Instead, you almost always are better off placing the argument values in separate cells and then referring to those cells in the formula. This enables you to do a rudimentary form of loan analysis by plugging in different argument values and seeing the effects they have on the formula result.
Figure 14-1 shows an example of a worksheet set up to perform such an analysis. The PMT() formula is in cell B7, and the function arguments are stored in B4 (rate), B5 (nper), and B6 (pv).
Note two things about the formula and result in cell B7:
The interest rate is an annual value, and the periods are expressed in years, so to get a monthly payment, you must convert these values to their monthly equivalents. This means that the interest rate is divided by 12 and the number of periods is multiplied by 12:
=PMT(B4 / 12, B5 * 12, B6)
The PMT() function returns a negative value, which is correct because this worksheet is set up from the point of view of the person receiving the loan, and the payment is money that flows away from that person.
Many loans are set up so that the payments take care of only a portion of the principal, with the remainder due as an end-of-loan balloon payment. This balloon payment is the future value of the loan, so you need to factor it into the PMT() function as the fv argument.
You might think that the pv argument should be the partial principal—that is, the original loan principal minus the balloon amount. This seems right because the loan term is designed to pay off the partial principal. That’s not the case, however. In a balloon loan, you also pay interest on the balloon part of the principal. That is, each payment in a balloon loan has three components:
A paydown of the partial principal
Interest on the partial principal
Interest on the balloon portion of the principal
Therefore, the PMT() function’s pv argument must be the entire principal, with the balloon portion as the (negative) fv argument.
For example, suppose that the loan from the previous section has a $3,000 balloon payment. Figure 14-2 shows a new worksheet that adds the balloon payment to the model and then calculates the payment using the following revised formula:
=PMT(B2 / 12, B3 * 12, B4, -B5)
Note that the balloon payment is entered into the worksheet as a positive value (because it represents, in this model, money going out), so the negation operation is used in the formula (-B5) to convert it to a negative value.
When you know the payment, you can calculate the total interest costs of a loan by first figuring the total of all the payments and then subtracting the principal. The remainder is the total interest paid over the life of the loan.
Figure 14-3 shows a worksheet that performs this calculation. In column B, cell B7 contains the total amount paid (the monthly payment multiplied by the number of months), and cell B8 takes the difference. Column C performs the same calculations on the loan with a balloon payment. As you can see, in the balloon payment scenario, the payment total is about $2,600 smaller, but the total interest is about $400 higher.
Any loan payment has two components: principal repayment and interest charges. Interest charges are almost always front loaded, which means that the interest component is highest at the beginning of the loan and gradually decreases with each payment. This means, conversely, that the principal component increases gradually with each payment.
To calculate the principal and interest components of a loan payment, use the PPMT() and IPMT() functions, respectively:
PPMT(rate, per, nper, pv[, fv][, type])
IPMT(rate, per, nper, pv[, fv][, type])
rate |
The fixed rate of interest over the term of the loan. |
per |
The number of the payment period (where the first payment is 1 and the last payment is the same as nper). |
nper |
The number of payments over the term of the loan. |
pv |
The loan principal. |
fv |
The future value of the loan. (The default is 0.) |
type |
The type of payment. Use 0 (the default) for end-of-period payments; use 1 for beginning-of-period payments. |
Figure 14-4 shows a worksheet that applies these functions to the loan. The table shows the principal (column F) and interest (column G) components of the loan for the first 10 periods and for the final period. Note that with each period, the principal portion increases and the interest portion decreases. However, the total remains the same (as confirmed by the Total column), which is as it should be because the payment remains constant through the life of the loan.
Another way to calculate the total interest paid on a loan is to sum the various IPMT() values over the life of the loan. You can do this by using an array formula that generates the values of the IPMT() function’s per argument. Here’s the general array formula:
=IPMT(rate, ROW(INDIRECT("A1:A" & nper)), nper, pv[, fv][, type])
The array of per values is generated by the following expression:
ROW(INDIRECT("A1:A" & nper))
The INDIRECT() function converts a string range reference into an actual range reference, and then the ROW() function returns the row numbers from that range. By starting the range at A1, this expression generates integer values from 1 to nper, which covers the life of the loan.
For example, here’s an array formula that calculates the total interest cost of the loan model shown in Figure 14-4:
=SUM(IPMT(B2 / 12, ROW(INDIRECT("A1:A" & B3 * 12)), B3 * 12, B4))
Caution
The array formula doesn’t work if the loan includes a balloon payment.
Knowing how much principal and interest you pay each period is useful, but it’s usually handier to know how much principal or interest you’ve paid in total up to a given period. For example, if you sign up for a mortgage with a five-year term, how much principal will you have paid off by the end of the term? Similarly, a business might need to know the total interest payments a loan requires in the first year so that it can factor the result into its expense budgeting.
You could solve these kinds of problems by building a model that uses the PPMT() and IPMT() functions over the time frame you’re dealing with and then summing the results. However, Excel has two functions that offer a more direct route:
CUMPRINC(rate, nper, pv, start_period, end_period, type)
CUMIPMT(rate, nper, pv, start_period, end_period, type)
rate |
The fixed rate of interest over the term of the loan. |
nper |
The number of payments over the term of the loan. |
pv |
The loan principal. |
start_period |
The first period to include in the calculation. |
end_period |
The last period to include in the calculation. |
type |
The type of payment. Use 0 for end-of-period payments; use 1 for beginning-of-period payments. |
Caution
In both CUMPRINC() and CUMIPMT(), all of the arguments are required. If you omit the type argument (which is optional in most other financial functions), Excel returns the #N/A error.
The main difference between CUMPRINC() and CUMIPMT() and PPMT() and IPMT() is the start_period and end_period arguments. For example, to find the cumulative principal or interest in the first year of a loan, you set start_period to 1 and end_period to 12; for the second year, you set start_period to 13 and end_period to 24. Here are a couple of formulas that calculate these values for any year, assuming that the year value (1, 2, and so on) is in cell D2:
start_period: (D2 - 1) * 12 + 1 end_period: D2 * 12
Figure 14-5 shows a worksheet that returns the cumulative principal and interest paid in each year of a loan, as well as the total principal and interest for all five years.
Note
The CUMIPMT() function gives you an easier way to calculate the total interest costs for a loan. Just set start_period to 1 and end_period to the number of periods (the value of nper).
Caution
Although the CUMPRINC() function works as advertised if the loan includes a balloon payment, the CUMIPMT() function does not.
A loan amortization schedule is a table that shows a sequence of calculations over the life of a loan. For each period, the schedule shows figures such as the payment, the principal and interest components of the payment, the cumulative principal and interest, and the remaining principal. The next few sections take you through various amortization schedules designed for different scenarios.
The simplest amortization schedule is just a straightforward application of three of the payment functions you’ve seen so far: PMT(), PPMT(), and IPMT(). Figure 14-6 shows the result, which has the following features:
The values for the four main arguments of the payment functions are stored in the range B2:B5.
The amortization schedule is shown in A9:G18. Column A contains the period, and subsequent columns calculate the payment (B), principal component (C), interest component (D), cumulative principal (E), and cumulative interest (F). The Remaining Principal column (G) shows the original principal amount (B4) minus the cumulative principal for each period.
The cumulative principal and interest values are calculated by adding the running totals of the principal and interest components. You need to do this because the CUMPRINC() and CUMIPMT() functions don’t work with balloon payments. If you never use balloon payments, you can convert the worksheet to use these functions.
This schedule uses a yearly time frame, so no adjustments are applied to the rate and nper arguments.
The amortization schedule in Figure 14-6 assumes that the interest rate remains fixed throughout the life of the loan. To learn how to build an amortization schedule for a variable-rate loan, see “Building a variable-rate mortgage amortization schedule,” later in this chapter.
The problem with the amortization schedule in Figure 14-6 is that it’s static. It works well if you change the interest rate or the principal, but it doesn’t handle other types of changes very well:
If you want to use a different time basis—for example, monthly instead of annual—you need to edit the initial formulas for payment, principal, interest, cumulative principal, and cumulative interest, and then refill the schedule.
If you want to use a different number of periods, you need to either extend the schedule (for a longer term) or shorten the schedule and delete the extraneous periods (for a shorter term).
Both operations are tedious and time-consuming enough that they greatly reduce the value of the amortization schedule. To make the schedule truly useful, you need to reconfigure it so that the schedule formulas and the schedule itself adjust automatically to any change in the time basis or the length of the term.
Figure 14-7 shows a worksheet that implements such a dynamic amortization schedule.
Here’s a summary of the changes you make to create this schedule’s dynamic behavior:
To change the time basis, select a value—Annual, Semi-Annual, Quarterly, or Monthly—in the Time Basis drop-down menu. These values come from the text literals in the range G3:G6. The number of the selected list item is stored in cell F2.
The time basis determines the time factor, the amount by which you have to adjust the rate and the term. For example, if the time basis is Monthly, the time factor is 12. This means that you divide the annual interest rate (C2) by 12, and you multiply the term (C3) by 12. These new values are stored in the Adjusted Rate (E4) and Total Periods (E5) cells. The Time Factor cell (E3) uses the following formula:
=CHOOSE(F2, 1, 2, 4, 12)
Given the adjusted rate (E4) and the total periods (E5), the schedule formulas can reference these cells directly and always return the correct value for any selected time basis. For example, here’s the formula that calculates the payment:
=PMT(E4, E5, C4, C5, C6)
The schedule adjusts its size automatically, depending on the Total Periods value (E5). If Total Periods is 15, the schedule contains 15 rows (not including the headers); if Total Periods is 180, the schedule contains 180 rows.
Dynamically adjusting the size of the schedule is a function of the Total Periods value (E5). The first period (A10) is always 1; each subsequent period checks the previous value to see if it’s less than Total Periods. Here’s the formula in cell A11:
=IF(A10 < $E$5, A10 + 1, "")
If the period value of the cell above the current cell is less than Total Periods, the current cell is still within the schedule, so calculate the current period (the value from the cell above plus 1) and display the result; otherwise, you’ve gone past the end of the schedule, so display a blank.
The various payment columns check the period value. If it’s not blank, calculate and display the result; otherwise, display a blank. Here’s the formula for the Payment value in B11:
=IF(A11 <> "", PMT($E$4, $E$5, $C$4, $C$5, $C$6), "")
These changes result in a totally dynamic schedule that adjusts automatically as you change the time basis or the term.
Note
The formulas in the amortization schedule have been filled down to row 500, which should be enough room for just about any schedule (up to about 40 years, using the monthly basis). If you require a longer schedule, you have to fill in the schedule formulas past the last row that will appear in your schedule.
In some loan scenarios, you need to borrow a certain amount at the current interest rates, but you can spend only so much on each payment. If the other loan factors are fixed, the only way to adjust the payment is to adjust the term of the loan: A longer term means smaller payments; a shorter term means larger payments.
You could figure out the term by adjusting the nper argument of the PMT() function until you get the payment you want. However, Excel offers a more direct solution in the form of the NPER() function, which returns the number of periods of a loan:
NPER(rate, pmt, pv[, fv][, type])
rate |
The fixed rate of interest over the term of the loan. |
pmt |
The periodic payment. |
pv |
The loan principal. |
fv |
The future value of the loan. (The default is 0.) |
type |
The type of payment. Use 0 (the default) for end-of-period payments; use 1 for beginning-of-period payments. |
For example, suppose that you want to borrow $10,000 at 6% interest with no balloon payment, and the most you can spend is $750 per month. What term should you get? Figure 14-8 shows a worksheet that uses NPER() to calculate the answer: 13.8 months. Here are some things to note about this model:
The interest rate is an annual value, so the NPER() function’s rate argument divides the rate by 12.
The payment is already a monthly number, so no adjustment is necessary for the pmt attribute.
The payment is negative because it’s money that you pay to the lender.
Of course, in the real world, although it’s not unusual to have a noninteger term, the last payment must occur at the beginning or end of the last loan period. In the example, the bank uses the term 13.8 months to calculate the payment, principal, and interest, but it rightly insists that the last payment be made at either the 13th period or the 14th period. The tables after the NPER() formula in Figure 14-8 investigate both scenarios.
If you elect to end the loan after the 13th period, you’ll still have a bit of principal left over. To see why, the amortization table shows the period (column A) as well as the principal paid each period (column B), as returned by the PPMT() function. The Cumulative Principal column (column C) shows a running total of the principal. As you can see, after 13 months, the total principal paid is only $9,378.07, which leaves $621.93 remaining (cell C24). Therefore, the 13th payment will be $1,371.93 (the usual $750 payment, plus the remaining $621.93 principal).
Note
The cumulative principal values are calculated using the SUM() function. You can’t use the CUMPRINC() function in this case because CUMPRINC() truncates the nper argument to an integer value.
If you elect to end the loan after the 14th period instead, you’ll end up overpaying the principal. To see why, the second amortization table shows the Period (column E), Principal (column F), and Cumulative Principal (column G) columns. After 14 months, the total principal paid is $10,124.96, which is $124.96 more than the original $10,000 principal. Therefore, the 14th payment will be $625.04 (the usual $750 payment minus the $124.96 principal overpayment).
Note
Another way to calculate the principal that is left over or overpaid is to use the FV() function, which returns the future value of a series of payments. For the 13-month scenario, you run FV() with the nper argument set to 13 (see cell C25 in Figure 14-8); for the 14-month scenario, you run FV() with the nper argument set to 14 (see cell G26). You’ll learn about FV() in detail in Chapter 15.
A slightly less common loan scenario arises when you know the loan term, payment, and principal, and you need to know what interest rate will satisfy these parameters. This is useful in a number of circumstances:
You might want to wait until interest rates fall to the value you want.
You might regard the calculated interest rate as a maximum rate that you can pay, knowing that anything less will enable you to reduce either the payment or the term.
You could use the calculated interest rate as a negotiating tool with your lender by asking for that rate and walking away from the deal if you don’t get it.
To determine the interest rate given the other loan factors, use the RATE() function:
RATE(nper, pmt, pv[, fv][, type][, guess])
nper |
The number of payments over the term of the loan. |
pmt |
The periodic payment. |
pv |
The loan principal. |
fv |
The future value of the loan. (The default is 0.) |
type |
The type of payment. Use 0 (the default) for end-of-period payments; use 1 for beginning-of-period payments. |
guess |
A percentage value that Excel uses as a starting point for calculating the interest rate. (The default is 10%.) |
The RATE() function’s guess argument indicates that this function uses iteration to determine the answer. To learn more about iteration, see “Using iteration and circular references,” in Chapter 2, “Creating advanced formulas.”
For example, suppose you want to borrow $10,000 over five years with no balloon payment and a monthly payout of $200. What rate will satisfy these criteria? The worksheet in Figure 14-9 uses RATE() to derive the result: 7.4%. Here are some notes about this model:
The term is in years, so the RATE() function’s nper argument multiplies the term by 12.
The payment is already a monthly number, so no adjustment is necessary for the pmt attribute.
The payment is negative because it’s money that you pay to the lender.
The result of the RATE() function is multiplied by 12 to get the annual interest rate.
If you know the current interest rate your bank is offering for loans, when you want to have the loan paid off, and how much you can afford each month for the payments, you might then wonder what is the maximum amount you can borrow under those terms. To figure this out, you need to solve for the principal—that is, present value. You do this in Excel by using the PV() function:
PV(rate, nper, pmt[, fv][, type])
rate |
The fixed rate of interest over the term of the loan. |
nper |
The number of payments over the term of the loan. |
pmt |
The periodic payment. |
fv |
The future value of the loan. (The default is 0.) |
type |
The type of payment. Use 0 (the default) for end-of-period payments; use 1 for beginning-of-period payments. |
For example, suppose the current loan rate is 6%, you want the loan paid off in five years, and you can afford payments of $500 per month. Figure 14-10 shows a worksheet that calculates the maximum amount you can borrow—$25,862.78—using the following formula:
=PV(B2 / 12, B3 * 12, B4, B5, B6)
18.119.131.72