_sk_
_sk_ личный блог
16 января 2017, 08:21

Вопрос про адекватность простого тестера на тиках

Иногда есть желание проверить какую-нибудь стратегию на тиковых данных, используя информацию о времени сделки с точностью до миллисекунд, цены, объёма и направления сделки. Данные — это не ордер-лог, а то, что выгружается из квиковской таблицы обезличенных сделок. За ultra-true-hft погони нет, скорее это попытка перейти на уровень несколько ниже 1-минутных данных.

Моделирование происходит примерно так:


1) Последовательные тики, которые имеют одно и то же значение миллисекунд, одну и ту направленность (buy/sell), и последовательные номера trade_num, склеиваются и интерпретируются как будто бы это была рыночная заявка, удовлетворившая несколько лимитных заявок (далее, склейка).

2) При отправке заявки из алгоритма делается задержка, скажем 100 мс, прежде чем она «попадает на биржу».

3) Если заявка рыночная и, к примеру, на покупку, то ждём первый тик из склейки с направлением «покупка». Считаем, что заявка исполнилась по этой цене.

4) Если заявка лимитная и, к примеру, на покупку, то ждём тик с направлением «продажа», для которого цена строго ниже цены в лимитной заявке (цена тика строго пересекла уровень). Считаем, что в этом случае лимитная заявка удовлетворена полностью.

5) Ответ при исполнении заявки приходит в алгоритм мгновенно (задержка по аналогии с пунктом 2 кажется неважной).

Вопрос звучит так: насколько такой алгоритм адекватен в расчёте на сделки со временем удержания позиции от 15 секунд и выше? Сомнения, в основном, в пессимистичном пункте 4). На реальном рынке лимитная заявка может исполниться, а цена не перейдёт её уровень.

При торговле в основном лимитными заявками при реализации пункта 4 в пессимистичном варианте и в оптимистичном варианте (цена тика равна цене лимитной заявки) набегает ощутимая разница при большом количестве сделок.
12 Комментариев
  • Al Best
    16 января 2017, 09:00
    данные которые выдаёт тестер очень отличается не ломайте голову если сами не супер вундеркинд или не готовы отдать лет 5-7 исследованиям и это без гарантий не успех…  
  • bstone
    16 января 2017, 09:05
    Пункт (3) тоже не ахти — надо учесть соотношение объемов ваших сделок с вероятностью проскальзывания. 

    Для (4) могу предложить записывать стакан, потом сопоставлять проходящие сделки и смотреть насколько высока вероятность того, что ваш лимитник попал в прошедший объем. Надо только фильтровать спуф-ботов, если они есть в тестируемом инструменте.

    Тестировать HFT не просто, да :)
  • ves2010
    16 января 2017, 10:24
    1 делай просто… протесть… а потом запусти бота на пару дней… сам все увидишь… во сколько раз будет хуже... 
    2  попробуй идею протестить на минутках… если минутках не работает то и на тиках тож работать не будет
    3 избегай сложностей
    • Андрей К
      16 января 2017, 10:34
      ves2010, а тут идея не совсем в таймфрейме. _sk_ образно говоря вычисляет хорошие удары по рынку и смотрит, что дальше.
      • ves2010
        16 января 2017, 10:42
        Андрей К, еще раз… идея такая… если заработает на минутках то еще лучше будет работать на мелких таймфреймах… но будет полюбому хуже чем на тиковых тестах… в разы
      • ves2010
        16 января 2017, 10:46
        _sk_, счас скажу из опыта… берем ри… натягиваем сетку из лимитников с шагом 20 пунктов… сколько сделок(вход+выход) будет в минуту??? ответ 1.5-2… вроде шаг всего 20пунктов… а нужен и вход и выход… и в стакане дополна народу толкется… и всего 1.5 сделки…  сам ожидал большего
  • Андрей К
    16 января 2017, 10:36
     Если сделать прямой доступ на биржу, то первый пункт вычисляется наверняка, без каких либо предположений.
  • SoftAlgoTrade
    16 января 2017, 10:37

    Исходя из своего опыта могу сказать, что задержка при выставлении заявки и режим ее исполнения значительно влияют на результаты тестирования. Причем тест с «пробитием цены» дает максимально приближенный к реальной торговле результат.

    Посмотрите — Режимы исполнения заявок

  • Aleksey Smirnoff
    16 января 2017, 10:57

    Только реальный рынок скажет где правильно, а где нет.

    Запустить бота на реальном рынке и потом сопоставить ордера/сделки с ордерами/сделками в тестере за тот-же период.

  • Cristopher Robin
    16 января 2017, 11:35
    Основное, где находится ошибка, это допуск в 100мс, но и любое другое значение подходящим не будет. В результате, имея такие открытые параметры, нет никакого смысла бороться за точность.

    П.С. Весьма примечательно, что что у вас вызвали сомнения совсем не те аспекты, которые имеют значение и убивают эффективность. Именно так обычно и бывает.

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

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