我的客户是财务顾问,帮助人们制定退休计划。他目前的流程是获取所有财务数据,将其输入电子表格,并根据退休人员的目标,发现他们可以从储蓄/资产/投资中退出的比率(以百分比表示)。这个百分比是一个问题的解决方案,他现在发现它的方式是猜测它(例如“让我们尝试5%(太高)。好吧,1%(太低)怎么样。嗯,2.5%?(太高了......直到他找到满足退休人员条件的百分比。)
如果我按照他的方式编程,那么我认为它只是一个二进制搜索算法。但感觉有一种更聪明的方法可以做到这一点。他基本上使用复合利息公式A = P(1 + r / n)^ nt来发现该等式中的'r',但它必须在几十年的时间内完成,每年需要大约十几个在后端计算。因此,大约十二次,可能是30年等于二次搜索的一次迭代的~300次计算。
对不起,如果这个不够详细,但需要更详细的要求和详尽的详细程度。
有没有人,也许是金融界的某个人,处理过这种搜索?
答案 0 :(得分:0)
很抱歉,如果我误解了你的要求。如果只是在您给出的公式中找到r
:
A = P (1 + r / n) ^ nt
A/P = (1 + r / n) ^ nt
log_nt A/P = 1 + r / n
log_nt A/P - 1 = r / n
n (log_nt A/P - 1) = r
更一般地说,如果您认为自己可以获得封闭形式的解决方案,那么您应该非常努力地写下您的模型和方程式,以便找到这样的解决方案。
这种方法有一些好处:
以下是我如何对问题进行建模:
P: principal
r: monthly interest gained on principal
w: amount withdrawn from principal
T: number of months over which the principal is to be withdrawn
B(t): balance at time 0 <= t <= T
B(0) = P
B(T) = 0
我们希望找到w
。我们写下我们的重复:
B(0) = P
B(t+1) = B(t) * r - w
我们可以写出几个术语:
B(0) = P
B(1) = P * r - w
B(2) = (P * r - w) * r - w = P * r^2 - wr - w
B(3) = (P * r^2 - wr - w) * r - w = P * r^3 - wr^2 - wr - w
...
B(t) = P * r^t - w(r^(t-1) + r^(t-2) + ... + 1)
= P * r^t - w(r^t - 1)/(r - 1)
现在我们设置B(T) = 0
假设我们想要钱用完,然后解决w:
0 = B(T) = P * r^T - w(r^T - 1)/(r - 1)
w(r^T - 1)/(r - 1) = P * r^T
w = P * r^T * (r - 1) / (r^T - 1)
假设P = $1,000,000
,r = 1.0025
(每年略高于3%)和T = 360
(退休储蓄持续30年)。然后我们有
w = $1,000,000 * 1.0025^360 * (1.0025 - 1) / (1.0025 ^ 360 - 1)
= $4,216
如果您想以不同方式对情况进行建模,则只需将其写下来并按照与此相同的步骤进行操作。运气好的话,你的模型将有一些封闭形式的解决方案,因为我在这个答案中解决了两个问题。