So, sums. I can, broadly speaking, do sums. I have a degree in maths.
However, interest rate calculations have always baffled me. Sure, if you ask me to calculate 3 months compound interest at a monthly rate of x% I know what to do. However, when it comes to real examples of mortgages and credit cards, I can't work out what the sum I need to do is. I'm still slightly baffled about the interest charged me when I was a day late paying my credit card off in full in March.
Today, the BBC carried a story about a loanshark. It includes the following statement about someone who borrowed £1000:
"...to pay £49 a week over 60 weeks, making the total amount he had to
repay £2,940 at 917% APR."
Now, if we approximate 60 weeks to a year, then surely that's an annual interest rate of no more than 294%. The quoted APR isn't even in vaguely the right ballpark.
So... have I completely failed to understand APR ? (Wikipedia's page on the subject didn't really help with the definition.) Or is the BBC publishing unmitigated wank in the name of investigative journalism ?
Edit It turns out I'd failed to understand APR, and the BBC is cleared in this instance.
However, interest rate calculations have always baffled me. Sure, if you ask me to calculate 3 months compound interest at a monthly rate of x% I know what to do. However, when it comes to real examples of mortgages and credit cards, I can't work out what the sum I need to do is. I'm still slightly baffled about the interest charged me when I was a day late paying my credit card off in full in March.
Today, the BBC carried a story about a loanshark. It includes the following statement about someone who borrowed £1000:
"...to pay £49 a week over 60 weeks, making the total amount he had to
repay £2,940 at 917% APR."
Now, if we approximate 60 weeks to a year, then surely that's an annual interest rate of no more than 294%. The quoted APR isn't even in vaguely the right ballpark.
So... have I completely failed to understand APR ? (Wikipedia's page on the subject didn't really help with the definition.) Or is the BBC publishing unmitigated wank in the name of investigative journalism ?
Edit It turns out I'd failed to understand APR, and the BBC is cleared in this instance.
no subject
Date: 2008-07-29 09:57 am (UTC)again
no subject
Date: 2008-07-29 09:58 am (UTC)no subject
Date: 2008-07-29 09:59 am (UTC)The correct answer would be (I think) 1203% APR.
Each week the interest is 4.9%, so the annual interest rate is 100*1.049^52. It only comes out as low as 294% if you're paying each week. (Which I appreciate they say is compulsory, but that doesn't affect the rate charged.)
However, I have no idea how they got 917%.
no subject
Date: 2008-07-29 10:00 am (UTC)no subject
Date: 2008-07-29 10:05 am (UTC)no subject
Date: 2008-07-29 10:05 am (UTC)no subject
Date: 2008-07-29 10:06 am (UTC)I used excel and applied weekly interest after each payment and found that an interest rate of 4.83% would have it paid off completely after 60 payments and then doing the ^52 calculation you did above I got ~1165% APR. I too am confused by the 917% interest rate... I may give it more thought though. :)
no subject
Date: 2008-07-29 10:06 am (UTC)no subject
Date: 2008-07-29 10:08 am (UTC)Either that; or they also used that calculator, and it and they are both exactly wrong.
I think the trouble is that APR can be a bit of a misleading figure.
no subject
Date: 2008-07-29 10:09 am (UTC)Which isn't to say I can actually do the right sum either.
no subject
Date: 2008-07-29 10:10 am (UTC)no subject
Date: 2008-07-29 10:15 am (UTC)no subject
Date: 2008-07-29 10:16 am (UTC)no subject
Date: 2008-07-29 10:23 am (UTC)function CalcRate() { var p=getVal(document.input.credit.value); var i=getVal(document.input.initial.value); var a=getVal(document.input.repay.value); var n=Math.floor(getVal(document.input.number.value)); var f=getVal(document.input.last.value); //Isaac's magic ... var x=1.0001; var fx=0; var dx=0; var z=0; do { fx=i+a*(Math.pow(x,n+1)-x)/(x-1)+f*Math.pow(x,n)-p; dx=a*(n*Math.pow(x,n+1)-(n+1)*Math.pow(x,n)+1)/Math.pow(x-1,2)+n*f*Math.pow(x,n-1); z=fx/dx; x=x-z; //alert("fx="+fx+"\ndx="+dx+"\nz="+z+"\nx="+x) } while (Math.abs(z)>1e-9); r=100*(Math.pow(1/x,m)-1); document.input.credit.value=TwoDP(p); document.input.initial.value=TwoDP(i); document.input.repay.value=TwoDP(a); document.input.number.value=n; document.input.last.value=TwoDP(f); document.input.apr.value=OneDP(r); }Of course it'll take a certain amount of being bothered to peer at taht and see what it's actually doing, JS not being the most transparent of languages...
no subject
Date: 2008-07-29 10:23 am (UTC)I think they must be wrong. I can't see any way you'd get 917% out of those numbers.
no subject
Date: 2008-07-29 10:27 am (UTC)no subject
Date: 2008-07-29 10:28 am (UTC)I'm still struggling to find a formula for APR (so far I've found lots of online calculators, which approximately agree with the BBC), a forum post which claims there are 14 different methods of calculating APR, and a lot of sites claiming that it's a "very complex calculation".
I'm about to go and wrestle with the impenetrable Javascript above, though.
I've also learned that APR isn't always a sensible metric - particularly if (say) I've lent you a sum of money for one week, with a flat fee due, then the APR can come out as 7 digits.
I'm kind of alarmed that between so many mathematically-able people none of us seems to have much of a clue how these things are calculated; it makes me suspect that as a measure it's deliberately opaque.
no subject
Date: 2008-07-29 10:28 am (UTC)no subject
Date: 2008-07-29 10:34 am (UTC)The iteration is just trying to find the value of x so that p=a*(x^(n+1)-x) (p is the amount borrowed, a is the repayment amount, n is the number of repayments)
Then the APR is calculated by APR=100*((x^(-m))-1), where m is the number of repayments per year.
no subject
Date: 2008-07-29 10:36 am (UTC)I got as far as seeing that it's an iterative approximation technique and then gave up in disgust, as the underlying formula seems unlikely to be discernable from that :-(
no subject
Date: 2008-07-29 10:37 am (UTC)no subject
Date: 2008-07-29 10:39 am (UTC)do {
fx=a*(Math.pow(x,n+1)-x)/(x-1)-p;
dx=a*(n*Math.pow(x,n+1)-(n+1)*Math.pow(x,n)+1)/Math.pow(x-1,2);
z=fx/dx; x=x-z;
//alert("fx="+fx+"\ndx="+dx+"\nz="+z+"\nx="+x)
}
while (Math.abs(z)>1e-9);
r=100*(Math.pow(1/x,m)-1);
And then the last line of that basically implies to me that x = 1/weekly interest rate.
I think they are then using some kind of iterative process of approximations to find a value of x whcih satisfies the equations. It stops when z is very close to 0 which means that fx must be much much smaller than dx.
I suspect dx is worked out in some clever way. It looks vaguely like a differential and I suspect if I'd done more computer programming I'd recognise some technique of using differentials to get closer to an approximation of something...
The initial value fx basically has two terms the p on the end and the other bit. The first bit is basically decaying your repayments to simulate interest. You should note that Math.pow(x,n+1)-x)/(x-1) is a power series that can be expanded to x^n+x^(n-1)+...+x^2+x. When multiplied by a this is your repayments decaying by the interest rate. Personally I find it easier to see when you divide through by x^n and set interest = 1/x since you will then see the more intuitive series of each repayment having interest applied to it and them adding up to the total loan amount with interest added.
I've worked out now also that my discrepancy came purely from taking the first repayment off before applying interest. If I always apply interest before repayment then I get the same 917% that the BBC quote (I should also mention that in my inintial comment above I forgot to take the 100% off for the initial loan amount).
no subject
Date: 2008-07-29 10:43 am (UTC)no subject
Date: 2008-07-29 10:45 am (UTC)Assume you have your loan and you pay an amount of interest on it every month (or week). Now assume you make no payments in that time, APR is the % increase that will produce over the course of a year.
As such, it doesn't really measure anything you'll actually pay, but as it is entirely consistent you can use it to compare different payment plans. But if you try and compare, say, a mortgage to a personal loan, the values you get back are basically bunkum.
no subject
Date: 2008-07-29 10:47 am (UTC)It really is pretty easy in most ways... Especially with a spreadsheet or something that can do "goal seek" such as excel.
The basic thing as I said in my JS analysis above (though trying to explain in terms of the JS it might have got confusing) is that you work out the total amount repaid (given in this case). You then assume that each payment you make starts getting interest on it equal to the interest rate of the loan from when you pay it. You then add these up and you get a power series.
1st repayment + virtual interest = 49*interest^59
2nd repayment + virtual interest = 49*interest^58
3rd repayment + virtual interest = 49*interest^57
...
59th repayment + virtual interest = 49*interest^1
60th repayment + virtual interest = 49
You add up all these payments and then solve for sum("repayments+virtual interest") = total loan repaid and you then have an equation with one variable (interest) to solve.
The main problem is that its a power series which is why the javascript then uses approximation methods to solve it because that's usually the only practical way. That or trial and error once you know the ballpark its likely to be in - you are fortunate that the curve you are trying to solve will I think, be monotonically increasing so trial and error should allow you to narrow in relatively easily.