
Бэктест на минутных свечах отвечает на вопрос «была ли идея», но не на вопрос «заработал бы на ней робот». Свеча не знает, по какой цене на самом деле можно было войти, кто был инициатором сделок и сколько объема стояло на лучшей цене.
Простой пример на фьючерсе на доллар (Si). Минимальный шаг цены — 1 пункт, это 1 рубль на контракт. Бэктест на свечах покупает и продает по цене закрытия. Живой робот, который входит по рынку, покупает по лучшей цене продажи (ask), а продает по лучшей цене покупки (bid), на каждом круге отдает спред. Пусть спред всего 1 пункт, а робот делает 100 кругов в день по 10 контрактов. Это 1 тыс. руб. в день, около 20 тыс. руб. в месяц, и в бэктесте на свечах их нет. А в шумные часы спред шире, и разница растет.
Чтобы увидеть такие расходы до запуска, нужны котировки: лучшие цены покупки и продажи (bid и ask), поток сделок с направлением, а иногда и весь стакан. Разберем три пути, как их получить.
Какие данные нужны для какого бэктеста
| Что проверяете | Каких данных достаточно |
|---|---|
| Трендовую идею на дневках или часах | Свечи OHLCV |
| Сколько съедают спред и проскальзывание при входе по рынку | Лучшие bid и ask на каждый момент |
| Импульс, перевес агрессивных покупок над продажами | Сделки с направлением и объемом |
| Исполнение лимитных заявок, влияние своего объема на цену | Стакан на несколько уровней |
| Место в очереди, маркетмейкинг, высокочастотные стратегии | Журнал всех заявок: каждое выставление, снятие и сделка |
Чем ниже строка, тем больше данных и тем дороже их получить. Сначала стоит понять, на какой строке ваша стратегия, и не покупать то, что не понадобится.
Путь 1. Записывать самому через торговый APIИстория в брокерском API есть только свечами: OHLCV, до 1440 баров за запрос. Сделки отдаются только за текущую сессию, котировки и стакан — только текущие. Но в реальном времени торговый API БКС отдает все, из чего история складывается, и копить ее можно начать с сегодняшнего дня, по тем инструментам, которыми вы торгуете.
По WebSocket приходят четыре потока:
Акции, облигации, валюта, фьючерсы — все в одном API. Для фьючерсов отдельная подписка на рыночные данные не нужна. Токен выпускается бесплатно в веб-версии БКС Мир инвестиций (Профиль — Счета и тарифы — Токены API), для записи хватает токена «только для чтения»: заявки с ним не подать.
Что для этого нужно
Небольшая программа-сборщик: подключается к потоку, подписывается на инструменты и пишет каждое сообщение в файл. Подписка на котировки — одна короткая команда:
{«subscribeType»: 0, «dataType»: 3, «instruments»: [{«ticker»: «SBER», «classCode»: «TQBR»}]}
Для фьючерса тикер и код класса берутся из справочника инструментов API, это запрос инструментов по типу FUTURES.
Готовые примеры подключения на Python, JavaScript, Go, Java и C# есть в документации торгового API, в каждом разделе WebSocket. Там же на каждой странице есть кнопка «Копировать для AI»: описание можно сразу отдать ИИ-ассистенту, и он поможет собрать сборщик под вашу задачу, даже если вы раньше такого не писали.
Чек-лист сборщика
Что получится
Сама запись — это тиковые данные: каждая сделка и каждое обновление котировки. Из них собираются свечи любого периода, от секунд до часов, причем такие, которых нет в готовом виде нигде:
Полноту записи легко проверить: число записанных за день сделок по инструменту сравните с числом сделок в итогах дня на сайте биржи (ISS, поле NUMTRADES). Совпадает — в записи ничего не потеряно.
Сколько это весит: по фьючерсу Si с 19 по 26 октября проходило от 150 до 240 тыс. сделок в день. В простом текстовом формате это 30–50 мегабайт в день только сделок по одному инструменту, котировки добавят еще. Архиватор сжимает такие файлы в разы, так что для записи хватит обычного диска.
Чего своя запись не даст сразу — длинной истории. Пары недель хватит, чтобы оценить спред, проскальзывание и исполнение на своих инструментах. Проверить стратегию на разных режимах рынка, на резких движениях и тихих месяцах, не получится. Для этого нужен второй путь.
Путь 2. Купить историю у биржиЕсли стратегию нужно проверить на нескольких годах, то можно найти историю на сайте Московской биржи: раздел «Реестры заявок и сделок». Данных три типа, все обезличенные:
| Тип | Что внутри | Срочный рынок | Акции | Валютный рынок |
|---|---|---|---|---|
| A – Full Orderbook | Все сделки и все заявки | С января 2016 | С апреля 2016 | С января 2006 |
| B – Top of Book | Все сделки и лучшие заявки | С января 2016 | С апреля 2016 | С января 2006 |
| С | Только сделки | С ноября 2000 | С января 2000 | С января 2000 |
| Тип | Инструмент, месяц | Рынок, месяц | Инструмент, год | Рынок, год |
|---|---|---|---|---|
| A | 4500 руб. | 15 000 руб. | 45 000 руб. | 150 000 руб. |
| B | 1500 руб. | 4500 руб. | 15 000 руб. | 45 000 руб. |
| C | - | 3750 руб. | - | - |
Минимальный период — один календарный месяц. На той же странице есть бесплатные пробные данные: по ним удобно проверить формат до покупки.
Для бэктеста по bid и ask хватает типа B. Тип A нужен, когда важна глубина: из журнала всех заявок стакан восстанавливается на любой момент и на любую глубину.
Путь 3. Когда нужна каждая заявка в реальном времениБрокерский API — это поток через инфраструктуру брокера, со стаканом до 20 уровней. Для стратегий, где важны очередь заявок и задержки, данные берут напрямую у биржи через прямой доступ (DMA):
| Сервис | Что дает | Тариф биржи, без НДС |
|---|---|---|
| Plaza II, срочный рынок | Опция «полный журнал заявок» — обезличенный журнал всех заявок торговой сессии. Шлюз ставится в офисе или в колокации биржи | 8000 руб. в месяц к логину Plaza II |
| FAST | Рыночные данные фондового, срочного и валютного рынков. На срочном — опция «полный журнал заявок», по которому стакан собирается любой глубины | 21 000 руб. в месяц за опцию |
| SIMBA | Самый быстрый поток рыночных данных биржи, с полным журналом заявок и задержкой ниже, чем у FAST. Работает в зоне колокации | 30 000 руб. в месяц и 30 000 разово за рынок |
Запись такого потока у себя — самая подробная история, какую можно получить: каждая заявка, биржевые метки времени, без промежуточных звеньев. К тарифам биржи добавляются логин и подключение. Подобрать набор под рынок, стратегию и посчитать полную стоимость поможет команда DMA БКС.
Как выбрать
| Ситуация | Путь |
|---|---|
| Нужно понять реальный спред и исполнение на своих инструментах | Своя запись через торговый API |
| Нужно проверить идею на годах истории | История биржи: тип B для спреда, тип A для стакана |
| Стратегия чувствительна к задержкам, нужны очередь заявок, полный стакан и точные биржевые метки времени | DMA: Plaza II, FAST или SIMBA и запись у себя |
Пути часто совмещают: историю за прошлые годы покупают у биржи, а дальше пишут сами, чтобы не платить за каждый следующий месяц.
/>Ссылки, которые пригодятся• Документация торговый API БКС: trade-api.bcs.ru, потоки рыночных данных — в разделе WebSocket, ограничения — trade-api.bcs.ru/restrictions.
• История биржи и пробные данные: moex.com/ru/orders?historicaldata.
• Итоги дня по инструменту для сверки записи, на примере Si: iss.moex.com/iss/history/engines/futures/markets/forts/securities/SiZ6.
• Тарифы биржи на прямой доступ: moex.com/s324.
• Что такое DMA и когда он действительно нужен: статья на БКС Экспресс.
• Чем отличаются FIX к брокеру и FIX к бирже: FIX и DMA: три способа отправить заявку.
Если хотите обсудить сбор данных или подключение своей системы, пишите на dma@bcs.ru.