使用pandas将累积回报转换为每日回报

时间:2017-08-22 14:48:30

标签: python pandas

所以我试图从

给出的累积回报中获益
hist_data = (hist_data - hist_data.iloc[0]) / hist_data.iloc[0]

而我正试图从这个累积的回报中恢复到每日回报,但我却在如何有效地做到这一点。有任何想法吗? 我认为如果我减去一个

,这可能会有效
(hist_data[1:] - hist_data[:-1]) / hist_data[:-1]

1 个答案:

答案 0 :(得分:4)

如果hist_data包含累计回报,则这是计算每日回报的常用快捷方式。假设hist_data是返回百分比的向量,您需要将1.0添加到hist_data,如下所示。这样我们就得到了一个回报率矢量而不是回报百分比。

import numpy as np

daily_returns = np.exp(np.log(hist_data + 1.0).diff())

这里我们只是使用自然日志(ln)的属性,即

ln(a/b) = ln(a) - ln(b)
   a/b  = exp(ln(a) - ln(b))