У меня есть данные еженедельного возврата в порядке возрастания. Предположим, я хочу рассчитать экспоненциально взвешенную движущуюся ковариационную матрицу с предположительным периодом полураспада 5 лет или 260 недель. Я пытаюсь следовать pandas.DataFrame.ewm, но не совсем понимаю, как это реализовать в моем случае. Учитывая, что я не могу упомянуть период полураспада, поскольку применимо только к mean(), а значение периода полураспада не будет применяться к другим функциям.
Используя alpha = 1-exp(ln(0.5)/HalfLife) = 2/(span + 1), я использовал span = 750.
ret — это мой возвращаемый фрейм данных с DatetimeIndex. ret.shape
это (895, 11)
Я попробовал SigmaExpW = ret.ewm(span = 750).cov()
, но результат не такой, как я ожидал. SigmaExpW.shape
это (9845, 11)
.
Для контекста -
ret.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 895 entries, 2003-06-04 to 2020-07-22
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 GE 895 non-null float64
1 IGM 895 non-null float64
2 USLC 895 non-null float64
3 USSC 895 non-null float64
4 ExUS 895 non-null float64
5 ExUSHedged 895 non-null float64
6 EM 895 non-null float64
7 Commodities 895 non-null float64
8 HYM 895 non-null float64
9 Government 895 non-null float64
10 Cash 895 non-null float64
dtypes: float64(11)
Я явно совершаю какую-то элементарную ошибку. Был бы признателен за помощь.
ret.ewm(halflife=260).cov()
. Это рассчитает альфу соответственно для вас - person Code Different   schedule 17.08.2020SigmaExpW.shape
это(9845, 11)
- person deb   schedule 17.08.2020