Python:计算指数加权滞后平方收益(方差)
我正在尝试实施AQR投资策略“时间序列动量”: 我在这个过程中遇到了一些困惑/麻烦。乍一看,熊猫似乎具有计算关键指标“指数加权滞后平方回报”的功能,作为衡量金融工具波动性的指标。因此,公式如下(有一些背景): 我知道熊猫有一些功能可以将上面的公式(1)应用于时间序列。例如,未来合同的每日回报可以是:Python:计算指数加权滞后平方收益(方差),python,pandas,exponential,moving-average,volatility,Python,Pandas,Exponential,Moving Average,Volatility,我正在尝试实施AQR投资策略“时间序列动量”: 我在这个过程中遇到了一些困惑/麻烦。乍一看,熊猫似乎具有计算关键指标“指数加权滞后平方回报”的功能,作为衡量金融工具波动性的指标。因此,公式如下(有一些背景): 我知道熊猫有一些功能可以将上面的公式(1)应用于时间序列。例如,未来合同的每日回报可以是: [In]: returns [Out]: Date 1984-01-03 -0.007299 1984-01-04 0.003614 1984-01-05 -0.007318 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方法不会使用滞后回报,而是使用当前时间段的回报,这对吗?因此,我需要用我自己的方式来计算熊猫?也许通过某种形式的转换
提前谢谢!我仍在掌握熊猫的细微差别,非常感谢您的帮助。您可以使用dataframe
shift
方法
df['shift'] = df['column to shift'].shift(-1)
这将使列向后移动1步。因此,第1行的shift
值等于第2行的列的值,以移位
等。最后一行的NaN将被插补
像这样
column to shift shift
0 4 1.0
1 1 1.0
2 1 3.0
3 3 4.0
4 4 2.0
5 2 3.0
6 3 2.0
7 2 2.0
8 2 2.0
9 2 NaN
这应该足以创建您想要使用的公式。Hi@error,感谢您的输入。如果我遗漏了什么,请原谅,但我的理解是,将np.sqrt(261)*returns.ewm(com=60).std()
应用于此移位数据将无法满足等式,因为尽管收益已移位,但计算的expo加权平均数也已移位。理想情况下,我需要能够插入当前时间步的平均值和前一时间步的返回值