  # Mortgage Amortization Table

### Calculate a loan repayment schedule with Matlab

 This program calculates and displays a loan repayment schedule in a manner of Mortgage Amortization Table. This Matlab code for financial applications provides the following output: - Payment number. - Amount of each payment paid as interest. - Amount of the loan amortized with each payment. - Balance remaining on the principal at the time of each payment.

- Accumulated interest paid at the time of each payment.

To use this script you must supply the amount of the regular payment, the term of payment, the number of payments per year, the amount of the principal and the annual interest rate.

The schedule is calculated using very simple formulas:

- Payment number = number of monthly payment

- Amount of each payment paid as interest = remaining balance x i/N
where
i = annual interest rate (nominal)
N = number of payments per year

- Amount ammortized with each payment = R – I
where
R = amount of regular payments
I = amount of each payment paid as interest

- Balance remaining = P – sum(A)
where
P = principal
sum(A) = sum of amounts amortized with each payment to date

Accumulated interest = sum(I)
where
sum(I) = sum of amounts of each payment paid as interest to date

One way to code the above ideas is creating a function:

function table = mortg_amort_tab(r, y, p, i, n)

% Let's define some starting values
i = i/100;
balance(1) = p;
acc_interest(1) = 0;

% Calculate every monthly payment (except the last one)
for pnr =  2 : y*n
interest(pnr) = (balance(pnr-1) * i/n);
amortized(pnr) = (r - interest(pnr));
balance(pnr) = (balance(pnr-1) - amortized(pnr));

end

% Calculate the final payment differently, to terminate the debt
interest(pnr+1) = (balance(pnr) * i/n);
amortized(pnr+1) = balance(pnr);
balance(pnr+1) = balance(pnr) - amortized(pnr+1);

% Deliver results in table form
table = [(0 : pnr)' interest' amortized' balance' cumsum(interest')];

Example 1:

Daniel needs \$2100 to pay off some urgent debts. His sister Charlotte offers him the money at only 6% interest. With payments of \$75 monthly for 2.5 years, what is Daniel’s repayment schedule?

We can create a script named test_ mortgage_amort_tabl in the editor window, and run it easily, changing the input parameters as necessary:

clear, clc, format compact, format bank

r = 75;
y = 2.5;
p = 2100;
i = 6;
n = 12;

table = mortg_amort_tab(r, y, p, i, n);
disp(
'Mortgage Amortization Table')
s = sprintf(
'\t\t%s\t\t%s\t\t%s\t\t%s\t%s', ...
' Month', 'Interest', 'Amortz', ' Balance', '  Acc. Int');
disp(s)
disp(table)

The Matlab result is:

Mortgage Amortization Table
Month     Interest        Amortz       Balance      Acc. Int
0             0             0       2100.00             0
1.00         10.50         64.50       2035.50         10.50
2.00         10.18         64.82       1970.68         20.68
3.00          9.85         65.15       1905.53         30.53
4.00          9.53         65.47       1840.06         40.06
5.00          9.20         65.80       1774.26         49.26
6.00          8.87         66.13       1708.13         58.13
7.00          8.54         66.46       1641.67         66.67
8.00          8.21         66.79       1574.88         74.88
9.00          7.87         67.13       1507.75         82.75
10.00         7.54         67.46       1440.29         90.29
11.00         7.20         67.80       1372.49         97.49
12.00         6.86         68.14       1304.36        104.36
13.00         6.52         68.48       1235.88        110.88
14.00         6.18         68.82       1167.06        117.06
15.00         5.84         69.16       1097.89        122.89
16.00         5.49         69.51       1028.38        128.38
17.00         5.14         69.86        958.52        133.52
18.00         4.79         70.21        888.32        138.32
19.00         4.44         70.56        817.76        142.76
20.00         4.09         70.91        746.85        146.85
21.00         3.73         71.27        675.58        150.58
22.00         3.38         71.62        603.96        153.96
23.00         3.02         71.98        531.98        156.98
24.00         2.66         72.34        459.64        159.64
25.00         2.30         72.70        386.94        161.94
26.00         1.93         73.07        313.87        163.87
27.00         1.57         73.43        240.44        165.44
28.00         1.20         73.80        166.64        166.64
29.00         0.83         74.17         92.48        167.48
30.00         0.46         92.48             0        167.94

Example 2:

If you took out a loan for \$700 from a close friend at 9% interest and were to pay \$100/monthly for 8 months, what would your repayment schedule be?

Since we’re now working with less than a year period, we need to make subtle changes in the way we input data (note y and n values):

clear, clc, format compact, format bank

r = 100;
y = 8/12;
p = 700;
i = 9;
n = 12;
table = mortg_amort_tab(r, y, p, i, n);
disp(
'Mortgage Amortization Table')
s = sprintf(
'\t\t%s\t\t%s\t\t%s\t\t%s\t%s', ...
' Month', 'Interest', 'Amortz', ' Balance', '  Acc. Int');
disp(s)
disp(table)

and the Matlab result is:

Mortgage Amortization Table
Month     Interest        Amortz       Balance      Acc. Int
0             0             0        700.00             0
1.00          5.25         94.75        605.25          5.25
2.00          4.54         95.46        509.79          9.79
3.00          3.82         96.18        413.61         13.61
4.00          3.10         96.90        316.71         16.71
5.00          2.38         97.62        219.09         19.09
6.00          1.64         98.36        120.73         20.73
7.00          0.91         99.09         21.64         21.64
8.00          0.16         21.64             0         21.80

You can format your output. Type 'help sprintf' on your command window to read its description. You can use also 'format bank' to have only two decimals displayed.

From 'Mortgage Amortization Table' to home

From 'Mortgage Amortization Table' to 'Financial Formulas'  