【发布时间】:2020-08-19 15:32:28
【问题描述】:
我有一个 numpy 数组的未来现金流和 0.01 的贴现率。我想计算每个时间点未来现金流的现值。例如,如果我想计算 t=0 时的现值,我会这样做:
cash_flow = np.array([3, 4, 5, 3, 5])
pv_0 = sum(cf/((1+0.01)**i) for i,cf in emunerate(cash_flow, start=1))
所以在 t = 1 时,我会做同样的事情,除了将所有内容向前移动一个周期:
cash_flow_1 = np.array([4, 5, 3, 5])
pv_1 = sum(cf/((1+0.01)**i) for i,cf in emunerate(cash_flow_1, start=1))
我希望最终结果是一个 numpy 数组作为原始 cash_flow 数组。有没有比在每个元素上编写 for 循环更聪明的方法?
编辑: 受下面对话的启发,我有一个“数组”方法(这只是我说没有循环的方式......):
discount_array = np.geomspace((1/1.01)**5, 1/1.01, 5)
(np.cumsum(cash_flow[::-1]*discount_array)*np.geomspace((1.01)**4, 1, 5))[::-1]
【问题讨论】:
标签: python arrays numpy finance