Understanding mortgage

I am considering to buy an investment home recently and so am trying to really understand mortgage. As an engineer, I thought it should be very simple. Indeed, it is quite simple but it eventually spent me couple hours figuring it out on my own. It is a simple high school math problem but I guess my old brain was slowing me down.

Anyway, let start with a simple question. How much do I need to pay monthly if I want to borrow $30,000 for 5 years with monthly interest rate of 0.5%?

Let L be the size of the loan, i.e., $30,000, C be the monthly payment, N be the number of period (5 \times 12 = 60), and r be the monthly interest rate, 0.005.

The question is very simple if one understands present value. The amount of money does not worth the same at different times because of interest. If I have one dollar now, my one dollar will become 1.005 dollar a month later because of interest. In reverse, the C dollar that I’m paying to the bank next month will be worth only C/(1+r) now. Therefore, the total payment in the future is worth only

\frac{C}{1+r} + \frac{C}{(1+r)^2} + \frac{C}{(1+r)^3} + \cdots + \frac{C}{(1+r)^N}

=\frac{C}{1+r} \frac{(1+r)^N-1}{r},

which should be equivalent to the entire loan L. Therefore, the monthly payment is given by

C = L \frac{r (1+r)}{(1+r)^N-1}. This gives us $432.13.

Now, the more interesting question (that I was stuck) is what fraction of money is paid to the principal and the interest each month. I think it probably easier to explain it starting from the farthest future and going backward.

Let’s consider the time that we just pay for the second last payment, how much do we own the bank? You may say, C dollars, right? Because in a month later, we will pay the last payment of C dollars and will not owe the bank anymore. But we need to be careful that money a month later is not the same as money now, it is discounted by the factor (1+r). Another way to think about it is that we have to pay interest for the last month also. So it won’t be possible that we only need to pay C dollars next month if we only owe C dollar now. Instead, we actually owe \frac{C}{1+r} dollars. So how much interest do we pay for the last payment? It will be

C - \frac{C}{(1+r)} = \frac{C}{1+r} r. Note that again \frac{C}{1+r} is how much we owe just after we pay the second last payment. So of course the interest should be just that multiplied by r. So everything adds up. Good!

Now, how about a period before that? That is, the time when we just pay for the third last payment. By similar token, we should owe

\frac{1}{1+r} (C+ \frac{C}{1+r})

to the bank. Now, forward one month again, the amount becomes

C + \frac{C}{1+r}

and we have only \frac{C}{1+r} after paying C dollars for  the second last payment. Great! Everything adds up again. And what is the interest in the second last payment?  It is

\frac{r}{1+r}(C+ \frac{C}{1+r}).

So in general, the interest pay in the nth last payment is

C \frac{r}{1+r} (1 + \frac{1}{1+r} + \cdots + \frac{1}{(1+r)^{(n-1)}})

= C \frac{r}{1+r} \frac{1/(1+r)^n - 1}{1/(1+r) -1}

= C (1 - \frac{1}{(1+r)^n}).

And what is the total interest? It will be

C (1- \frac{1}{1+r}) +C(1-\frac{1}{(1+r)^2})+\cdots+C(1-\frac{1}{(1+r)^N})

=NC-C(\frac{1}{1+r}+\frac{1}{(1+r)^2}+\cdots+\frac{1}{(1+r)^N})

=NC-L. Exactly what we will expect. Nice!

For our loan example, the below plot shows the fraction of principal paid over the periods. We can see that more interest is paid in the earlier periods than the later ones.

And the remaining amount over periods is shown below.

Finally, simple matlab code for generating the figures is shown below:

L=30000; % size of loan
N=60; % period
r=0.005; % interest rate per period
%L*(1+r) = P + P/(1+r) + P/(1+r)^2 + P/(1+r)^3
% = P (1-(1/1+r)^N)/(1-(1/(1+r))
P= L*(1+r)/((1-(1/(1+r))^N)/(1-1/(1+r)));
Ls(1)=L;
In(1)=0;
Ps(1)=0;
for i=2:N+1;
 In(i)=Ls(i-1)*r;
 Ps(i)=P-In(i);
 Ls(i)=Ls(i-1)-Ps(i);
end
close all
figure;
plot(1:length(Ps)-1,Ps(2:end)/P);
title('Fraction of principal paid at each period');
xlabel('period');
ylabel('Fraction');
figure;
plot(1:length(Ls)-1, Ls(2:end));
title('Remaining loan');
xlabel('period');
ylabel('remaining loan');

Making a noise free screencast

Ubuntu has very convenient function to generate screencast. My favorite is gtk-recordMyDesktop. However, my mic isn’t very high quality and my screencast always ends up with annoying background noise.

Actually, this noise can be easily removed by denoising tools such as Audacity. One just needs to exact the audio track, denoise it with Audacity, and merge the audio back to the video. For this, one should install Audacity, oggz-tools, and oggvideotools. Simply run

sudo apt-get install oggvideotools oggz-tools audacity

to install the packages.

Now, to exact the audio track from the video, run

oggSplit screencast.ogv

It should generate three files: an unknown ogv file, theora ogv file, and vorbis oga file. Now, open audacity and import the oga file, we will use audacity to remove the background noise.

In audacity, select a segment of audio that contains only background noise. Audacity will need it to learn the noise profile. After selecting the segment, go to Effect -> Noise Removal in the menu, and click Get Noise Profile.

Now select the entire audio, go to  Effect -> Noise Removal again, but click OK instead.

Your audio track should now be denoised. We should now export the audio as Ogg Vorbis Files for the next step.

Let say the denoised audio is vorbis.ogg. We can now merge to the theora ogv file created earlier using

oggz-merge -o denoised-video.ogg theora.ogv vorbis.ogg

That’s all!