python - Python 中滚动相关数据框的滚动平均值?

标签 python matrix pandas yahoo correlation

这里是 Python 初学者。

到目前为止我做了什么:

  • 从 Yahoo Finance 从股票列表中导入价格数据。

  • 将股票(每个组合)之间的 20 天滚动相关性计算到数据框中。

我愿意:

1) 计算每个 20 天滚动相关性的 200 天简单移动平均线。

2) 在矩阵中报告 200 天移动平均结果。

如何在 python/pandas 中执行此操作?谢谢,这对我有很大帮助!


这是我目前所拥有的......

import pandas as pd
from pandas import DataFrame
import datetime
import pandas.io.data as web
from pandas.io.data import DataReader

stocks = ['spy', 'gld', 'uso']
start = datetime.datetime(2014,1,1)
end = datetime.datetime(2015,1,1)

f = web.DataReader(stocks, 'yahoo', start, end)
adj_close_df = f['Adj Close']

correls = pd.rolling_corr(adj_close_df, 20)

means = pd.rolling_mean(correls, 200) #<---- I get an error message here!

最佳答案

这是一个回答问题 1-3 的开始(每个帖子你应该只有一个问题)。

import pandas.io.data as web
import datetime as dt
import pandas as pd

end_date = dt.datetime.now().date()
start_date = end_date - pd.DateOffset(years=5)

symbols = ['AAPL', 'IBM', 'GM']
prices = web.get_data_yahoo(symbols=symbols, start=start_date, end=end_date)['Adj Close']
returns = prices.pct_change()
rolling_corr = pd.rolling_corr_pairwise(returns, window=20)

对于单个股票相对于所有其他股票,获得滚动相关性的滚动平均值相对简单。例如:

pd.rolling_mean(rolling_corr.major_xs('AAPL').T, 200).tail()
Out[34]: 
            AAPL        GM       IBM
Date                                
2015-05-08     1  0.313391  0.324728
2015-05-11     1  0.315561  0.327537
2015-05-12     1  0.317844  0.330375
2015-05-13     1  0.320137  0.333189
2015-05-14     1  0.322119  0.335659

查看最近 200 天窗口的相关矩阵:

>>> rolling_corr.iloc[-200:].mean(axis=0)
          AAPL        GM       IBM
AAPL  1.000000  0.322119  0.335659
GM    0.322119  1.000000  0.383672
IBM   0.335659  0.383672  1.000000

关于python - Python 中滚动相关数据框的滚动平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251571/

相关文章:

python - 两个英制长度之差

r - mapply 基础知识? - 如何从两个向量和一个函数创建一个矩阵

python - 如何在 numpy 数组中找到连续的正数、负数和零?

python - 将 Pandas 数据框插入到 neo4j 中

python - python中的urlib2.URLError及其原因

python - 返回对应于随机整数的给定名称

python - 如何在 Graphlab SFrame 中通过划分两列来创建新列?

c - 使用 GSL 的矩阵乘法

c - 矩阵排序段错误

python - 按 id 过滤最大数量