TGViewer
Classical Vlad Classical Vlad @classical_vlad · 457 subscribers
Post #38 2.53K
Симуляция микроструктуры
Часть 1: Один инструмент, одна биржа

На выходе картина простая — случайное блуждание, но в текущей версии симуляции этого и ожидал.
Это лишь проверка того, что движок действительно работает и выполняет веления стратегий.
Такой график — это проявление взаимодействия нескольких Pure Market Making акторов и одного тейкера, который отправляет ордер раз в постоянный интервал времени со случайной стороной ордера.

Первые уровни ликвидности пропадают из ордербука после исполнения тейкера, после чего мейкеры котируют уже от нового MidPrice.
В последующих симуляциях хочется заставить торговать больше акторов/стратегий на разных рынках. Например, между спотовым рынком и фьючерсным будут арбитражёры. Так же между инструментами с разными quote валютами будут треугольные арбитражи. Мейкеры будут не только PMM, но и, например, Avellaneda&Stoikov.


Узнал много нового и понял, как в действительности такие системы могут работать под капотом.

Из интересного:
- Цена маркировки: если Index почти везде стандартно является взвешенной по объёму цене спота с других бирж, то Mark может быть медианой цены последней сделки, индекса с учётом предыдущего фандинга и 30-секундного TWAP, как у Binance; ну или SMA от суммы индекса и MidPrice, как на OKX
- Ликвидации происходят именно по Mark Price. Биржа хочет избежать ситуации, когда кто-то манипулирует ценой фьючерса и триггерит чужие ликвидации. Но гарантии ликвидности на выход это не даёт — если на нужном уровне книжки пусто, позиция ликвидируется частично или по худшей цене. На такой случай у бирж есть отдельный Insurance Fund, который покрывает убытки от так называемых Bankrupt Positions. Если и он не справляется — включается Auto-Deleveraging, и позиции принудительно закрываются уже у прибыльных участников с противоположной стороны. Мне это до сих пор кажется странным и не укладывается в голову.
- Приоритетность Matching Engine конкретных бирж: писал в одном из постов об этом. Пока реализовал Price-time и Price-Pro-Rata. В одном из случаев (на одном уровне) филлим в порядке очереди, во втором — филлим пропорционально объёму (тут можно пойти ещё глубже, подумав над приоритетностью ордеров разной видимости)
- Если у вашей биржи заполнилась очередь на исполнение — можете разделить вашу очередь на 2: приоритетную и неприоритетную. В приоритетную очередь будут идти отмены ордеров, ReduceOnly и прочие уменьшения риска, а новые ордера — в неприоритетную. И скорее будет забиваться неприоритетная очередь, чем приоритетная, и тогда можно со спокойной совестью кидать клиенту отказ с причиной Overloaded
- Для избежания FlashCrash-подобных событий на некоторых биржах есть механизм, называемый Circuit Breaker, который будет останавливать торги по инструменту, если его изменение за промежуток времени вышло за допустимый предел. Так же может останавливать торги на всём рынке или бирже. Может работать как на интервалах секунд, так и минут и целых торговых сессий


Кодик: https://github.com/VladKochetov007/ExchangeSimulation
  • ❤ 17
  • 🔥 3
  • 🥰 1
  • 🤡 1
More from @classical_vlad
  1. Aug 25, 2026Буквально лучший поиск, один из самых быстрых дешвле соседей и с тем же качеством keenable…
  2. Aug 16, 2026Итак, мне исполнилось 19 лет. Это был насыщенный год: первый год в эмиграции, первое уволь…
  3. Aug 16, 2026Про Сеул: Первые впечатления: очень жарко и очень влажно. 30-35 градусов, которые ощущаютс…
  4. Aug 3, 2026Раньше я считал, что соревнования не для меня. Я понимал, что всегда найдётся много людей…
  5. Jul 25, 2026Вб сгорел, озон в плену, хованский умер, а мы выпустили быстрый диффузионный апскейлер. Ск…
  6. Jul 18, 2026Я очень много пишу код с помощью Claude Code. Точнее сказать, что иначе я уже не пишу код…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →