FRM — Financial Risk Manager (Часть I + Часть II): Освойте Value at Risk, управление рыночным риском и симуляцию Монте-Карло с Python
Если вы работаете в банке, хедж-фонде или финтехе и вас когда-нибудь спрашивали: «Каков наш однодневный 99% Value at Risk?», вы уже знаете, какая неловкая тишина может за этим последовать. Value at Risk (VaR) — это число, которое хочет получить каждый комитет по рискам, которое проверяет каждый регулятор и которое каждый младший аналитик в конечном итоге должен вычислить с нуля. Тем не менее большинство людей узнают о нём из слайдов, а не из кода.
Эта статья — другая. Мы пройдём через расчёт VaR на Python, используя три метода, которые доминируют в профессиональной практике: историческое моделирование, дисперсионно-ковариационный (параметрический) и VaR на основе симуляции Монте-Карло. Вы увидите реальный код, поймёте, почему три метода дают разные результаты, и узнаете, какой из них подходит для какой ситуации. Это именно та прикладная работа по управлению рыночным риском, которая проверяется на экзамене FRM и требуется в реальных должностях риск-аналитиков.
И поскольку навык без структуры — это просто набор фактов, мы также покажем, как курс FRM — Financial Risk Manager (Часть I + Часть II) на asibiont.com превращает эту единственную технику в полный, готовый к экзамену и работе инструментарий управления рисками.
Почему VaR по-прежнему важен в 2026 году
Value at Risk — это статистическая оценка максимального убытка, который портфель может понести за данный горизонт при заданном уровне доверия. «Однодневный 99% VaR в 1,2 миллиона долларов» означает: в 99 из 100 дней мы ожидаем, что убытки не превысят 1,2 миллиона долларов — а в оставшийся день все ставки снимаются.
Эта последняя оговорка — вся суть современного управления рисками. VaR говорит вам, где находится край обрыва; он не говорит, насколько глубоко падение. Именно поэтому регуляторы ввели ожидаемый дефицит (Expected Shortfall, ES) в рамках рыночного риска Базеля III — фундаментальный обзор торгового портфеля (FRTB) Базельского комитета перешёл от VaR к ES при уровне доверия 97,5%, потому что ES отражает средний убыток за порогом VaR. Вы можете ознакомиться с деталями в официальных публикациях Базельского комитета на bis.org.
Несмотря на это, VaR остаётся ежедневным рабочим языком торговых подразделений и отделов рисков. Он используется для установления лимитов, регуляторной отчётности, внутреннего распределения капитала и бэктестинга. Если вы не можете вычислить и интерпретировать VaR, вы не можете вести серьёзный разговор о рыночном риске.
Настройка данных: реалистичный портфель
Давайте построим небольшой портфель из двух активов и вычислим его однодневный VaR. Мы будем использовать numpy, pandas и scipy — всё стандартное в наборе инструментов любого риск-аналитика.
import numpy as np
import pandas as pd
from scipy.stats import norm
np.random.seed(42)
# Симулируем 1000 дней доходностей для двух активов
n_days = 1000
mean_returns = np.array([0.0004, 0.0003])
volatilities = np.array([0.012, 0.018])
correlation = 0.35
cov_matrix = np.array([
[volatilities[0]**2, correlation * volatilities[0] * volatilities[1]],
[correlation * volatilities[0] * volatilities[1], volatilities[1]**2]
])
returns = np.random.multivariate_normal(mean_returns, cov_matrix, n_days)
returns_df = pd.DataFrame(returns, columns=['Asset_A', 'Asset_B'])
# Портфель: $1,000,000 всего, распределение 60/40
weights = np.array([0.6, 0.4])
portfolio_value = 1_000_000
portfolio_returns = returns_df.dot(weights)
В реальной жизни вы бы взяли фактическую историю цен — например, ежедневные цены закрытия от поставщика рыночных данных — и преобразовали их в логарифмические доходности с помощью np.log(prices / prices.shift(1)).dropna(). Логика, которая следует далее, идентична.
Метод 1: VaR на основе исторического моделирования
Историческое моделирование не делает предположений о распределении доходностей. Оно просто переупорядочивает историю и считывает процентиль.
def historical_var(returns, confidence=0.99, portfolio_value=1_000_000):
var_pct = np.percentile(returns, (1 - confidence) * 100)
return -var_pct * portfolio_value
hs_var = historical_var(portfolio_returns)
print(f"Historical Simulation VaR (99%, 1-day): ${hs_var:,.0f}")
Сильные стороны: он автоматически улавливает тяжёлые хвосты и ненормальное поведение, потому что эмпирическое распределение — это то, что фактически дала история. Он интуитивно понятен и легко объясняется комитету по рискам.
Слабые стороны: он полностью обращён в прошлое. Если историческое окно (обычно от 250 до 500 дней) не содержит кризиса, ваш VaR будет опасно низким. Он также придаёт одинаковый вес доходности двухлетней давности и вчерашней, что редко бывает разумным.
Метод 2: Дисперсионно-ковариационный (параметрический) VaR
Это классический подход. Предполагается, что доходности нормально распределены, оценивается среднее и стандартное отклонение, и применяется z-оценка.
def parametric_var(returns, confidence=0.99, portfolio_value=1_000_000):
mu = np.mean(returns)
sigma = np.std(returns, ddof=1)
z = norm.ppf(1 - confidence) # отрицательное для левого хвоста
var_pct = mu + z * sigma
return -var_pct * portfolio_value
pv_var = parametric_var(portfolio_returns)
print(f"Parametric VaR (99%, 1-day): ${pv_var:,.0f}")
Сильные стороны: быстрый, аналитически чистый и прекрасно масштабируется на большие портфели — вам нужна только ковариационная матрица, а не полная история. Именно поэтому он был основой систем в стиле RiskMetrics на протяжении десятилетий.
Слабые стороны: он предполагает нормальность, которую финансовые доходности нарушают очень специфическим и опасным образом — у них тяжёлые хвосты и отрицательная асимметрия. Нормальное распределение будет систематически недооценивать вероятность экстремальных убытков. Оно также предполагает линейные выплаты, что нарушается для опционов и других нелинейных инструментов.
Метод 3: VaR на основе симуляции Монте-Карло
VaR на основе симуляции Монте-Карло генерирует тысячи гипотетических будущих сценариев из предполагаемой модели, а затем считывает процентиль распределения смоделированных P&L.
def monte_carlo_var(mean_returns, cov_matrix, weights, n_sims=100_000,
confidence=0.99, portfolio_value=1_000_000):
sim_returns = np.random.multivariate_normal(mean_returns, cov_matrix, n_sims)
sim_portfolio_returns = sim_returns.dot(weights)
var_pct = np.percentile(sim_portfolio_returns, (1 - confidence) * 100)
return -var_pct * portfolio_value
mc_var = monte_carlo_var(mean_returns, cov_matrix, weights)
print(f"Monte Carlo VaR (99%, 1-day): ${mc_var:,.0f}")
Сильные стороны: максимальная гибкость. Вы можете подключить распределения с тяжёлыми хвостами (Стьюдента), модели скачкообразной диффузии, стохастическую волатильность или полное ценообразование опционов — всё, что можно смоделировать. Это единственный реалистичный вариант для портфелей со сложными нелинейными инструментами.
Слабые стороны: он хорош настолько, насколько хороша модель, которую вы в него закладываете («мусор на входе — мусор на выходе»), он вычислительно дорог и вносит ошибку симуляции — другое случайное зерно даёт немного другой ответ. Воспроизводимость требует дисциплинированного управления зерном.
Сравнение трёх методов
Когда вы запускаете все три на одном портфеле, вы обычно видите что-то вроде этого:
| Метод | Типичный 99% однодневный VaR | Ключевое предположение | Лучше всего использовать для |
|---|---|---|---|
| Историческое моделирование | Базовый | История повторяется | Прозрачная отчётность, ненормальные данные |
| Дисперсионно-ковариационный | Самый низкий из трёх | Нормальные доходности, линейные выплаты | Большие линейные портфели, скорость |
| Монте-Карло | Самый высокий / наиболее изменчивый | Выбранная вами модель верна | Опционы, экзотика, стресс-сценарии |
Параметрический метод обычно даёт самый низкий VaR, потому что игнорирует тяжёлые хвосты. Историческое моделирование находится посередине. Монте-Карло полностью зависит от модели — с распределением Стьюдента он даст заметно более высокие оценки хвоста, чем нормальное предположение.
Практическое правило: сообщайте больше одного числа. Серьёзные команды по рискам вычисляют VaR как минимум двумя методами и исследуют расхождения. Если ваш параметрический VaR намного ниже исторического VaR, у вашего портфеля тяжёлые хвосты, и вы не должны доверять только параметрической цифре.
Бэктестинг: шаг, который большинство пропускает
Число VaR без бэктестинга — это догадка. Бэктестинг означает сравнение вчерашнего прогноза VaR с сегодняшним фактическим P&L и подсчёт исключений — дней, когда убыток превысил VaR.
При 99% доверии вы ожидаете примерно 1 исключение на 100 дней. Подход «светофора» Базеля классифицирует банки на основе количества исключений за 250 дней: зелёная зона (0–4 исключения), жёлтая зона (5–9), красная зона (10+). Результат в красной зоне может вызвать увеличение множителя капитала. Точные пороги изложены в рамках рыночного риска Базельского комитета.
# Простой скользящий бэктест
exceptions = 0
window = 250
for i in range(window, len(portfolio_returns)):
hist = portfolio_returns.iloc[i-window:i]
var_forecast = -np.percentile(hist, 1) * portfolio_value
actual_loss = -portfolio_returns.iloc[i] * portfolio_value
if actual_loss > var_forecast:
exceptions += 1
print(f"Exceptions: {exceptions} out of {len(portfolio_returns) - window} days")
Этот цикл — сердце реального управления рыночным риском. Это также, неудивительно, излюбленная тема экзамена.
От VaR к полной картине риска: что охватывает FRM
VaR — это входная точка, а не пункт назначения. Курс FRM — Financial Risk Manager (Часть I + Часть II) на asibiont.com проводит вас через всю учебную программу GARP, и VaR находится внутри гораздо более крупной архитектуры:
- Основы управления рисками — управление, структура управления рисками и провалы, сформировавшие современную практику.
- Количественные методы — вероятность, статистика, регрессия и симуляция Монте-Карло, математическая основа всего вышеперечисленного.
- Рыночный риск — VaR, ожидаемый дефицит, греки, моделирование волатильности (GARCH) и корреляционный риск.
- Кредитный риск — вероятность дефолта, кредитные рейтинги, кредитные дефолтные свопы и риск контрагента.
- Операционный риск — продвинутый подход к измерению, распределение убытков и анализ сценариев.
- Управление рисками в инвестициях — теория портфеля, хедж-фонды и аналитика фиксированного дохода.
- Стресс-тестирование и обратное стресс-тестирование — вопрос не «что вероятно?», а «что нас сломает?».
- Регулирование — Базель III и Базель IV, CRR и CRD.
Курс включает пробные экзамены и более 2000 практических вопросов, что важно, потому что FRM — это действительно сложный двухчастный экзамен. Часть I сосредоточена на инструментах; Часть II — на их применении к различным типам рисков.
Для кого этот курс
Управление рисками привлекает людей из нескольких направлений, и учебная программа FRM служит им всем:
- Количественные аналитики и специалисты по данным, переходящие от построения моделей к ролям в области рисков, которым нужен регуляторный и управленческий контекст, пропущенный в их техническом обучении.
- Специалисты по банковскому делу и аудиту — внутренний аудит, комплаенс, казначейство — которым нужно понимать, что на самом деле делает отдел рисков.
- Управляющие портфелями и трейдеры, которые хотят количественно оценить принимаемый риск, а не описывать его качественно.
- Студенты и люди, меняющие карьеру, с количественным складом ума, которые хотят структурированный путь в область, вознаграждающую строгость.
Общая нить — не конкретная должность, а готовность работать с числами и желание понять, почему финансовые институты терпят крах и как это предотвратить.
Как работает обучение на asibiont.com
Платформа использует принципиально иной подход к профессиональному образованию. Вместо фиксированных видеомодулей, которые воспроизводятся одинаково для всех, asibiont.com использует ИИ для создания персонализированных уроков для каждого студента. Нейронная сеть адаптирует программу к вашему текущему уровню и целям: если вы уже знаете теорию вероятностей, она не будет тратить ваше время на базовые распределения; если вы никогда не видели ковариационную матрицу, она построит всё с нуля.
Все материалы текстовые, и это осознанный выбор дизайна. Текст можно искать, быстро просматривать и легко возвращаться к нему — именно то, что нужно, когда вы отлаживаете расчёт VaR в 11 вечера перед дедлайном. Доступ открыт круглосуточно, так что вы учитесь, когда это удобно вам, а не когда случайно идёт запланированное занятие.
Сложные темы сначала объясняются простым языком, а затем формализуются. Когда вы застреваете, ИИ отвечает на ваши вопросы и генерирует практические задания, которые заставляют вас применить только что прочитанное — это единственный способ действительно выучить управление рисками. Читать о симуляции Монте-Карло — не то же самое, что написать симуляцию и наблюдать, как ваша оценка VaR сходится при увеличении числа путей.
Почему обучение на основе ИИ особенно подходит для управления рисками
Управление рисками необычайно хорошо подходит для адаптивного обучения по трём причинам:
Во-первых, эта область глубоко иерархична. Вы не можете понять ожидаемый дефицит, не понимая VaR, и не можете понять VaR, не понимая распределения. Система, которая обнаруживает пробелы и заполняет их, гораздо эффективнее той, что движется по фиксированному расписанию.
Во-вторых, материал количественный и неумолимый. Непонимание разницы между ddof=0 и ddof=1 в np.std распространяется на каждое последующее число. Персонализированные объяснения выявляют эти пробелы на раннем этапе.
В-третьих, область меняется. Базель III превратился в Базель IV, FRTB заменил VaR на ES для капитала под рыночный риск, а новые продукты создают новые риски. Учебная программа, генерируемая ИИ, может учитывать эти изменения гораздо быстрее, чем библиотека записанных видео.
Практический план обучения
Если вы начинаете сегодня, вот последовательность, которая работает:
- Заложите основу. Освойтесь с доходностями, волатильностью, корреляцией и нормальным распределением. Пишите код, а не просто читайте.
- Реализуйте все три метода VaR на одном портфеле. Сравните числа и объясните различия письменно.
- Проведите бэктестинг вашего VaR. Подсчитайте исключения. Поймите, что означает результат в красной зоне.
- Перейдите к ожидаемому дефициту. Вычислите ES вместе с VaR и посмотрите, как ES реагирует на хвостовые события, которые VaR игнорирует.
- Расширьте до кредитного и операционного риска. Применяется то же вероятностное мышление, но данные и модели различаются.
- Добавьте регулирование. Поймите, как Базель III/IV переводит ваши числа в требования к капиталу.
Курс FRM — Financial Risk Manager (Часть I + Часть II) структурирует именно эту последовательность, с пробными экзаменами и более чем 2000 практических вопросов, чтобы проверить, действительно ли знания усвоены.
Итог
Value at Risk — один из тех навыков, которые тихо отделяют людей, говорящих о риске, от людей, управляющих им. Три метода — историческое моделирование, дисперсионно-ковариационный и симуляция Монте-Карло — не являются конкурирующими ответами на один и тот же вопрос. Это разные линзы, каждая со своими предположениями, сильными сторонами и режимами отказа. Знать, какую линзу использовать и почему, — вот как на самом деле выглядит профессиональное управление рыночным риском.
Вы можете выучить код за один день. Вы можете выучить суждение — когда не доверять числу, как его бэктестировать, как объяснить его регулятору — только через структурированное обучение и практику. Именно для этого создан курс FRM — Financial Risk Manager (Часть I + Часть II) на asibiont.com: персонализированные уроки, генерируемые ИИ, которые адаптируются к вашему уровню и доступны, когда вы готовы работать. Начните сегодня, и в следующий раз, когда кто-то спросит о 99% однодневном VaR, у вас будет ответ — и обоснование за ним.
Комментарии