Почему система расчета позиции ломается на резких движениях
Типовая система расчета позиции калибруется по спокойному участку: стоп ставят кратно среднему размаху цены за последние недели, а размер позиции выводят из допустимого риска на сделку — скажем, доли процента от капитала. На ровном рынке конструкция сходится идеально: серия убытков ограничена, просадка счёта предсказуема, расчёт совпадает с фактом при закрытии.
Отказ приходит в момент разрыва ликвидности. Цена проходит уровень стопа без сделок по этой цене, ордер исполняется заметно дальше, и фактический убыток превышает расчётный в несколько раз. Волатильность рынка за минуты вырастает кратно, но правило продолжает считать размер по диапазону, которого больше нет.
Хуже то, что сбой редко бывает одиночным. После первого разрыва стратегия получает ложные сигналы и открывает сделки подряд, каждую — тем же завышенным объёмом. Риск на сделку перестаёт быть независимым: позиции становятся связанными, и просадка счёта складывается не по формуле, а по худшему сценарию.
Поэтому расчёт позиции проверяют не на исторической статистике, а на сценариях: ценовой разрыв, тонкий стакан заявок, каскад принудительных закрытий, длинная полоса убытков. Разбираем, как это закрывается — какие ограничители встраиваются в систему расчета позиции и как проверяется их срабатывание.
Что даёт риск-ориентированный расчет позиции
Алгоритм считает размер позиции от допустимого риска на сделку, а не от свободного остатка на счете. Входные данные — волатильность инструмента, дистанция до стопа и доступная ликвидность; на выходе объем, при котором ошибка в прогнозе стоит ровно столько, сколько заложено в лимит.
Четыре эффекта, которые проверяются на исторических данных до вывода системы в работу:
- Предсказуемая просадка. Доля риска на сделку зафиксирована, поэтому серия убытков дает заранее посчитанную глубину, а не случайную. Управление риском становится параметром стратегии, а не следствием удачи.
- Единый размер риска. Инструменты с разной волатильностью дают одинаковый вклад в риск портфеля: подвижный актив автоматически получает меньший объем, спокойный — больший.
- Снятый класс отказов при разрывах ликвидности. Объем ограничен глубиной стакана и ожидаемым проскальзыванием, поэтому вход не двигает цену и не срывает защитный стоп.
- Воспроизводимость результатов. Одни и те же входные данные дают один и тот же объем на истории, на тестовом контуре и в бою — расхождение объяснимо, а не списывается на «рынок».
Каждый пункт закрывается тестом на истории и прогоном на тестовом контуре с реальными данными о ликвидности, включая ончейн-пулы на Ethereum. Остается калибровка лимита риска под конкретную стратегию — обсуждаем её после замеров.
Сравнение подходов к управлению риском на сделку
Выбор схемы расчёта размера позиции определяет, как система ведёт себя на серии убытков и на резкой смене рыночного режима. Каждый вариант — компромисс между простотой проверки и точностью контроля: чем точнее модель, тем выше требования к качеству входных данных.
| Подход | Когда подходит | Ограничения |
|---|---|---|
| Фиксированный объём | Один инструмент, стабильная ликвидность, нужен предсказуемый учёт результата | Не учитывает расширение диапазона: та же позиция на выросшей волатильности несёт кратно больший риск, лимит на сделку фактически перестаёт работать |
| Волатильностный подход | Инструменты с меняющимся диапазоном, перенос правил между рынками | Зависит от устойчивости оценки волатильности: на разрывах окно запаздывает, и размер позиции пересчитывается с задержкой |
| Портфельный риск | Несколько коррелированных инструментов, нужен общий лимит на сделку | Опирается на матрицу связей между активами: при смене режима связи ломаются, и совокупный риск оказывается выше расчётного |
| Ручные правила | Редкие сделки, проверка гипотез, начальный этап | Не воспроизводится и не масштабируется: результат зависит от дисциплины исполнителя, а не от алгоритма |
На практике подходы комбинируют: базовый лимит на сделку задаётся на уровне портфеля, внутри него размер считается от волатильности, а фиксированный объём остаётся жёстким потолком, который нельзя превысить ни при каких сигналах. Такой контур мы прогоняем на исторических данных — важно увидеть поведение не на спокойном участке, а на серии убытков подряд, когда основную работу делает ограничитель, а не сама модель.
Этапы внедрения: от аудита сделок до регламента
Работа идёт последовательно: сначала фиксируем, как размер позиции определяется сейчас, потом переносим логику в проверяемую схему и только затем допускаем её к реальным сделкам. Порядок принципиален — без аудита торговых правил настройка превращается в подгонку под прошлое, а без регламента риск-менеджмента результат не воспроизводится при смене исполнителя или инструмента.
- Аудит торговых правил. Выгружаем историю сделок и восстанавливаем, чем фактически ограничивался объём: остатком средств, чутьём трейдера или формальным лимитом. Расхождения между заявленным и реальным поведением — отправная точка расчёта.
- Схема расчёта. Фиксируем риск на сделку в долях от капитала, дистанцию защитной заявки и коэффициент, связывающий её с волатильностью инструмента. Получаем формулу, которую можно проверить, а не описательную инструкцию.
- Настройка под инструменты. Учитываем минимальный шаг объёма, ликвидность и стоимость входа-выхода: на тонком стакане расчётный размер может быть физически неисполним, и это закладывается заранее.
- Проверка на исторических данных. Прогоняем алгоритм на нескольких режимах рынка — тренде, боковике, резких провалах. Смотрим не доходность, а глубину просадки и её восстановление.
- Проверка на малом объёме. Запускаем на ограниченном капитале и сверяем расчётный размер с фактическим исполнением: где прошло проскальзывание, где сработал лимит риска.
- Регламент риск-менеджмента. Передаём таблицу лимитов, порядок действий при достижении порога просадки и правила пересмотра параметров при изменении волатильности.
Каждый этап закрывается артефактом: выгрузкой, формулой, отчётом проверки, документом регламента. Внедрение алгоритма считается завершённым, когда расчёт повторяет другой человек по документу — без обращения к автору.
Документация, схемы и регламенты вместо ручных настроек
Алгоритм расчёта размера позиции живёт не в голове инженера и не в переписке, а в артефактах, по которым система сопровождается годами. Типичная причина, по которой риск-модель деградирует, — правки порогов прямо на рабочем контуре без фиксации причины и результата: через полгода никто не может сказать, откуда взялось текущее значение лимита. Поэтому вместе с работающим контуром заказчик получает комплект документов, по которому расчёт можно проверить, изменить и передать другой команде.
- Документация по алгоритму: формулы расчёта, входные параметры, допустимые границы значений и поведение системы при неполных рыночных данных.
- Схемы расчёта риска: путь рыночных данных от источника до решения о позиции, точки, где считаются лимиты, и момент, когда сделка отклоняется.
- Конфигурации правил: файлы с порогами риска и ограничениями на инструмент и на портфель, с комментарием под каждый параметр.
- Регламент изменений: кто и в каком порядке правит пороги, какие проверки обязательны, как действовать при срочной правке в аварийной ситуации.
- Контроль версий правил: каждое изменение — отдельная версия с причиной, автором и результатом прогона на исторических данных.
- Политики доступа: разделение ролей на правку параметров, чтение журнала и выгрузку отчётности о риске.
- Журнал изменений и инцидентов: что менялось, к какому отклонению привело, какое ограничение добавили после разбора.
- Инструкции сопровождения: типовые операции — пересчёт лимитов, остановка расчёта, откат к предыдущей версии правил.
Всё это лежит рядом с кодом, а не в отдельных папках: при следующей доработке команда видит не итоговые числа, а логику, из которой они получены.
Кейс: как просадка сократилась втрое при том же обороте
Как было до внедрения
Размер позиции считали в таблице, правила лежали в регламенте, а лимиты проверялись вручную перед каждым входом. На волатильном рынке решения расходились с регламентом: доля сделок с превышением риска доходила до 6,8%, максимальная просадка за квартал — 34%. Правка правил занимала до трёх дней: аналитик описывал новую логику, разработчик переносил её в торговый скрипт и прогонял на истории.
Что изменили и что получили
Расчёт вынесли в отдельный сервис: он принимает поток цен от оракула Chainlink, считает волатильность по скользящему окну и отдаёт размер позиции, который торговый контракт может уменьшить, но не превысить. Лимиты дневного риска и просадки живут в самом контракте и проверяются при каждом входе без участия человека — превышение риска становится технически невозможным, а не «не рекомендованным».
За сопоставимый период просадка — 11% против 34%, доля сделок с превышением риска — 0,4% против 6,8%, правка правил — 15–20 минут вместо трёх дней: параметры меняются в конфигурации сервиса и подхватываются без пересборки контракта. Оборот остался прежним, а устойчивость к волатильности выросла за счёт управления риском, а не за счёт паузы в торговле.
Чем модель риска на сделку отличается от фиксированного объёма
Фиксированный лот задаёт объём сделки, но не риск. При одном и том же размере позиции убыток до защитного уровня зависит от расстояния до него, а это расстояние меняется вместе с волатильностью. В спокойном диапазоне тот же лот даёт умеренную экспозицию, а на расширении — кратно большую, и серия сделок в одинаковом объёме накапливает разную просадку, которую невозможно ни спланировать, ни сравнить между инструментами.
Модель риска работает от обратного: сначала фиксируется допустимая доля капитала на сделку и точка выхода, а объём выводится из них. Система расчета позиции получает на вход текущую волатильность, оценку ликвидности и цену защитного уровня, после чего считает размер так, чтобы потенциальный убыток оставался в заданной границе. Пересчёт при волатильности идёт по каждому изменению режима рынка, а не один раз при настройке.
Ликвидность входит в расчёт отдельным слагаемым. В тонкой книге заявок реальный объём исполнения отличается от расчётного, поэтому модель заранее занижает размер на инструментах с высокой ожидаемой просадкой цены исполнения — иначе расчётный риск остаётся на бумаге, а фактический растёт. На ликвидных парах тот же капитал позволяет взять больший объём без выхода за границу риска.
В исполнении это выглядит так: перед каждой сделкой модуль заново пересчитывает размер позиции по свежим данным, а параметры модели хранятся в проверяемом виде — изменение волатильности автоматически меняет объём, но не логику. Результат — сопоставимая экспозиция в разных режимах рынка: просадка перестаёт зависеть от того, в какую фазу попала серия сделок, а сравнение стратегий становится корректным.
Технические сомнения: волатильность, проскальзывание, ликвидность
Инженерные сомнения редко касаются самой идеи — они про данные и границы применимости. Разбираем четыре, которые всплывают почти на каждой встрече.
Что делать, если история сделок неполная?
Выгрузки приходят с пропусками: часть сделок не записана, у другой нет точной метки времени. Алгоритм не достраивает дырки догадками — он помечает такие интервалы как непригодные и исключает из калибровки. Вы видите долю данных, которая реально участвовала в расчёте.
Как система ведёт себя при падении ликвидности?
При тонком стакане расчётная цена исполнения расходится с фактической, и проскальзывание съедает ожидание. Поэтому размер позиции считается от доступного объёма на стороне книги, а не от номинала: ликвидность сужается — позиция ужимается сама.
Нужно ли останавливать торговлю на время внедрения?
Нет. Контур идёт в теневом режиме на живых данных: он выдаёт размер позиции, но команды на биржу не уходят. Действующие стратегии работают как раньше, а расхождения расчётного и фактического исполнения копятся в отчёт.
Как проверить алгоритм до вывода на реальный счёт?
Три шага: прогон по истории с комиссиями и проскальзыванием, теневой период на потоке, ограниченный лимит на счёте. У каждого свой критерий перехода — доля отказов, отклонение расчётного размера от фактического, поведение на волатильных участках. Критерий не выполнен — остаёмся в предыдущем контуре.
Обсудим задачу: с чего начать внедрение
Чтобы разговор был предметным, а не обзорным, начинаем с входных данных для разбора. Чем точнее опишете текущую логику риска и ограничения, тем быстрее мы скажем, что требует переработки, а что можно оставить как есть.
- текущую логику риска: как считается допустимый риск на сделку и что задаёт размер позиции — доля капитала, волатильность инструмента, лимит на направление;
- выгрузку сделок или заявок за показательный период — по ней видно, в каких режимах рынка расчёт уходит в просадку;
- жёсткие ограничения: максимальный размер позиции, допустимое плечо, условия принудительной остановки торговли;
- правила на сбой: как система расчета позиции должна вести себя, если данные о цене или ликвидности не пришли либо пришли с задержкой;
- требования к отчётности: какие параметры расчёта и решения нужно фиксировать и с какой периодичностью их проверять;
- окружение и доступы: куда встраивается расчёт, какие системы он затрагивает и кто с вашей стороны отвечает за согласования.
На первой встрече разберём, где проходит граница между расчётом размера позиции и исполнением, какие проверки нужны перед каждой сделкой и как система должна вести себя в пограничных режимах рынка. В ответ пришлём план внедрения по этапам, оценку сроков и перечень того, что потребуется от вашей стороны. Опишите задачу — вернёмся с оценкой и планом.







