【问题标题】:Calculate APR (annual percentage rate) Programmatically以编程方式计算 APR(年百分比率)
【发布时间】:2011-09-28 14:52:51
【问题描述】:

我正在尝试找到一种方法以编程方式计算 APR,基于

  • 贷款总额
  • 付款金额
  • 付款次数
  • 还款频率

无需考虑任何费用。

假设固定利率是可以的,任何剩余金额都可以滚入最后一次付款。

以下公式基于信贷协议,信贷总额为 6000 欧元,可分 24 个月等额偿还,金额为 274.11 欧元。

(上例的 APR 为 9.4%)

我正在寻找可以适应 C 的任何编程语言的算法。

【问题讨论】:

  • 我将在目标 c 中实现它,但我会对任何语言的答案感到满意。
  • 另一个问题:APR 方法可能会根据完整要求而大不相同。一个简单的事情是您是否需要考虑气球付款。另外,剩下的硬币怎么办?他们是折叠成最终付款还是以某种方式分散在最后一对?您是否必须考虑浮动利率(如 ARM 贷款)?各种费用如何处理?简而言之,您的全部要求是什么?您尝试过什么?
  • 另一个有用的花絮是您对您提供的示例的期望 APR 是多少?
  • pmg 的参考是最好的开始。

标签: objective-c algorithm


【解决方案1】:

我想你想从你的方程计算X。这个方程可以写成

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

在哪里

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)

现在,您需要解方程 f(y) = 0 以得到 y。这可以做到,例如使用牛顿迭代(伪代码):

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

导数是:

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

您将使用多项式的霍纳规则计算f(y)f'(y),以避免求幂。导数很可能通过一些第一项来近似。找到y后,得到x

x = y**(-F) - 1

【讨论】:

  • 看起来不错 - eps 代表什么?
  • eps 是一个小数量,例如1e-6。解近似为最大绝对误差 eps。您需要尝试适合您情况的 eps。
【解决方案2】:

如果有人感兴趣,这是我想出的 Objective C 代码 sn-p(这似乎是正确的):

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);

【讨论】:

  • 嗨,Ben 我正在寻找相同的公式。这里的 ppa 是什么?
  • 嗨,Nilesh,我写这篇文章已经有一段时间了!但我认为 ppa 是每年的付款次数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多