Разработка системы стресс-тестирования криптопортфеля под ключ

Рынок криптоактивов разворачивается быстрее, чем пересчитываются ручные модели риска. Мы разрабатываем системы стресс-тестирования портфеля под ключ: строим сценарный контур, который показывает просадку по портфелю до того, как она случится. Прогон сценариев сокращает время оценки риска в разы, а класс отказов «узнали о риске после факта» уходит.
Часто задаваемые вопросы

Почему стресс-тестирование портфеля ломается на данных

Стресс-тестирование портфеля начинается не со сценария, а с качества данных о позициях. Выгрузка с площадок приходит разными путями: часть — через программный интерфейс, часть — руками из кабинета, часть — из таблицы, которую кто-то ведёт параллельно. Позиции по деривативам, займам и заблокированным средствам при этом оседают не в том контуре, где считается риск, и в модель попадает усечённая картина. Достаточно одной неучтённой ноги — и итоговая экспозиция занижена, хотя все расчёты формально сошлись.

Вторая точка отказа — допущение о независимости активов. Корреляционную матрицу считают на спокойном окне истории, где инструменты действительно ведут себя по-разному; в момент шока скрытая корреляция проявляется, связи сходятся к единице, и диверсификация перестаёт работать. Актив, который в отчёте выглядел защитным, падает вместе с остальными, а расчёт при этом показывает комфортный запас прочности.

Третье — неликвидность, которой в модели просто нет. В спокойном рынке проскальзывание незаметно, а в момент каскадных ликвидаций стакан пустеет, и цена исполнения отличается от той, что стоит в оценке, в разы. Лимит потерь, рассчитанный по котировке, оказывается неисполнимым: закрыть позицию нужного размера по этой цене нельзя.

В сумме ручные выгрузки и расхождения дают систематическую недооценку риска: расчётная просадка ниже фактической, лимиты срабатывают с опозданием, а решение о хедже принимается по цифрам, которые уже не описывают реальность. Ниже разбираем, как закрываем каждый из этих разрывов.

Измеримые эффекты: время, точность, устранённый класс отказов

Время подготовки оценки риска: минуты вместо дней

Прогон сценариев идёт по историческим рядам и по сгенерированным шокам, поэтому оценка риска готовится за минуты после того, как портфель изменился. Раньше на ту же работу уходили дни ручной сверки: позиции выгружались с площадок по отдельности, цены сводились вручную, и любое обновление портфеля обесценивало расчёт. CoinGecko используется как источник нормализованных рядов, а корреляции между активами считаются совместно — иначе диверсификация выглядит защитой, которой нет.

Точность оценки просадки: покрытие всех позиций

Просадка считается по полному набору инструментов, включая низколиквидные позиции, стейкинг и заблокированные средства, а не только по основным монетам. Для тонких рынков модель учитывает проскальзывание и глубину стакана: при шоке выход из позиции стоит дороже, чем показывает последняя сделка. Это убирает привычную ошибку, когда расчётная просадка в разы расходится с фактической при исполнении.

Единые лимиты на все площадки и снятый класс отказов

Правила лимитов описываются один раз и применяются ко всем площадкам и счетам, поэтому расхождение между ними видно на этапе расчёта, а не после. Снят целый класс отказов, связанный с запоздалой реакцией на движение рынка: сценарии исполняются по расписанию и при выходе волатильности за порог, а сигнал уходит в мониторинг до того, как ограничения нарушены.

Режимы прогона сценариев: сравнение подходов

Режимы прогона не заменяют друг друга — они отвечают на разные вопросы: воспроизводимость отчёта, поиск границы устойчивости, проверка цепочки событий. Выбор режима определяет, что вы получите на выходе: оценку просадки или ответ, при каком движении рынка портфель перестаёт держать лимиты.

Методику сверяем с рекомендациями IOSCO по стресс-тестированию фондов — состав сценариев, периодичность, документирование допущений. На практике режимы комбинируют: исторические шоки дают базу для сравнения, обратный расчёт — границы, случайные траектории — распределение исходов.

Режим Когда подходит Ограничения
Прогон на исторических шоках Нужна воспроизводимость и общая база для сравнения отчётов Прошлые обвалы не описывают новые классы риска
Заданный рыночный шок Проверка под конкретную гипотезу: просадка базового актива, скачок волатильности Итог зависит от выбора глубины и момента шока
Обратный расчёт от лимита Нужно узнать, при каком движении рынка лимит риска нарушается Даёт границу, но не вероятность события
Случайные траектории рынка Оценка распределения исходов и хвостовых потерь Требует калибровки модели и большого числа прогонов
Каскад сценариев Проверка цепочки: цена → волатильность → ликвидность → маржа Дольше считать и сложнее настраивать

