Почему стресс-тестирование портфеля ломается на данных
Стресс-тестирование портфеля начинается не со сценария, а с качества данных о позициях. Выгрузка с площадок приходит разными путями: часть — через программный интерфейс, часть — руками из кабинета, часть — из таблицы, которую кто-то ведёт параллельно. Позиции по деривативам, займам и заблокированным средствам при этом оседают не в том контуре, где считается риск, и в модель попадает усечённая картина. Достаточно одной неучтённой ноги — и итоговая экспозиция занижена, хотя все расчёты формально сошлись.
Вторая точка отказа — допущение о независимости активов. Корреляционную матрицу считают на спокойном окне истории, где инструменты действительно ведут себя по-разному; в момент шока скрытая корреляция проявляется, связи сходятся к единице, и диверсификация перестаёт работать. Актив, который в отчёте выглядел защитным, падает вместе с остальными, а расчёт при этом показывает комфортный запас прочности.
Третье — неликвидность, которой в модели просто нет. В спокойном рынке проскальзывание незаметно, а в момент каскадных ликвидаций стакан пустеет, и цена исполнения отличается от той, что стоит в оценке, в разы. Лимит потерь, рассчитанный по котировке, оказывается неисполнимым: закрыть позицию нужного размера по этой цене нельзя.
В сумме ручные выгрузки и расхождения дают систематическую недооценку риска: расчётная просадка ниже фактической, лимиты срабатывают с опозданием, а решение о хедже принимается по цифрам, которые уже не описывают реальность. Ниже разбираем, как закрываем каждый из этих разрывов.
Измеримые эффекты: время, точность, устранённый класс отказов
Время подготовки оценки риска: минуты вместо дней
Прогон сценариев идёт по историческим рядам и по сгенерированным шокам, поэтому оценка риска готовится за минуты после того, как портфель изменился. Раньше на ту же работу уходили дни ручной сверки: позиции выгружались с площадок по отдельности, цены сводились вручную, и любое обновление портфеля обесценивало расчёт. CoinGecko используется как источник нормализованных рядов, а корреляции между активами считаются совместно — иначе диверсификация выглядит защитой, которой нет.
Точность оценки просадки: покрытие всех позиций
Просадка считается по полному набору инструментов, включая низколиквидные позиции, стейкинг и заблокированные средства, а не только по основным монетам. Для тонких рынков модель учитывает проскальзывание и глубину стакана: при шоке выход из позиции стоит дороже, чем показывает последняя сделка. Это убирает привычную ошибку, когда расчётная просадка в разы расходится с фактической при исполнении.
Единые лимиты на все площадки и снятый класс отказов
Правила лимитов описываются один раз и применяются ко всем площадкам и счетам, поэтому расхождение между ними видно на этапе расчёта, а не после. Снят целый класс отказов, связанный с запоздалой реакцией на движение рынка: сценарии исполняются по расписанию и при выходе волатильности за порог, а сигнал уходит в мониторинг до того, как ограничения нарушены.
Режимы прогона сценариев: сравнение подходов
Режимы прогона не заменяют друг друга — они отвечают на разные вопросы: воспроизводимость отчёта, поиск границы устойчивости, проверка цепочки событий. Выбор режима определяет, что вы получите на выходе: оценку просадки или ответ, при каком движении рынка портфель перестаёт держать лимиты.
Методику сверяем с рекомендациями IOSCO по стресс-тестированию фондов — состав сценариев, периодичность, документирование допущений. На практике режимы комбинируют: исторические шоки дают базу для сравнения, обратный расчёт — границы, случайные траектории — распределение исходов.
| Режим | Когда подходит | Ограничения |
|---|---|---|
| Прогон на исторических шоках | Нужна воспроизводимость и общая база для сравнения отчётов | Прошлые обвалы не описывают новые классы риска |
| Заданный рыночный шок | Проверка под конкретную гипотезу: просадка базового актива, скачок волатильности | Итог зависит от выбора глубины и момента шока |
| Обратный расчёт от лимита | Нужно узнать, при каком движении рынка лимит риска нарушается | Даёт границу, но не вероятность события |
| Случайные траектории рынка | Оценка распределения исходов и хвостовых потерь | Требует калибровки модели и большого числа прогонов |
| Каскад сценариев | Проверка цепочки: цена → волатильность → ликвидность → маржа | Дольше считать и сложнее настраивать |
Раздельные прогоны не видят, как один сбой тянет за собой следующий, поэтому каскад собирают поверх остальных режимов. Он показывает, где проскальзывание при исполнении превращается в маржин-колл по заёмным позициям — и что именно в такой цепочке рвётся первым.
Как мы строим стресс-тестирование портфеля: этапы работ
Стресс-тестирование начинается не с кода, а с инвентаризации данных и правил расчёта. Если котировки и состав портфеля расходятся между системами, прогон выдаёт красивые, но бесполезные числа. Поэтому сначала источники и логика, расчёты — после.
-
Аудит источников данных. Сводим котировки, сделки, остатки и справочники инструментов, проверяем частоту обновления, пропуски и расхождения между площадками. На выходе — карта источников с эталоном по каждому показателю.
-
Схема расчёта и лимитов. Фиксируем состав портфеля на момент среза, правила пересчёта позиций и валюту отчёта. Отдельно прописываем лимиты по инструменту, классу активов и концентрации — и что считается их нарушением.
-
Настройка прогонов. Реализуем расчётный модуль, задаём параметры запуска и логируем каждый шаг: от среза портфеля до итогового убытка по позициям.
-
Проверка на известных шоках. Прогоняем сценарии, которые рынок уже пережил, и сверяем результат с фактом. Расхождение выше порога означает ошибку в данных или формуле, а не особенность модели. Заодно проходим граничные случаи — пустой портфель, одна позиция, отсутствие цены по части бумаг.
-
Согласование набора сценариев. Выносим риск-комитету перечень шоков — обвал ликвидности, разрыв корреляций, резкий рост ставки — с амплитудой каждого. Комитет утверждает обязательный набор и периодичность пересмотра.
-
Передача регламента команде. Отдаём документ: обязательные сценарии, критические пороги, порядок запуска и чтения отчёта, правило обновления сценариев при изменении рынка.
Этап сдан, когда ваши аналитики прогоняют стресс-тест сами: регламент, который не воспроизводится без автора, мы переданным не считаем.
Артефакты проекта: конфигурации, схемы, регламенты
Итог проекта — не только работающий стенд, но и комплект, с которым команда заказчика работает дальше сама: добавляет сценарии, разбирает отчёты, меняет пороги без обращения к нам. Ниже — что передаётся по завершении работ.
- Конфигурации прогонов. Сценарии стресс-тестирования портфеля — обвал ликвидности, расхождение привязки стейблкоина, каскад принудительных закрытий — описаны декларативно: горизонт, шаг, состав активов. Новый сценарий добавляется правкой файла, без доработки кода.
- Схемы потоков данных. Путь от источников котировок и данных блокчейна до расчётного ядра и отчёта, с точками отказа и описанным поведением при пропадании источника.
- Политики доступа и роли. Аналитик, риск-менеджер и администратор разделены по правам: правка конфигураций, запуск прогонов, просмотр состава портфелей. Действия журналируются — видно, кто и когда менял параметры.
- Регламент реагирования на лимиты. Пороги, при которых прогон останавливается, порядок эскалации, шаблоны уведомлений и формат фиксации инцидента.
- Руководство для аналитиков. Как собрать сценарий, прочитать отчёт, какие метрики считать пороговыми и где чаще всего ошибаются с интерпретацией.
- Каталог метрик и эталонные прогоны — база сравнения для каждого нового результата.
- Инструкция по развёртыванию и восстановлению — как поднять стенд с нуля и откатиться на предыдущий набор конфигураций.
На приёмке запускаем прогон по переданной документации силами вашей команды: результат должен воспроизводиться без нашего участия.
Кейс: метрики до и после внедрения контура риска
Портфель заказчика — спотовые остатки на нескольких биржах, производные с плечом, залоговое кредитование и стейкинг. Стресс-тестирование портфеля велось вручную, и риск-сводка появлялась с задержкой — уже после того, как рынок ушёл против позиции.
Исходная схема и её слабые места
Аналитик выгружал остатки, сводил их в таблицу и вручную сверял с лимитами по инструментам и контрагентам. В покрытие попадали только спотовые позиции: производные, залог и начисленный доход оставались за рамками, поэтому реальная позиция по активу была выше расчётной. Лимиты проверялись на следующий день — превышение фиксировалось, когда сделка уже прошла.
Что изменили и что получилось
Собрали единый контур риска: один источник позиций по всем счетам и сетям, пересчёт по расписанию и по триггеру при резком движении, матрица сценариев — обвал рынка на 30–40% за сессию, разрыв ликвидности, потеря привязки стейблкоина, каскад принудительных закрытий. Сценарии считаем через ожидаемый дефицит портфеля, по логике Базельского комитета по банковскому надзору, а не через одно отклонение цены. Ранние предупреждения поставили на подходе к 80% лимита — срабатывают до нарушения, а не после.
| Показатель | До | После |
|---|---|---|
| Срок подготовки сводки по рискам | два рабочих дня ручной сборки | 15–20 минут автоматического расчёта |
| Доля покрытых позиций | 45–60% | 98% |
| Пропущенные предупреждения о превышении лимитов | 7 за квартал | ни одного |
| Ранние предупреждения, пришедшие до нарушения | 3 из 10 | 9 из 10 |
Чем отличается сценарный анализ от обратного тестирования?
Методы отвечают на разные вопросы: сценарный анализ идёт от причины, обратное тестирование от лимита — от следствия. Один показывает, что будет с портфелем при заданном шоке, второй — какие условия пробьют допустимый убыток.
В сценарном анализе на входе — явные шоки: падение крупного актива на заданную долю, потеря привязки стейблкоином, скачок волатильности, рост ставки финансирования. На выходе — переоценка портфеля, просадка по каждой ноге, момент требования довнести обеспечение и его остаток.
Обратное тестирование разворачивает логику: на входе допустимый убыток и горизонт удержания, на выходе — комбинации условий, которые лимит пробивают, с частотой и глубиной превышения. Прогон по историческим окнам и сгенерированным траекториям показывает, как часто граница нарушалась бы снова, а не только «было один раз».
Выбор метода под задачу прост: сценарный — проверить конкретный риск и обосновать его; обратный — откалибровать лимит, размер позиции и порог автоматического сокращения. В системе стресс-тестирования оба режима работают вместе: обратный прогон находит границу, сценарный объясняет, что за ней происходит.
Технические сомнения: данные, ликвидность, внебиржевые позиции
Перед приёмкой заказчик проверяет места, где стресс-тест портфеля обычно ломается: неполные данные о позициях, внебиржевые и залоговые инструменты, устаревшие сценарии и поддержка после сдачи.
Данные о позициях неполные — что делать?
Сверяем остатки с выписками и локализуем расхождения до конкретной сделки. Пропуски восстанавливаем по истории операций, а невосстановимые помечаем как оценку и показываем диапазоном.
Как учитываются внебиржевые позиции?
Ведём отдельный реестр подтверждений и договоров: объём, цена входа, условия выхода. Такие позиции считаем со скидкой на ликвидность и удлинённым сроком закрытия, а не как биржевой актив.
Что с залоговыми инструментами?
Залог — это связка «обеспечение и обязательство»: при падении цены растёт требование по марже. Сценарий проходим каскадом — от просадки обеспечения до порога и принудительного закрытия.
Как часто пересматривать сценарии?
Пересмотр привязан к событиям, а не к календарю: новая структура портфеля, новый инструмент, смена режима рынка. Параметры калибруем по свежим данным, чтобы сценарии не устаревали вместе с рынком.
Сможем ли вести систему сами?
Да. Сценарии хранятся отдельно от кода, к ним идёт описание и регламент пересмотра. Ваш аналитик добавляет и правит сценарии без релиза, а мы остаёмся на связи для доработок.
Обсудим задачу: с чего начать контур оценки риска
Чтобы оценка контура стресс-тестирования портфеля опиралась на вашу реальность, а не на средние допущения, нужны вводные. Чем точнее исходные, тем меньше неизвестных в плане работ и реалистичнее сроки.
- Состав портфеля: классы активов, площадки, доли и лимиты по каждому направлению.
- Источники данных: архивы сделок, котировки, интерфейсы бирж — что доступно, с какой глубиной истории и частотой.
- Значимые сценарии: обвал ликвидности, каскад ликвидаций, расхождение цен между площадками, отказ контрагента.
- Правила управления риском: лимиты, пороги маржи, условия остановки торгов, кто принимает решение о снижении позиции.
- Контур исполнения: где считаются метрики, какие системы уже есть и к чему нужно подключиться.
- Требования к отчётности: кто смотрит результаты, в каком виде, нужна ли выгрузка во внутренние системы.
- Ограничения: регуляторные, по доступам и по окну нагрузочных прогонов на продуктивной среде.
По итогам разбора возвращаемся с оценкой трудоёмкости по этапам, планом работ с порядком, точками контроля и составом передаваемых артефактов — от спецификации сценариев и модели портфеля до конфигураций и регламента повторных прогонов.
Работаем итерациями: после каждого этапа — демонстрация промежуточного результата и уточнение плана. Опишите задачу в свободной форме — составом портфеля и самым болезненным сценарием; этого достаточно, чтобы вернуться с оценкой и планом.







