Изображение блога
БКС Мир Инвестиций
БКС Мир Инвестиций Блог компании БКС Мир инвестиций
Вчера в 16:39

История котировок для бэктеста: где взять бесплатно, где купить и когда нужен DMA

История котировок для бэктеста: где взять бесплатно, где купить и когда нужен DMAИстория котировок для бэктеста: где взять бесплатно, где купить и когда нужен DMA

Содержание статьи

  1. Путь 1. Записывать самому через торговый API
  2. Путь 2. Купить историю у биржи
  3. Путь 3. Когда нужна каждая заявка в реальном времени
  4. Ссылки, которые пригодятся

Бэктест на минутных свечах отвечает на вопрос «была ли идея», но не на вопрос «заработал бы на ней робот». Свеча не знает, по какой цене на самом деле можно было войти, кто был инициатором сделок и сколько объема стояло на лучшей цене.

Простой пример на фьючерсе на доллар (Si). Минимальный шаг цены — 1 пункт, это 1 рубль на контракт. Бэктест на свечах покупает и продает по цене закрытия. Живой робот, который входит по рынку, покупает по лучшей цене продажи (ask), а продает по лучшей цене покупки (bid), на каждом круге отдает спред. Пусть спред всего 1 пункт, а робот делает 100 кругов в день по 10 контрактов. Это 1 тыс. руб. в день, около 20 тыс. руб. в месяц, и в бэктесте на свечах их нет. А в шумные часы спред шире, и разница растет.

Чтобы увидеть такие расходы до запуска, нужны котировки: лучшие цены покупки и продажи (bid и ask), поток сделок с направлением, а иногда и весь стакан. Разберем три пути, как их получить.

Какие данные нужны для какого бэктеста

Что проверяете Каких данных достаточно
Трендовую идею на дневках или часах Свечи OHLCV
Сколько съедают спред и проскальзывание при входе по рынку Лучшие bid и ask на каждый момент
Импульс, перевес агрессивных покупок над продажами Сделки с направлением и объемом
Исполнение лимитных заявок, влияние своего объема на цену Стакан на несколько уровней
Место в очереди, маркетмейкинг, высокочастотные стратегии Журнал всех заявок: каждое выставление, снятие и сделка

Чем ниже строка, тем больше данных и тем дороже их получить. Сначала стоит понять, на какой строке ваша стратегия, и не покупать то, что не понадобится.

Путь 1. Записывать самому через торговый API

История в брокерском API есть только свечами: OHLCV, до 1440 баров за запрос. Сделки отдаются только за текущую сессию, котировки и стакан — только текущие. Но в реальном времени торговый API БКС отдает все, из чего история складывается, и копить ее можно начать с сегодняшнего дня, по тем инструментам, которыми вы торгуете.

По WebSocket приходят четыре потока:

  • Котировки — лучшая цена покупки (bid) и продажи (offer), последняя сделка, время обновления.
  • Сделки — цена, количество в бумагах или контрактах, объем в деньгах и сторона агрессора: BUY, если сделку инициировал покупатель, SELL — если продавец.
  • Стакан — до 20 уровней.
  • Свечи — текущая свеча, от M1 до месячной.

Акции, облигации, валюта, фьючерсы — все в одном API. Для фьючерсов отдельная подписка на рыночные данные не нужна. Токен выпускается бесплатно в веб-версии БКС Мир инвестиций (Профиль — Счета и тарифы — Токены API), для записи хватает токена «только для чтения»: заявки с ним не подать.

Что для этого нужно

Небольшая программа-сборщик: подключается к потоку, подписывается на инструменты и пишет каждое сообщение в файл. Подписка на котировки — одна короткая команда:

{«subscribeType»: 0, «dataType»: 3, «instruments»: [{«ticker»: «SBER», «classCode»: «TQBR»}]}

Для фьючерса тикер и код класса берутся из справочника инструментов API, это запрос инструментов по типу FUTURES.

Готовые примеры подключения на Python, JavaScript, Go, Java и C# есть в документации торгового API, в каждом разделе WebSocket. Там же на каждой странице есть кнопка «Копировать для AI»: описание можно сразу отдать ИИ-ассистенту, и он поможет собрать сборщик под вашу задачу, даже если вы раньше такого не писали.

Чек-лист сборщика

  • Токен доступа живет 24 часа. Сборщик сам получает его из refresh-токена (тот действует 90 суток) и раз в сутки переподключается с новым.
  • Ping каждые 30 секунд. Сервер проверяет, жив ли клиент, и без ответа закрывает соединение. WebSocket-библиотеки обычно отвечают сами, главное — не блокировать обработку входящих сообщений.
  • Переподключение. Соединение иногда рвется — сборщик должен сам подключиться и подписаться заново.
  • Время получения. Рядом с каждым сообщением храните свое время: по нему видно, где запись прерывалась.
  • Лимиты. До 20 соединений и до 100 инструментов в одном соединении. Больше инструментов — больше соединений.

Что получится

Сама запись — это тиковые данные: каждая сделка и каждое обновление котировки. Из них собираются свечи любого периода, от секунд до часов, причем такие, которых нет в готовом виде нигде:

  • Свечи по сделкам с объемом в контрактах. Свечи API дают объем в деньгах, а в своей записи есть количество в каждой сделке.
  • Свечи по котировкам — bid и ask на закрытии бара и спред внутри него: средний и максимальный.
  • Перевес покупок и продаж — сколько объема забрали агрессивные покупатели и сколько продавцы. В обычных свечах такого признака нет.

Полноту записи легко проверить: число записанных за день сделок по инструменту сравните с числом сделок в итогах дня на сайте биржи (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.

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн