Керування ризиком за допомогою VaR і CVaR

Кількісне управління ризиками в Python

Jamsheed Shorish

Computational Economist

Керування ризиком через модерну теорію портфеля

  • Ефективний портфель
    • Ваги портфеля максимізують дохід за заданого рівня ризику
  • Ефективна межа: множина пар (ризик, дохід), згенерованих різними ефективними портфелями
    • Кожна точка = оптимізація ваг портфеля
  • Створення ефективного портфеля/межі: Модерна теорія портфеля

Графік ефективної межі

Кількісне управління ризиками в Python

Урахування Value at Risk у MPT

  • Модерна теорія портфеля (MPT): оптимізація «середнє–дисперсія»
    • Найвищий очікуваний дохід
    • Рівень ризику (волатильність) задано
    • Цільова функція: очікуваний дохід
  • VaR/CVaR: вимірюють ризик за розподілом збитків
  • Адаптуйте MPT, щоб оптимізувати за розподілом збитків замість очікуваного доходу
Кількісне управління ризиками в Python

Нова ціль: мінімізувати CVaR

  • Змініть ціль оптимізації портфеля
    • ціль середнє–дисперсія: максимізувати середній очікуваний дохід
    • ціль CVaR: мінімізувати очікуваний умовний збиток за заданого рівня довіри
  • Приклад: розподіл збитків
    • VaR: максимальний збиток із довірою 95%
    • Оптимізація: ваги портфеля, що мінімізують CVaR
    • CVaR: очікуваний збиток за умови не менше втрати VaR (найгірші 5% випадків)
  • Знайдіть найменший очікуваний збиток у найгірших 100% - 95% = 5% результатів
Кількісне управління ризиками в Python

Проблема керування ризиком

  • Оберіть оптимальні ваги портфеля $w^\star$ як розв'язок

cvar_minimization

  • Нагадаємо: $f(x)$ = функція щільності ймовірності збитків портфеля

  • PyPortfolioOpt: виберіть мінімізацію CVaR як нову ціль

Кількісне управління ризиками в Python

Мінімізація CVaR у PyPortfolioOpt

  • Створіть об'єкт EfficientCVaR з доходностями активів returns
  • Обчисліть оптимальні ваги портфеля методом .min_cvar()

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Кількісне управління ризиками в Python

Середнє–дисперсія vs. CVaR у керуванні ризиком

  • Мінімально волатильний портфель «середнє–дисперсія», активи інвестбанків 2005–2010
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Кількісне управління ризиками в Python

Середнє–дисперсія vs. CVaR у керуванні ризиком

  • Портфель, що мінімізує CVaR, активи інвестбанків 2005–2010
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Кількісне управління ризиками в Python

Давайте потренуємось!

Кількісне управління ризиками в Python

Preparing Video For Download...