В бэктесте рынка предсказаний можно взять тикер, который выглядит правильным, верную историю цен и не тот контракт. Эту ошибку легко пропустить: названия рынков короткие, страницы событий обновляются, а акция YES всегда выглядит как цена от нуля до единицы.
Представим гипотетический рынок с названием «Примут ли закон о чистом транспорте?» Стратегия покупает YES по 0.42 после новостного сигнала. Позже бэктест оценивает позицию в 1.00. Прежде чем доверять этой прибыли, я хочу точно знать, что обещал контракт: о каком законопроекте шла речь, что считалось «принятием», каков был срок и какой источник определял результат.
Название: «Примут ли закон о чистом транспорте?»
Название — это отображаемая строка, а не неизменный идентификатор инструмента. У двух рынков могут быть почти одинаковые формулировки, хотя они относятся к разным сессиям законодательного органа, редакциям законопроекта или срокам. Площадка также может изменить название, чтобы уточнить смысл рынка, не меняя его базовые условия.
Поэтому в бэктесте позицию нужно привязывать к неизменяемому ID рынка или контракта на площадке, а также сохранять полный текст правил и его версию. Если в исторических данных есть только название и тикер, нельзя подтвердить, что ряд цен относится именно к тому контракту, которым намеревалась торговать стратегия.
| Поле идентификации | Что оно фиксирует | Что пойдёт не так, если его нет |
|---|---|---|
| Площадка и ID рынка | Конкретный выставленный на площадке рынок | Рынки с похожими названиями объединяются |
| Версия правил | Условия, на которые согласились участники | Позднейшая редакция применяется к более ранним сделкам |
| ID токена исхода | Торгуемое требование YES или NO | Цены YES и NO перепутаны или объединены |
| Источник определения результата | Данные, по которым определяется исход | В бэктесте предполагается другой уполномоченный источник |
Правила: что значит «примут»?
Предположим, правила требуют, чтобы законопроект прошёл Палату представителей и Сенат до 30 июня, а затем был подписан президентом. Если бэктест считает успехом прохождение хотя бы одной из палат, ставка уже изменилась. То же самое происходит, если за результат принимают законопроект с таким же названием в следующей сессии.
Читайте реальные критерии расчёта как исполняемые условия. Зафиксируйте срок и часовой пояс, событие, которое засчитывается, возможные исключения и указанный источник определения результата. Важна и неоднозначность: если правила площадки не дают ответа для правдоподобного сценария, не выбирайте молча трактовку, которая совпадает с историческим исходом.
В этой работе есть чудесная, совершенно негламурная часть: сохранить страницу с правилами до того, как произойдёт что-то интересное. Страница, сохранённая уже после определения результата, может содержать окончательную формулировку, хотя стратегия вошла в рынок, когда действовала более ранняя версия.
Временная шкала: когда стратегия могла это узнать?
Теперь допустим, что правила в порядке, а новостной сигнал сработал в 14:05 UTC. В исторической ленте указана сделка в 14:05 по цене 0.42. Одной этой отметки времени недостаточно, чтобы понять, была ли информация доступна до сделки, можно ли было исполнить ордер по записанной цене позже или этот бар отражает котировку, сделку либо сводку за интервал.
Храните время доступности сигнала отдельно от времени рыночного события. Затем размещайте ордер после того, как стратегия могла его рассчитать и отправить. На малоликвидном рынке следующая записанная сделка может пройти через несколько минут; это не доказывает, что ваш ордер исполнился бы по такой цене.
Цена: котировка — ещё не исполнение
YES по 0.42 означает цену 42 цента за акцию, но ряд последних сделок скрывает спред и доступный объём. Если лучшая цена продажи — 0.45 при объёме 20 акций, симулированную покупку 100 акций нельзя целиком исполнить по 0.42. Ордеру, возможно, придётся пройти по книге заявок, подождать или остаться неисполненным.
Цены на рынках предсказаний также подталкивают к бухгалтерскому упрощению: считать 0.42 вероятностью 42% и забывать, что это ещё и сумма затрат на вход. Позиция в 100 акций YES стоит $42 до вычета комиссий. Если расчёт завершится выплатой $1, валовая выручка составит $100; если выплатой $0 — ноль. Комиссии, частичные исполнения и предусмотренный площадкой порядок расчёта нужно учитывать в журнале операций.
Расчёт: что закрывает сделку?
В бэктесте позицию часто закрывают по последней рыночной цене. Но контракт, удерживаемый до расчёта, выплачивает сумму согласно правилам, а его последняя котировка может быть устаревшей, с широким спредом или далёкой от итоговой выплаты. Моделируйте расчёт как отдельное событие: исход, время расчёта и движение денежных средств должны браться из записи контракта.
Также учитывайте случаи, когда рынок признаётся недействительным или спорным, если правила площадки предусматривают такой исход. В этом случае ставка может быть возвращена, выплачена в другом размере или выплата может задержаться. Предположение о бинарной выплате не охватывает все возможные варианты расчёта.
Вердикт по бэктесту
В этом примере я бы признал заявленную прибыль только после сверки неизменяемого ID рынка, версии правил на момент входа, токена YES, времени доступности сигнала, исполнимых цен продажи и объёма, комиссий и записанного результата расчёта. Если архив цен не позволяет провести эти проверки, честный вывод — диапазон сценариев или неподтверждённый результат.
Для одной небольшой сделки это может показаться чрезмерной строгостью. Но если та же ошибка при объединении данных повторится на тысячах рынков, бэктест превратится в точное измерение контрактов, которыми ваша стратегия никогда не торговала.
← Все статьи


