Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Financial formula for calculating an Adjustable Rate Mortgage?

Tags:

c#

math

financial

How can I calculate a fixed payment amount for a loan term that has two different interest rates based on how long the loan has been open?

like image 584
mdvaldosta Avatar asked Feb 28 '23 15:02

mdvaldosta


2 Answers

This gets a little ugly, so please bear with me.

Define:

  • g1 = Initial monthly rate (For 3%, g=0.03/12.)
  • g2 = Second monthly rate.
  • T1 = Term for the initial rate (T1 = 3 for 3 months).
  • T2 = Term for the subsequent rate.
  • u1 = 1 / (1 + g1)
  • u2 = 1 / (1 + g2)

Then:

  • payment = g1 * g2 / (g1 * u1^T1 * (1 - u2^T2) + g2 * (1 - u1^T1))

Of course, I may have made a mistake, but that seems right.

like image 85
Johann Hibschman Avatar answered Mar 07 '23 08:03

Johann Hibschman


This is a pretty complicated calculation that is usually part of a company's intellectual property. So I doubt anyone is going to post code. I've been down this road and it requires huge amounts of testing depending on how far you decide to go with it.

When performing the calculations in code it is critical that you use a data type such as Decimal instead of the floating point types like double. Decimal was explicitly created for these types of money calculations. Floating point types will cause many rounding errors, making the calculated values be off by unacceptable amounts.

Next, mortgage calculators that you find online are of highly varying quality. When testing your method it will be useful to see what the online calculators come up with, but by no means consider them more accurate than yours. Generally they are good to see if you are in the right ballpark, but they could be off by as much as .1% per year of the loan term.

Final note
Consider purchasing a library from a company like Math Corp instead of rolling your own. I'm pretty sure it'll be accurate AND much cheaper than the dev / qa time to get yours right.

like image 20
NotMe Avatar answered Mar 07 '23 08:03

NotMe