Вычисление ковариаций для оценки волатильности
В современной теории портфеля (MPT) риск измеряется через волатильность. Математика расчёта волатильности портфеля достаточно сложна и требует ковариаций дневных доходностей. Сейчас мы пройдём по каждому месяцу в DataFrame returns_monthly и вычислим ковариацию дневных доходностей.
С помощью индексов типа datetime в pandas можно получить месяц и год через df.index.month и df.index.year. Мы воспользуемся этим, чтобы создать маску для returns_daily, которая выберет дневные доходности за текущий месяц и год из цикла. Затем применим маску к DataFrame следующим образом: df[mask]. Это позволит извлечь из returns_daily только те записи, которые соответствуют текущим месяцу и году на каждой итерации цикла. В завершение используем метод .cov() из pandas, чтобы получить ковариацию дневных доходностей.
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
- Пройдите в цикле по индексу
returns_monthly. - Создайте маску для
returns_daily, которая использует текущий месяц и год изreturns_monthlyи сопоставляет их с месяцем и годом переменнойiв цикле. - Примените маску к
returns_dailyи вычислите ковариации с помощью метода.cov().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Daily covariance of stocks (for each monthly period)
covariances = {}
rtd_idx = returns_daily.index
for i in returns_monthly.____:
# Mask daily returns for each month and year, and calculate covariance
mask = (rtd_idx.month == i.month) & (rtd_idx.____ == i.____)
# Use the mask to get daily returns for the current month and year of monthy returns index
covariances[i] = returns_daily[____].cov()
print(covariances[i])