Python 中滚动相关数据帧的滚动平均值?
Rolling Mean of Rolling Correlation dataframe in Python?
Python初学者。
到目前为止我做了什么:
从雅虎财经的股票列表中导入价格数据。
在股票(每个组合)之间,将 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 的开始(每个 post 你应该只有一个问题)。
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天的相关矩阵window:
>>> 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初学者。
到目前为止我做了什么:
从雅虎财经的股票列表中导入价格数据。
在股票(每个组合)之间,将 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 的开始(每个 post 你应该只有一个问题)。
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天的相关矩阵window:
>>> 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