首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从使用pandas.ewm计算的相关矩阵中提取成对相关的时间序列?

如何从使用pandas.ewm计算的相关矩阵中提取成对相关的时间序列?
EN

Stack Overflow用户
提问于 2021-03-26 23:12:13
回答 1查看 72关注 0票数 1

我有资产回报的时间序列数据。返回数据框索引是日期,列是资产名称。

代码语言:javascript
运行
复制
             L/S HF        US     World
1995-02-28   0.030366  0.029288  0.014742
1995-03-31   0.008086  0.017165  0.027338
1995-04-28   0.013615  0.013851  0.018561
1995-05-31   0.020304  0.029865  0.016769
1995-06-30   0.035106  0.011546 -0.001471
...          ...       ...       ...
2021-02-26   0.045488  0.008619  0.005904

我计算了指数加权相关。

代码语言:javascript
运行
复制
corHist = returnTS.ewm(halflife = 36).corr()

print(corHist.info())

<class 'pandas.core.frame.DataFrame'>
MultiIndex: 939 entries, (1995-02-28 00:00:00, US) to (2021-02-26 00:00:00, L/S HF)
Data columns (total 3 columns):
US        936 non-null float64
World     936 non-null float64
L/S HF    936 non-null float64
dtypes: float64(3)
memory usage: 37.3+ KB
None
代码语言:javascript
运行
复制
print(corHist)

                         US     World    L/S HF
1995-02-28 US           NaN       NaN       NaN
           World        NaN       NaN       NaN
           L/S HF       NaN       NaN       NaN
1995-03-31 US      1.000000 -1.000000  1.000000
           World  -1.000000  1.000000 -1.000000
...                     ...       ...       ...
2021-01-29 World   0.976792  1.000000  0.896372
           L/S HF  0.881601  0.896372  1.000000
2021-02-26 US      1.000000  0.976763  0.857102
           World   0.976763  1.000000  0.869567
           L/S HF  0.857102  0.869567  1.000000

我知道如何提取单个日期的相关矩阵。

代码语言:javascript
运行
复制
corHist.xs('2021-02-26', level = 0, axis=0, drop_level=True)

              US     World    L/S HF
US      1.000000  0.976763  0.857102
World   0.976763  1.000000  0.869567
L/S HF  0.857102  0.869567  1.000000

我想要的是提取成对相关的时间序列,比如美国和世界之间或其他一些对之间的时间序列。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-27 05:35:05

这应该适用于“US”/“World”关联(对于其他对也是如此):

代码语言:javascript
运行
复制
corHist.xs('US',level=1)['World']

(对于您的基本示例)生成一个系列:

代码语言:javascript
运行
复制
1995-02-28         NaN
1995-03-31   -1.000000
1995-04-28   -0.484825
1995-05-31   -0.592066
1995-06-30    0.433440
2021-02-26    0.529957
Name: World, dtype: float64

此外,这

代码语言:javascript
运行
复制
corHist.unstack(level=1)

为所有对生成按日期索引的df:

代码语言:javascript
运行
复制
            L/S HF                          US                               World
            L/S HF  US          World       L/S HF      US      World         L/S HF    US        World
1995-02-28  NaN     NaN         NaN         NaN         NaN     NaN           NaN       NaN           NaN
1995-03-31  1.0     1.000000    -1.000000   1.000000    1.0    -1.000000    -1.000000   -1.000000   1.0
1995-04-28  1.0     0.877267    -0.845137   0.877267    1.0     -0.484825   -0.845137   -0.484825   1.0
1995-05-31  1.0     0.783590    -0.853993   0.783590    1.0     -0.592066   -0.853993   -0.592066   1.0
1995-06-30  1.0    -0.146586    -0.928883   -0.146586   1.0     0.433440    -0.928883   0.433440    1.0
2021-02-26  1.0    -0.517059    -0.826607   -0.517059   1.0     0.529957    -0.826607   0.529957    1.0

因此您可以使用更对称的命令

代码语言:javascript
运行
复制
corHist.unstack(level=1)[('US','World')]

获取与之前相同的序列

代码语言:javascript
运行
复制
1995-02-28         NaN
1995-03-31   -1.000000
1995-04-28   -0.484825
1995-05-31   -0.592066
1995-06-30    0.433440
2021-02-26    0.529957
Name: (US, World), dtype: float64
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66819584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档