【发布时间】:2015-09-19 00:58:11
【问题描述】:
我正在尝试使用pandas 的rolling_* 函数提取交易数据的滚动标准偏差和均值。
我的数据如下:
Tick Trading_day Trade_price
VOD 2013-1-2 30.23
VOD 2013-1-2 30.33
VOD 2013-1-2 30.24
VOD 2013-1-5 31.23
VOD 2013-1-5 30.23
VOD 2013-1-6 30.23
VOD 2013-1-7 30.23
VOD 2013-1-8 30.23
VOD 2013-1-9 30.23
... ....... .....
RBS 2013-1-2 15.23
... ....... .....
基本上,我想根据(-3,+3)个交易日计算出每只股票的平均价格和价格标准差。
请注意这里有两个棘手的事情:
每个交易日有不同数量的交易(流动日频繁交易)。
这些是交易日(不是日历日),因此它们不是按顺序排列的。
我的理想输出是
Tick Trading_day mean_price std_price
VOD 2013-1-2 30.23 0.13
VOD 2013-1-5 30.11 0.09
VOD 2013-1-6 30.24 0.15
... ..... ....... .....
RBS 2013-1-2 15.23 0.19
有人知道吗?提前致谢!
【问题讨论】:
-
IIUC 我认为你可以做到
df.set_index('Trading_day', drop=False).groupby('Tick').apply(lambda x: pd.rolling_mean(x, window = 1, freq='6d'))和df.set_index('Trading_day', drop=False).groupby('Tick').apply(lambda x: pd.rolling_std(x, window = 1, freq='6d')) -
如果同一证券在任何给定日期有多个交易,您想如何计算平均价格?理想情况下,它将按交易规模加权,但未提供该信息。如果它不可用,那么我假设您想要一个简单的意思?
-
另外,有没有可能一个交易日没有给出价格?还是在非交易日给出价格?也就是说,我们是否可以假设每个交易日都有一个价格,并且所有价格都发生在交易日?
-
@EdChum 非常感谢您
-
@Alexander 是的。我只想要简单的等重均值