Чтобы понять, как изменится средняя цена покупки при движении по уровням ask на Polymarket, достаточно трёх вещей: снимка стакана (уровни цен и доступные объёмы), объёма вашей заявки и правил исполнения (лимитная заявка может ждать, рыночная фактически «съедает» доступные объёмы). Ниже — практическая методика и численный пример, который покажет, где появляется проскальзывание и как оценить его в деньгах.
Что брать из публичного стакана
- Лучший ask (минимальная цена продажи) и объём на нём. Цена в Polymarket выражается от 0 до 1 доллара за долю.
- Следующие уровни ask с их объёмами (обычно несколько ближайших уровней достаточны для моделирования).
- Текущий лучший bid и спред (чтобы понимать возможную цену закрытия позиции).
Эти данные можно взять с публичной страницы рынка или через API; важно смотреть снимок в момент моделирования, так как стакан изменяется в реальном времени. См. принципы работы стакана в документации Polymarket: Prices & orderbook.
Простая модель исполнения (пошагово)
1. Задайте объём покупки Q (доли). 2. Пройдитесь по уровням ask по возрастанию цены, вычитая объём уровня из оставшегося Q, пока Q>0 или уровни не кончились. 3. Для каждого уровня i аккумулируйте стоимость_i = min(объём_i, остаток_Q) × цена_i. 4. Суммарная стоимость = Σстоимость_i. Средняя цена = суммарная стоимость / исходный Q. 5. Проскальзывание относительно лучшего ask = средняя цена − цена_лучшего_ask. В денежном выражении = проскальзывание × Q.
Если вы используете лимитную заявку по цене = лучший ask, часть Q останется не исполненной, и в расчётах нужно учитывать только фактически исполненный объём; оценку остатка ведите отдельно (он остаётся по себестоимости 0 до исполнения).
Где появляется частичное исполнение и как это учесть
- При выставлении лимитной заявки по цене ниже общих ask исполнится только сумма доступного объёма по этой цене; остальное останется в книге.
- В модели отмечайте фактический исполненный объём Q_exec и стоимость исполненного куска; оставшийся объём Q_rem = Q − Q_exec имеет себестоимость равной сумме оплаченных долей (не ноль) и требует отдельного учета при последующей доборе или закрытии.
Условный численный пример
Допустим, snapshot asks (условный пример):
- 100 долей по 0.45
- 200 долей по 0.50
- 300 долей по 0.60
Вы хотите купить Q = 400 долей по рынку (то есть взять доступный объём сверху вниз). Стоимость:
- 100×0.45 = 45.00
- 200×0.50 = 100.00
- 100×0.60 = 60.00
Сумма = 205.00 долларов. Средняя цена = 205.00 / 400 = 0.5125 доллара за долю. Проскальзывание относительно лучшего ask (0.45) = 0.5125 − 0.45 = 0.0625. В денежном выражении = 0.0625 × 400 = 25.00 долларов. Если позднее вы сможете продать все 400 долей по 0.70 (гипотетическая цена продажи), выручка = 400×0.70 = 280.00; PnL при ликвидации = 280.00 − 205.00 = 75.00 долларов. Все числа в этом примере условные и согласованы по арифметике.
Как модель помогает выбирать: лимит или рынок
- Если допустимое для вас проскальзывание (в деньгах или в процентах) меньше ожидаемого по модели, имеет смысл ставить лимитную заявку и ждать исполнения по лучшей цене.
- Если скорость исполнения важнее и вы готовы заплатить проскальзывание, рыночная покупка исполнит всю доступную ликвидность сверху вниз.
- При большой заявке сравнивайте две вещи: среднюю цену по рынку (по модели) и вероятность/время выполнения лимитного ордера по вашей цене. Помните, лимитный ордер может исполниться частично и оставить остаток.
Краткие выводы
- Моделируйте исполнение простым пошаговым проходом по уровням ask: это даст точную среднюю цену и денежную величину проскальзывания.
- Учитывайте частичное исполнение и правильно распределяйте себестоимость между исполненным и оставшимся объёмом.
- Решение limit vs market должно базироваться на допустимом проскальзывании, доступных объёмах и сроках: модель даёт численные ориентиры, а не гарантии исполнения.
Подробнее о типах ордеров и жизненном цикле заявки — в документации Polymarket: Limit orders и Prices & orderbook.