algorithm - 设计退休计划算法,搜索退休率 %

标签 algorithm search binary finance

我的客户是一名财务顾问,帮助人们制定退休计划。他目前的流程是获取他们所有的财务数据,将它们输入电子表格,然后根据退休人员的目标,找出他们可以从储蓄/ Assets /投资中提取的比率(百分比)。这个百分比是解决问题的方法,他现在找到它的方法是猜测它(例如“让我们试试 5%(太高了)。好吧,1%(太低了)怎么样。嗯,2.5%?(太高了)...直到他找到满足退休人员条件的百分比)。

如果我按照他的方式编写程序,那么我认为这只是一个二进制搜索算法。但感觉有更聪明的方法可以做到这一点。他基本上是在使用复利公式 A=P(1+r/n)^nt 来找出该方程中的“r”,但这必须在几十年的时间内完成,而且每年需要大约十二年后台计算。因此,对于二分搜索的一次迭代,大约十几次,也许 30 年等于约 300 次计算。

很抱歉,如果这不够详细,但更具体的要求和详尽的详细程度。

有没有人,也许是金融部门的人,处理过这种搜索?

最佳答案

抱歉,如果我误解了您的问题。如果只是在你给出的公式中求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

更一般地说,如果您认为您可能能够得到一个封闭形式的解决方案,您应该非常努力地写下您的模型和方程式,以便您可以找到这样的解决方案。

这种方法的一些好处:

  1. 结果更易于实现和理解。喜欢的可以把公式的推导放在评论里。
  2. 结果几乎可以保证比您从搜索技术中获得的结果更精确。
  3. 它会跑得很快。

以下是我可能如何为问题建模:

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

如果您想对情况进行不同的建模,只需将其写下来并按照与此相同的步骤操作即可。运气好的话,您的模型将有一些封闭形式的解决方案,就像我在这个答案中解决的两个问题一样。

关于algorithm - 设计退休计划算法,搜索退休率 %,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919120/

相关文章:

javascript - 使用 JavaScript 从二进制数据打开 PDF 文件

python - 膳食计划算法?

algorithm - 逆时针排列凹多边形顶点

c# - 字典通配符搜索

algorithm - 搜索是按时间线顺序排列的吗?

search - Google map 搜索栏在 GWT 中调整大小

c++ - 是否可以将 bitset<8> 的值复制到一串数组而不进行转换?

python - 你如何逃避这个while循环?

算法 - 如何生成日期结构?

找到平行于平面并垂直于另一个向量的向量的算法