【发布时间】:2017-07-12 13:54:07
【问题描述】:
我正在尝试实施 AQR 投资策略“时间序列动量”:https://www.aqr.com/library/journal-articles/time-series-momentum。
我在部分过程中遇到了一些困惑/麻烦。乍一看,Pandas 似乎具有计算关键指标“指数加权滞后平方收益”的功能,以衡量金融工具的波动性。因此,公式是(有一些背景):
我了解 Pandas 具有将上述公式 (1) 应用于时间序列的一些功能。例如,未来合约的每日收益可能是:
[In]: returns
[Out]:
Date
1984-01-03 -0.007299
1984-01-04 0.003614
1984-01-05 -0.007318
1984-01-06 -0.004134
1984-01-09 0.009487
1984-01-10 -0.000896
...
然后我将pandas.DataFrame.ewm 与pd.std() 结合使用,尝试在一个快速的单行中实现所需的公式,设置com=60 以匹配论文,这会产生:
[In]: np.sqrt(261) * returns.ewm(com=60).std()
[Out]:
Date
1984-01-03 NaN
1984-01-04 0.124664
1984-01-05 0.101879
1984-01-06 0.082925
1984-01-09 0.120588
1984-01-10 0.107411
...
虽然这看起来没问题...虽然论文中的公式使用了上一个或滞后回报与指数加权平均回报之间的差值当前计算时间步:
我是否正确地说我在上面执行的 Pandas 方法不会使用 lagged 回报,而是会使用 current 时间步的回报?因此,我需要在 Pandas 中编写自己的计算方式吗?也许通过使用某种转变?
提前致谢!我仍在掌握 Pandas 的细微差别,非常感谢您的帮助。
【问题讨论】:
标签: python pandas exponential moving-average volatility