Мінімізація CVaR
У цій вправі ви потренуєтеся використовувати інструменти PyPortfolioOpt для мінімізації CVaR як цілі керування ризиком.
Ви імпортуєте модуль pypfopt.efficient_frontier і отримаєте клас EfficientCVaR, створивши його екземпляр на основі активів інвестбанків за період 2005–2010 років.
Потім ви скористаєтеся методом екземпляра min_cvar(), щоб знайти оптимальні ваги портфеля, які мінімізують CVaR.
Доходності активів портфеля містяться у векторі returns — у цій вправі також використовується словник names, щоб зіставити ваги портфеля з назвами банків.
Ця вправа є частиною курсу
Кількісне управління ризиками в Python
Інструкції до вправи
- Імпортуйте клас
EfficientCVaRзpypfopt.efficient_frontier. - Створіть екземпляр класу
EfficientCVaRec, використовуючи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)