Раздельные прогоны не видят, как один сбой тянет за собой следующий, поэтому каскад собирают поверх остальных режимов. Он показывает, где проскальзывание при исполнении превращается в маржин-колл по заёмным позициям — и что именно в такой цепочке рвётся первым.

Как мы строим стресс-тестирование портфеля: этапы работ

Стресс-тестирование начинается не с кода, а с инвентаризации данных и правил расчёта. Если котировки и состав портфеля расходятся между системами, прогон выдаёт красивые, но бесполезные числа. Поэтому сначала источники и логика, расчёты — после.

  1. Аудит источников данных. Сводим котировки, сделки, остатки и справочники инструментов, проверяем частоту обновления, пропуски и расхождения между площадками. На выходе — карта источников с эталоном по каждому показателю.

  2. Схема расчёта и лимитов. Фиксируем состав портфеля на момент среза, правила пересчёта позиций и валюту отчёта. Отдельно прописываем лимиты по инструменту, классу активов и концентрации — и что считается их нарушением.

  3. Настройка прогонов. Реализуем расчётный модуль, задаём параметры запуска и логируем каждый шаг: от среза портфеля до итогового убытка по позициям.

  4. Проверка на известных шоках. Прогоняем сценарии, которые рынок уже пережил, и сверяем результат с фактом. Расхождение выше порога означает ошибку в данных или формуле, а не особенность модели. Заодно проходим граничные случаи — пустой портфель, одна позиция, отсутствие цены по части бумаг.

  5. Согласование набора сценариев. Выносим риск-комитету перечень шоков — обвал ликвидности, разрыв корреляций, резкий рост ставки — с амплитудой каждого. Комитет утверждает обязательный набор и периодичность пересмотра.

  6. Передача регламента команде. Отдаём документ: обязательные сценарии, критические пороги, порядок запуска и чтения отчёта, правило обновления сценариев при изменении рынка.

Этап сдан, когда ваши аналитики прогоняют стресс-тест сами: регламент, который не воспроизводится без автора, мы переданным не считаем.

Артефакты проекта: конфигурации, схемы, регламенты

Итог проекта — не только работающий стенд, но и комплект, с которым команда заказчика работает дальше сама: добавляет сценарии, разбирает отчёты, меняет пороги без обращения к нам. Ниже — что передаётся по завершении работ.

  • Конфигурации прогонов. Сценарии стресс-тестирования портфеля — обвал ликвидности, расхождение привязки стейблкоина, каскад принудительных закрытий — описаны декларативно: горизонт, шаг, состав активов. Новый сценарий добавляется правкой файла, без доработки кода.
  • Схемы потоков данных. Путь от источников котировок и данных блокчейна до расчётного ядра и отчёта, с точками отказа и описанным поведением при пропадании источника.
  • Политики доступа и роли. Аналитик, риск-менеджер и администратор разделены по правам: правка конфигураций, запуск прогонов, просмотр состава портфелей. Действия журналируются — видно, кто и когда менял параметры.
  • Регламент реагирования на лимиты. Пороги, при которых прогон останавливается, порядок эскалации, шаблоны уведомлений и формат фиксации инцидента.
  • Руководство для аналитиков. Как собрать сценарий, прочитать отчёт, какие метрики считать пороговыми и где чаще всего ошибаются с интерпретацией.
  • Каталог метрик и эталонные прогоны — база сравнения для каждого нового результата.
  • Инструкция по развёртыванию и восстановлению — как поднять стенд с нуля и откатиться на предыдущий набор конфигураций.

На приёмке запускаем прогон по переданной документации силами вашей команды: результат должен воспроизводиться без нашего участия.

Кейс: метрики до и после внедрения контура риска

Портфель заказчика — спотовые остатки на нескольких биржах, производные с плечом, залоговое кредитование и стейкинг. Стресс-тестирование портфеля велось вручную, и риск-сводка появлялась с задержкой — уже после того, как рынок ушёл против позиции.

Исходная схема и её слабые места

Аналитик выгружал остатки, сводил их в таблицу и вручную сверял с лимитами по инструментам и контрагентам. В покрытие попадали только спотовые позиции: производные, залог и начисленный доход оставались за рамками, поэтому реальная позиция по активу была выше расчётной. Лимиты проверялись на следующий день — превышение фиксировалось, когда сделка уже прошла.

Что изменили и что получилось

Собрали единый контур риска: один источник позиций по всем счетам и сетям, пересчёт по расписанию и по триггеру при резком движении, матрица сценариев — обвал рынка на 30–40% за сессию, разрыв ликвидности, потеря привязки стейблкоина, каскад принудительных закрытий. Сценарии считаем через ожидаемый дефицит портфеля, по логике Базельского комитета по банковскому надзору, а не через одно отклонение цены. Ранние предупреждения поставили на подходе к 80% лимита — срабатывают до нарушения, а не после.

