这个计算公式可以推导出来吗?

2022-06-02 09:04:34 +08:00
 airbotgo
这是农行的利率计算公式,有没有数学好的,这个计算公式是怎样的?

农行分期实际年化利率(单利)计算器:
https://www.abchina.com/cn/CreditCard/WealthManagement/fqnhl/
1308 次点击
所在节点    问与答
4 条回复
Stendan
2022-06-02 09:11:31 +08:00
js 里面的,不知道帮到你没-,-!

function getAPR(instalment_amt, instalment_day, instalment_rate, instalment_type) {

// 现金流
var cashFlows = new Array();
// 实际年化利率
var APR = 0;

// 每期还款本金
var principal_base = Math.round(instalment_amt / instalment_day);
// 最后一期还款本金
var principal_end = instalment_amt - (principal_base * (instalment_day - 1));

// 手续费收取方式总手续费就是本金*费率*期数保留两位小数,然后前面 N-1 期都是本金*每期费率保留 2 位小数,然后第 N 期用总手续费减去前面 N-1 期手续费
var fee_total = Math.round(instalment_day * instalment_amt * instalment_rate) / 100;
var fee_base = Math.round(instalment_amt * instalment_rate) / 100;
var fee_end = fee_total - (fee_base * (instalment_day - 1));

cashFlows.push(-instalment_amt);

if(instalment_type == '1') {

for(var i = instalment_day - 1; i >= 0; i--) {

if(i > 0) {
cashFlows.push(principal_base + fee_base);
} else {
cashFlows.push(principal_end + fee_end);
}

}

} else if(instalment_type == '2') {

for(var i = instalment_day - 1; i >= 0; i--) {

if(i == instalment_day - 1) {
var fee = fee_total;
} else {
var fee = 0;
}

if(i > 0) {
cashFlows.push(principal_base + fee);
} else {
cashFlows.push(principal_end + fee);
}

}

} else {

alert('请正确选择 [分期手续费收取方式] !');
return '';

}

// cashFlows=[-2000,679,679,666,0,0,0,0];
APR = (12 * IRR(cashFlows) * 100).toFixed(2);

return APR;

}

function IRR(cashFlows, estimatedResult) {
var result = "isNAN";
if(cashFlows != null && cashFlows.length > 0) {
// check if business startup costs is not zero:
if(cashFlows[0] != 0) {
var noOfCashFlows = cashFlows.length;
var sumCashFlows = 0;
// check if at least 1 positive and 1 negative cash flow exists:
var noOfNegativeCashFlows = 0;
var noOfPositiveCashFlows = 0;
for(var i = 0; i < noOfCashFlows; i++) {
sumCashFlows += cashFlows[i];
if(cashFlows[i] > 0) {
noOfPositiveCashFlows++;
} else {
if(cashFlows[i] < 0) {
noOfNegativeCashFlows++;
}
}
}

// at least 1 negative and 1 positive cash flow available?
if(noOfNegativeCashFlows > 0 && noOfPositiveCashFlows > 0) {
// set estimated result:
var irrGuess = 0.1; // default: 10%
if(!isNaN(estimatedResult)) {
irrGuess = estimatedResult;
if(irrGuess <= 0) {
irrGuess = 0.5;
}
}

// initialize first IRR with estimated result:
var irr = 0;
if(sumCashFlows < 0) { // sum of cash flows negative?
irr = -irrGuess;
} else { // sum of cash flows not negative
irr = irrGuess;
}

// iteration:
// the smaller the distance, the smaller the interpolation
// error
var minDistance = 1e-15;

// business startup costs
var cashFlowStart = cashFlows[0];
var maxIteration = 100;
var wasHi = false;
var cashValue = 0;
for(var i = 0; i <= maxIteration; i++) {
// calculate cash value with current irr:
cashValue = cashFlowStart; // init with startup costs

// for each cash flow
for(var j = 1; j < noOfCashFlows; j++) {
cashValue += cashFlows[j] / Math.pow(1 + irr, j);
}

// cash value is nearly zero
if(Math.abs(cashValue) < 0.01) {
result = irr;
break;
}

// adjust irr for next iteration:
// cash value > 0 => next irr > current irr
if(cashValue > 0) {
if(wasHi) {
irrGuess /= 2;
}
irr += irrGuess;
if(wasHi) {
irrGuess -= minDistance;
wasHi = false;
}
} else { // cash value < 0 => next irr < current irr
irrGuess /= 2;
irr -= irrGuess;
wasHi = true;
}

// estimated result too small to continue => end
// calculation
if(irrGuess <= minDistance) {
result = irr;
break;
}
}
}
}
}
return result;
}
shakoon
2022-06-02 09:15:08 +08:00
实际年化利率=月利率*24n/(1+n),n 为分期期数
IMRES
2022-06-02 12:55:57 +08:00
关键词:XIRR
wgsgyes
2022-06-02 13:16:33 +08:00
假设名义利率是 i , 根据借贷合同约定:每月计息一次、每月利率为 i/12, 实际利率=(1+i/12)^12-1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856851

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX