【问题标题】:Designing an algorithm for retirement planning, searching for retirement rate %设计退休计划算法,寻找退休率%
【发布时间】:2015-11-02 08:12:00
【问题描述】:

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

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

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

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

【问题讨论】:

  • 正如我们所说的那样,我正走在这条路上,同时我还在思考其他可能性。也许我会很幸运,有人已经做得更好了。
  • 当您说提款百分比时,您的意思是本金的百分比,对吗?否则,您可以永远提取任何百分比(嗯,小于 100%)(忽略最小面额是 0.01 美元)。

标签: algorithm search binary finance


【解决方案1】:

抱歉,如果我误解了您的要求。如果只是在你给出的公式中找到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. 结果更易于实施和理解。如果您愿意,可以将公式的推导放在 cmets 中。
  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,000r = 1.0025(每年略高于 3%)和T = 360(退休储蓄可以持续 30 年)。然后我们有

w = $1,000,000 * 1.0025^360 * (1.0025 - 1) / (1.0025 ^ 360 - 1)
  = $4,216

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

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多