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

Минимизация CVaR

В этом упражнении вы попрактикуетесь с инструментами PyPortfolioOpt для минимизации CVaR как цели управления рисками.

Вы загрузите модуль pypfopt.efficient_frontier, получите класс EfficientCVaR и создадите его экземпляр на основе данных об активах инвестиционных банков за период 2005–2010 годов.

Затем вы воспользуетесь методом min_cvar() этого экземпляра, чтобы найти оптимальные веса портфеля, минимизирующие CVaR.

Доходности активов портфеля хранятся в векторе returns — в упражнении также используется словарь names для сопоставления весов портфеля с названиями банков.

Это упражнение является частью курса

Количественное управление рисками на Python

Посмотреть курс

Инструкции к упражнению

  • Импортируйте класс EfficientCVaR из pypfopt.efficient_frontier.
  • Создайте экземпляр класса EfficientCVaR с именем ec, используя returns; обратите внимание, что expected_returns не нужен, поскольку целевая функция здесь отличается от оптимизации по методу «доходность–риск».
  • Найдите и отобразите оптимальный портфель с помощью метода .min_cvar() объекта ec.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Import the EfficientCVaR class
from pypfopt.____ import EfficientCVaR

# Create the efficient frontier for CVaR minimization
ec = ____(None, ____)

# Find the cVaR-minimizing portfolio weights at the default 95% confidence level
optimal_weights = ec.____()

# Map the values in optimal_weights to the bank names
optimal_weights = { names[i] : optimal_weights[i] for i in optimal_weights}

# Display the optimal weights
print(optimal_weights)
Редактировать и запускать код