Иногда есть желание проверить какую-нибудь стратегию на тиковых данных, используя информацию о времени сделки с точностью до миллисекунд, цены, объёма и направления сделки. Данные — это не ордер-лог, а то, что выгружается из квиковской таблицы обезличенных сделок. За ultra-true-hft погони нет, скорее это попытка перейти на уровень несколько ниже 1-минутных данных.
Моделирование происходит примерно так:
1) Последовательные тики, которые имеют одно и то же значение миллисекунд, одну и ту направленность (buy/sell), и последовательные номера trade_num, склеиваются и интерпретируются как будто бы это была рыночная заявка, удовлетворившая несколько лимитных заявок (далее, склейка).
2) При отправке заявки из алгоритма делается задержка, скажем 100 мс, прежде чем она «попадает на биржу».
3) Если заявка рыночная и, к примеру, на покупку, то ждём первый тик из склейки с направлением «покупка». Считаем, что заявка исполнилась по этой цене.
4) Если заявка лимитная и, к примеру, на покупку, то ждём тик с направлением «продажа», для которого цена строго ниже цены в лимитной заявке (цена тика строго пересекла уровень). Считаем, что в этом случае лимитная заявка удовлетворена полностью.
5) Ответ при исполнении заявки приходит в алгоритм мгновенно (задержка по аналогии с пунктом 2 кажется неважной).
Вопрос звучит так: насколько такой алгоритм адекватен в расчёте на сделки со временем удержания позиции от 15 секунд и выше? Сомнения, в основном, в пессимистичном пункте 4). На реальном рынке лимитная заявка может исполниться, а цена не перейдёт её уровень.
При торговле в основном лимитными заявками при реализации пункта 4 в пессимистичном варианте и в оптимистичном варианте (цена тика равна цене лимитной заявки) набегает ощутимая разница при большом количестве сделок.
Для (4) могу предложить записывать стакан, потом сопоставлять проходящие сделки и смотреть насколько высока вероятность того, что ваш лимитник попал в прошедший объем. Надо только фильтровать спуф-ботов, если они есть в тестируемом инструменте.
Тестировать HFT не просто, да :)
2 попробуй идею протестить на минутках… если минутках не работает то и на тиках тож работать не будет
3 избегай сложностей
Касательно 2 интуитивно кажется, что переход, скажем, с 15-минуток на 1-минутки приводит не к такому изменению количества информации, как переход с 1-минуток на тики. Хотя ещё не ясно, поможет ли эта информация выявить торговое преимущество.
Исходя из своего опыта могу сказать, что задержка при выставлении заявки и режим ее исполнения значительно влияют на результаты тестирования. Причем тест с «пробитием цены» дает максимально приближенный к реальной торговле результат.
Посмотрите — Режимы исполнения заявок
Только реальный рынок скажет где правильно, а где нет.
Запустить бота на реальном рынке и потом сопоставить ордера/сделки с ордерами/сделками в тестере за тот-же период.
П.С. Весьма примечательно, что что у вас вызвали сомнения совсем не те аспекты, которые имеют значение и убивают эффективность. Именно так обычно и бывает.