我发现了一些有关在股票数量不变的情况下如何计算平均成对相关性的解决方案。但是,当它发生变化时如何计算呢?
请参阅下面的示例。
import numpy as np
import pandas as pd
import os as os
import pandas.io.data as web
import datetime as datetime
from pandas.io.data import DataReader
stocks = ['spy', 'gld', 'uso']
start = datetime.datetime(2010,1,1)
end = datetime.datetime(2016,1,1)
df = web.DataReader(stocks, 'yahoo', start, end)
adj_close_df = df['Adj Close']
returns = adj_close_df.pct_change(1).dropna()
returns = returns.dropna()
rollingcor = returns.rolling(130).corr()
我找到了使用公式的解决方案
n = len(stocks)
((rollingcor.sum(skipna=0).sum(skipna=0) - n) / 2) / n
以及使用遮罩的第二种解决方案
import numpy as np
mask = np.triu_indices(df_corr.shape[1], k=1)
但是,这两种解决方案都假设库存数量不变。任何人都可以针对数量不断变化的股票吗?