НачатьНачать бесплатно

Вычисление ковариаций для оценки волатильности

В современной теории портфеля (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])
Редактировать и запускать код