Минимизация 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)