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

时间:2015-08-10 12:06:42

标签: algorithm search binary finance

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

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

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

有没有人,也许是金融界的某个人,处理过这种搜索?

1 个答案:

答案 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

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

这种方法有一些好处:

  1. 结果更容易实现和理解。如果您愿意,可以在公式中推导出公式。
  2. 结果几乎可以保证比搜索技术更精确。
  3. 它会跑得很快。
  4. 以下是我如何对问题进行建模:

    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
    

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