额外付款的未来价值计算
Future Value Calculation with extra payments
我正在尝试创建一个 'savings goal' 计算器,但我对如何(如果可能)实现以下目标感到困惑:-
给定利率,计算达到目标所需的每月还款额。 (可以用底部的公式来做到这一点 - 在 javascript 中,但无论如何应该有意义)
根据未来某个时间的一次或多次一次性付款调整每月付款金额。 (无法解决这个问题)
例如,我可以计算出在 30 年内以 7% 的利率实现 300,000 英镑的余额是 245.91 英镑 pcm。
但我不确定如果引入第 5 年的一次性付款,我该如何调整此金额:-
e.g.
yr 1 - x
yr 2 - 4 - x
yr 5 - 10000 lump sum
yr 6 - 30 - x
其中 x 是考虑到在第 30 年仍达到 300,000 英镑总额的一次性付款后每月所需的金额。
也适用于相同的情况,但在第 15 年再次付款。
e.g.
yr 1 - x
yr 2 - 4 - x
yr 5 - 10000 lump sum
yr 6 - 14 - x
yr 15 - 10000 lump sum
yr 16 - 30 - x
我的思路是计算每笔一次性付款的未来价值(因此第 5 年 10000 年 25 年的复合利率为 7%),然后从所需金额中减去该金额(即 300,000 英镑) - 54,274.33 美元 = 245725.67 英镑)然后根据 245725.67 英镑计算所需的每月付款。
它很接近(301,827.53 英镑,每厘米 201.42 英镑)但我确信我在计算中遗漏了一些东西,因为它在更大的值下会更远。
我猜这是因为在第 5 年我重复计算了有效的付款金额(因为下面的计算仍然会考虑每月付款,即使它已被覆盖) - 我需要减去被覆盖的每月付款的复利?
我希望以上内容有意义,如有任何帮助,我们将不胜感激。
使用的计算:-
ir - 利率
fv - 终值(剩余价值)
np - 周期数(年)
pv - 现值
^ = power 因为我在这里不知道该怎么做 :-P
(ir/12)[fv - pv(1 + ir/12) ^ 12np] / [(1 + ir/12) ^ 12np - 1]
或在Javascript
function calc1(ir, fv, np, pv){
/*
ir - interest rate
fv - future value (residual value)
np - number of periods (years)
pv - present value
*/
var a, b, c, d;
a = ir / 12;
b = (1 + ir/12);
c = 12 * np;
d = (a * (fv - (pv * Math.pow(b, c)))) / (Math.pow(b, c) - 1);
return d;
}
是的,您关于重复计算的预感是正确的,您可以将第 5 年的金额也写为
x + (10000 - x)
其中第一项由几何求和公式覆盖。第二项需要减少 x
,但 x
是未知的,因为问题是线性的,所以可能会被打破。
但是,为了避免过多的代码混乱并保持一定的灵活性,建议您像第一次猜测时那样做,并在确切的主要计算公式(您用于验证的那个计算公式)上使用正割公式£302k from x=201) 来优化结果。使用第一个猜测 x
和 x+1
来初始化正割方法。
我正在尝试创建一个 'savings goal' 计算器,但我对如何(如果可能)实现以下目标感到困惑:-
给定利率,计算达到目标所需的每月还款额。 (可以用底部的公式来做到这一点 - 在 javascript 中,但无论如何应该有意义)
根据未来某个时间的一次或多次一次性付款调整每月付款金额。 (无法解决这个问题)
例如,我可以计算出在 30 年内以 7% 的利率实现 300,000 英镑的余额是 245.91 英镑 pcm。
但我不确定如果引入第 5 年的一次性付款,我该如何调整此金额:-
e.g.
yr 1 - x
yr 2 - 4 - x
yr 5 - 10000 lump sum
yr 6 - 30 - x
其中 x 是考虑到在第 30 年仍达到 300,000 英镑总额的一次性付款后每月所需的金额。
也适用于相同的情况,但在第 15 年再次付款。
e.g.
yr 1 - x
yr 2 - 4 - x
yr 5 - 10000 lump sum
yr 6 - 14 - x
yr 15 - 10000 lump sum
yr 16 - 30 - x
我的思路是计算每笔一次性付款的未来价值(因此第 5 年 10000 年 25 年的复合利率为 7%),然后从所需金额中减去该金额(即 300,000 英镑) - 54,274.33 美元 = 245725.67 英镑)然后根据 245725.67 英镑计算所需的每月付款。
它很接近(301,827.53 英镑,每厘米 201.42 英镑)但我确信我在计算中遗漏了一些东西,因为它在更大的值下会更远。
我猜这是因为在第 5 年我重复计算了有效的付款金额(因为下面的计算仍然会考虑每月付款,即使它已被覆盖) - 我需要减去被覆盖的每月付款的复利?
我希望以上内容有意义,如有任何帮助,我们将不胜感激。
使用的计算:-
ir - 利率 fv - 终值(剩余价值) np - 周期数(年) pv - 现值 ^ = power 因为我在这里不知道该怎么做 :-P
(ir/12)[fv - pv(1 + ir/12) ^ 12np] / [(1 + ir/12) ^ 12np - 1]
或在Javascript
function calc1(ir, fv, np, pv){
/*
ir - interest rate
fv - future value (residual value)
np - number of periods (years)
pv - present value
*/
var a, b, c, d;
a = ir / 12;
b = (1 + ir/12);
c = 12 * np;
d = (a * (fv - (pv * Math.pow(b, c)))) / (Math.pow(b, c) - 1);
return d;
}
是的,您关于重复计算的预感是正确的,您可以将第 5 年的金额也写为
x + (10000 - x)
其中第一项由几何求和公式覆盖。第二项需要减少 x
,但 x
是未知的,因为问题是线性的,所以可能会被打破。
但是,为了避免过多的代码混乱并保持一定的灵活性,建议您像第一次猜测时那样做,并在确切的主要计算公式(您用于验证的那个计算公式)上使用正割公式£302k from x=201) 来优化结果。使用第一个猜测 x
和 x+1
来初始化正割方法。