簡體   English   中英

熊貓:交易日滾動標准差/均值

[英]Pandas: rolling std deviation/mean by trading days

我試圖提取滾動標准方差,並通過使用交易數據意味着rolling_*的功能pandas

我的數據如下:

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)交易日計算每只股票的平均價格和價格的標准偏差。

請注意,這里有兩個棘手的事情

  1. 每個交易日(交易日為頻繁交易)中有多種交易

  2. 那些是交易日( 不是日歷日 ),因此它們沒有順序。

我理想的輸出是

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

有人知道嗎? 提前致謝 !

這是我在此示例中使用的數據:

df = pd.DataFrame({'Tick': ['VOD'] * 7 + ['RBS'] * 2,
                   'Trade_price': [30.23, 30.24, 31.23, 30.23, 30.23, 30.23, 30.23, 14.11, 15.23],
                   'Trading_day': ['1/2/13', '1/2/13', '1/5/13', '1/5/13', '1/6/13', '1/7/13', '1/8/13', '1/2/13', '1/5/13']})

首先,讓我們使用.to_datetime()並將日期列設置為熊貓的時間戳(如果尚未添加)。

df['Trading_day'] = pd.to_datetime(df.Trading_day)

接下來,對數據進行分組和轉換,以便我們獲取任何給定日期每一報價的平均價格,並且該日期在索引中是唯一的:

df = df.groupby(['Trading_day', 'Tick']).Trade_price.mean().unstack()
>>> df 
Tick           RBS     VOD
Trading_day               
2013-01-02   14.11  30.235
2013-01-05   15.23  30.730
2013-01-06     NaN  30.230
2013-01-07     NaN  30.230
2013-01-08     NaN  30.230

現在,您要“根據(-3,+3)個交易日計算出每只股票的平均價格和價格的標准差”。 一種方法是使用pd.rolling_mean()並將結果居中。 給定有限的數據集,我正在使用3天居中窗口(即前一天,當前日期和第二天)。 您將需要使用7天的時間來獲得+/- 3個交易日。

>>> pd.rolling_mean(df, 3, center=True) 
Tick         RBS        VOD
Trading_day                
2013-01-02   NaN        NaN
2013-01-05   NaN  30.398333
2013-01-06   NaN  30.396667
2013-01-07   NaN  30.230000
2013-01-08   NaN        NaN

要獲得滾動標准偏差,只需使用pd.rolling_std()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM