# commons-user mailing list archives

##### Site index · List index
Message view
Top
From Luc Maisonobe <Luc.Maison...@free.fr>
Subject Re: commons-math usage to calculate APR?
Date Sat, 16 Aug 2008 22:14:17 GMT
```David Hoffer a écrit :
> Hum, simple I'm sure but perhaps calculating APR is not quite that simple;
> you have to factor in loan expenses (that's why APR is not the same as
> interest rate).
>
> I think it is something like:
>
> P' = (P+E)I(1+i)^n/(1+i)^n
>
> Then you solve for APR with the non-linear function which is something like:
>
> ((a(1+a)^n)-(P'/P))/((1+a)^n-1) = 0
>
> Where a=ARR/12

In order to solve this, you can first drop the denominator (which is non
null if a is non null). You end up with:

a(1+a)^n - P'/P = 0

Solving this using for any commons-math solver (for example BrentSolver)
could probably be done as follows:

final double p      = ...;
final double pPrime = ...;
final int    n      = ...;
UnivariateRealFunction equation = new UnivariateRealFunction() {
public double value(double x) {
return x * Math.pow(1 + x, n) - pPrime / p;
}
};
UnivariateRealSolver solver = new BrentSolver(equation);
double apr = solver.solve(0.001, 0.999);

Using final variables for p, pPrime and n allow to refer to them
directly in the anonymous class defined by the new
UnivariateRealFunction call. If you prefer a more elegant solution, you
can create a dedicated class implementing the UnivariateRealFunction and
that would use private fields to hold these values.

Luc

>
> Calculating P' is straightforward.  Solving for a is where I'm not clear,
> plus I'm not certain of the math above.
>
> -Dave
>
> -----Original Message-----
> From: Bear Giles [mailto:bgiles@coyotesong.com]
> Sent: Saturday, August 16, 2008 3:40 PM
> To: Commons Users List
> Subject: Re: commons-math usage to calculate APR?
>
> There are closed-form expressions for that, although I don't have them
> off the top of my head.  Something like
>
>    m = P / (1 - i)^n
>
> or maybe
>
>   m = P / ((1 + i)^n - 1)
>
> where m is monthly payment, P is principal, i is monthly interest, n is
> number of months.  It's definitely not very complex for a simple
> fixed-term, fixed-rate loan.
>
> Bear
>
> David Hoffer wrote:
>> My usage is for USA only at this point.
>>
>> I have inputs of loanAmount, monthlyInterestRate, numberMonths, loanFees;
> so
>> this would be for fixed monthly payments.
>>
>> I understand that commons-math doesn't have specific finance methods
> however
>> I think the APR formula is a non-linear equation that I was hoping
>> commons-math could help solve.
>>
>> -Dave
>>
>> -----Original Message-----
>> From: Luc Maisonobe [mailto:Luc.Maisonobe@free.fr]
>> Sent: Saturday, August 16, 2008 2:45 PM
>> To: Commons Users List
>> Subject: Re: commons-math usage to calculate APR?
>>
>> David Hoffer a écrit :
>>
>>> Can anyone point me to an example of how to use commons-math to calculate
>>> APR (Annual Percentage Rate)?
>>>
>> There are no specific finance related algorithm in commons-math.
>>
>>
>>> I think this is solvable using either the NewtonSolver or BisectionSolver
>>> but I am not sure how to accomplish this.  Perhaps a different way is
>>> better.
>>>
>> I think so, but it depends on what you really need. APR computation
>> seems to be slightly different depending on local regulations (for
>> example USA or EU). It also depends on the assumptions you do and the
>> input data. For example you can compute it one way for fixed monthly
>> payments and another way for varying monthly payments.
>>
>>
>>> Any help would be greatly appreciated.
>>>
>> Could you explain your needs more precisely ?
>>
>> Luc
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org