开发者

Calculate APR (annual percentage rate) Programmatically

I am trying to find a way to programmatically calculate APR based on

  • Total Loan Amount
  • Payment Amount
  • Number of payments
  • Repayment frequency

There is no need to take any fees into account.

It's ok to assume a fixed interest rate, and any remaining amounts can be rolled into the last payment.

The formula below is based on a credit agreement for a total amount of credit of €6000 repayable in 24 equal monthl开发者_C百科y instalments of €274.11.

Calculate APR (annual percentage rate) Programmatically

(The APR for the above example is 9.4%)

I am looking for an algorithm in any programming language that I can adapt to C.


I suppose you want to compute X from your equation. This equation can be written as

f(y) = y + y**2 + y**3 + ... + y**N - L/P = 0

where

X = APR
L = Loan (6000)
P = Individual Payment (274.11)
N = Number of payments (24)
F = Frequency (12 per year)
y = 1 / ((1 + X)**(1/F))   (substitution to simplify the equation)

Now, you need to solve the equation f(y) = 0 to get y. This can be done e.g. using the Newton's iteration (pseudo-code):

y = 1  (some plausible initial value)
repeat 
    dy = - f(y) / f'(y)
    y += dy
until abs(dy) < eps 

The derivative is:

f'(y) = 1 + 2*y + 3*y**2 + ... + N*y**(N-1)

You would compute f(y) and f'(y) using the Horner rule for polynomials to avoid the exponentiation. The derivative can be likely approximated by some few first terms. After you find y, you get x:

x = y**(-F) - 1


Here is the Objective C code snippet I came up with (which seems to be correct) if anybody is interested:

float x = 1;
do{
    fx = initialPaymentAmt+paymentAmt *(pow(x, numPayments+1)-x)/(x-1)+0*pow(x,numPayments)-totalLoanAmt;
    dx = paymentAmt *(numPayments * pow( x , numPayments + 1 ) - ( numPayments + 1 )* pow(x,numPayments)+1) / pow(x-1,2)+numPayments * 0 * pow(x,numPayments-1);
    z = fx / dx;
    x=x-z;
} while (fabs(z)>1e-9 ); 

apr=100*(pow(1/x,ppa)-1);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