Показатель До После
Срок подготовки сводки по рискам два рабочих дня ручной сборки 15–20 минут автоматического расчёта
Доля покрытых позиций 45–60% 98%
Пропущенные предупреждения о превышении лимитов 7 за квартал ни одного
Ранние предупреждения, пришедшие до нарушения 3 из 10 9 из 10

Чем отличается сценарный анализ от обратного тестирования?

Методы отвечают на разные вопросы: сценарный анализ идёт от причины, обратное тестирование от лимита — от следствия. Один показывает, что будет с портфелем при заданном шоке, второй — какие условия пробьют допустимый убыток.

В сценарном анализе на входе — явные шоки: падение крупного актива на заданную долю, потеря привязки стейблкоином, скачок волатильности, рост ставки финансирования. На выходе — переоценка портфеля, просадка по каждой ноге, момент требования довнести обеспечение и его остаток.

Обратное тестирование разворачивает логику: на входе допустимый убыток и горизонт удержания, на выходе — комбинации условий, которые лимит пробивают, с частотой и глубиной превышения. Прогон по историческим окнам и сгенерированным траекториям показывает, как часто граница нарушалась бы снова, а не только «было один раз».

Выбор метода под задачу прост: сценарный — проверить конкретный риск и обосновать его; обратный — откалибровать лимит, размер позиции и порог автоматического сокращения. В системе стресс-тестирования оба режима работают вместе: обратный прогон находит границу, сценарный объясняет, что за ней происходит.

Технические сомнения: данные, ликвидность, внебиржевые позиции

Перед приёмкой заказчик проверяет места, где стресс-тест портфеля обычно ломается: неполные данные о позициях, внебиржевые и залоговые инструменты, устаревшие сценарии и поддержка после сдачи.

Данные о позициях неполные — что делать?

Сверяем остатки с выписками и локализуем расхождения до конкретной сделки. Пропуски восстанавливаем по истории операций, а невосстановимые помечаем как оценку и показываем диапазоном.

Как учитываются внебиржевые позиции?

Ведём отдельный реестр подтверждений и договоров: объём, цена входа, условия выхода. Такие позиции считаем со скидкой на ликвидность и удлинённым сроком закрытия, а не как биржевой актив.

Что с залоговыми инструментами?

Залог — это связка «обеспечение и обязательство»: при падении цены растёт требование по марже. Сценарий проходим каскадом — от просадки обеспечения до порога и принудительного закрытия.

Как часто пересматривать сценарии?

Пересмотр привязан к событиям, а не к календарю: новая структура портфеля, новый инструмент, смена режима рынка. Параметры калибруем по свежим данным, чтобы сценарии не устаревали вместе с рынком.

Сможем ли вести систему сами?

Да. Сценарии хранятся отдельно от кода, к ним идёт описание и регламент пересмотра. Ваш аналитик добавляет и правит сценарии без релиза, а мы остаёмся на связи для доработок.

Обсудим задачу: с чего начать контур оценки риска

Чтобы оценка контура стресс-тестирования портфеля опиралась на вашу реальность, а не на средние допущения, нужны вводные. Чем точнее исходные, тем меньше неизвестных в плане работ и реалистичнее сроки.

  • Состав портфеля: классы активов, площадки, доли и лимиты по каждому направлению.
  • Источники данных: архивы сделок, котировки, интерфейсы бирж — что доступно, с какой глубиной истории и частотой.
  • Значимые сценарии: обвал ликвидности, каскад ликвидаций, расхождение цен между площадками, отказ контрагента.
  • Правила управления риском: лимиты, пороги маржи, условия остановки торгов, кто принимает решение о снижении позиции.
  • Контур исполнения: где считаются метрики, какие системы уже есть и к чему нужно подключиться.
  • Требования к отчётности: кто смотрит результаты, в каком виде, нужна ли выгрузка во внутренние системы.
  • Ограничения: регуляторные, по доступам и по окну нагрузочных прогонов на продуктивной среде.

По итогам разбора возвращаемся с оценкой трудоёмкости по этапам, планом работ с порядком, точками контроля и составом передаваемых артефактов — от спецификации сценариев и модели портфеля до конфигураций и регламента повторных прогонов.

Работаем итерациями: после каждого этапа — демонстрация промежуточного результата и уточнение плана. Опишите задачу в свободной форме — составом портфеля и самым болезненным сценарием; этого достаточно, чтобы вернуться с оценкой и планом.

Направления блокчейн-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141