Блог им. Buybuy

Вопрос по платформе, годной для HFT (specially for Eugene Logunov). Навеяно топиком fxsaber

Коллеги!

А есть ли на рынке коммерческое изделие, позволяющее тестировать стратегии на тиковых данных и размещать ордера на исполнение без косяков, в ценовой категории до $100k (аренда — до $5k)? Т.е. нужен терминал/тестер, оптимизатор не обязателен. CQG не предлагать.

Сам для пары пилотных HFT-проектов использую TSLab и MT5, параллельно ваяется своя енжина.
Оба приведенных продукта неплохо работают, пока мы не начинаем работать с задержками не больше минуты (скромно молчу про секунды и миллисекунды, про микросекунды даже не заикаюсь). Дальше оба продукта начинают грубо косячить, как на тесте, так и на исполнении.
Поддержка все всасывает, что-то корректирует, по чему-то явно отписывается, что не видит смысла вносить в продукт измененения и просит учитывать различия ручками и/или с помощью самописного софта.
Не хочу (и не буду) устраивать здесь говносрач продуктивное интеллигентное обсуждение указанных продуктов, но косяков в них полно (на малых таймфреймах), что-то лечится (напильником — реверс-инжиниринг и переписывание отдельных dll), что-то не лечится (лезть в ядро некошерно, да и незачем).

Так есть разумные по цене профессиональные решения? Или только ручками ab ovo?

С уважением за любой конструктивный ответ

P.S. Говнотерки продуктивное и интеллигентное обсуждение деталей конкретных продуктов поддерживать не буду. Не продаю, а покупаю.
P.P.S. Под нормальным продуктом понимается продукт с исчерпывающей документацией (хотя бы для программера)
★8
67 комментариев
насколько я знаю, у всех какой-то самопал на плюсах. Спасибо за пост, самой интересно узнать, вдруг я что-то пропустила.
avatar
Eugene Logunov, ну я косноязычный

Вообще-то я написал — а особенно к Вам
Если чем обидел — извиняюсь

С уважением

P.S. Речь идет о продаваемых или сдаваемых в аренду продуктах. Договоренность поюзать чужое проприетарное решение — это тот еще квест
avatar
Eugene Logunov, уважаемый

Все просто — в моменте LMAX (EURUSD, USDJPY, XAUUSD)
Есть еще немного крипты, но ее удалось победить через TSLab (правда, работы напильником потребовалось изрядно)

С уважением

P.S. В личку не написал, потому что решил (возможно ошибочно), что правильный ответ будет интересен не только мне
avatar
Позвольте поинтерисоваться, а в чем проблема тестирования с использованием тиковых данных?
зы. В целом, ведь любой фреймворк для тестирования позволяет этот делать, если у вас есть данные конечно.
avatar
Denis, легко

Отвечу — проблема не в данных, а в корректности исполнения лимитных ордеров на основании потока тиков (в случае обсуждаемых продуктов даже на основании потока минутных баров).

К примеру — Вы выставили лимитник по close предыдущего бара. У нового бара open лучше. Все известные тестеры (в т.ч. 2 из содержания топика) исполнят Ваш ордер по Open(NextBar). В жизни Вам, конечно, такого никто не позволит — раз решили купить по Close(PrevBar), то и нальют в реале по Close(PrevBar). И таких нюансов — 100500 штук.

С уважением
avatar
Мальчик Buybuy, хмм… возможно так и есть. Попробуйте глянуть бэктредер, возможно там будет ситуация лучше, хотя не уверен. 

Вы там еще про 100к написали… т.е. вы еще и объемы думаете учитывать? тогда наверное сложно будет что то найти…
avatar
Denis, уважаемый

Нет. Это была верхняя граница цены продукта

С уважением
avatar
Мальчик Buybuy, более того… ставишь лимитку например по 200… цена походит… упирается в 200, но не переходит через 200...

и сразу вопрос а будет ли сделка? тестировщик напишет что сделка была,
а в реальности все зависит от очереди в стакане 
avatar

ves2010, обычно принимается консервативное соглашение, что сделки не будет. Либо выносится эта настройка в параметры тестера.

avatar
ves2010, я всегда принимал, что выполняется покупка, если цена была на тик выше. Продажа — если на тик ниже цены в заявке. Но если объем больше 1 лота, и это может оказаться хуже реального исполнения. 
avatar
SergeyJu, хехе, уважаемый

Переходим на 1 левел ниже
В своем расчете Вы абсолютно правы
Я, конечно, подгружаю не только тиковую историю, но и историю бид/аск с объемами
И тут — вуаля — оказывается, что дискретность подгрузки тиков и бид/аск зависит от структуры внутреннего таймера тестера/терминала.
По-простому: новый бар не пришел — все недошедшие тики и биды/аски висят в сферическом вакууме. Пришел — падают сразу большой кучей.
Если это рынок — то я — балерина Большого Театра.

С уважением
avatar
Мальчик Buybuy, ну как бы я те больше скажу...
в реальных торгах сделки идут быстрее чем данные о цене...

т.е. ставим лимитку… она исполнилась и приходит сообщение, и только спустя некоторое время приходит цена… и как такое тестить?
avatar
ves2010, все просто

Стакан с объемами руками обрабатывать
Если, конечно, отсутствует опция last call у ММ

Ну т.е. что делать, примерно понятно
Неясно другое, то ли это я такой е"№; тый, то ли это никому не надо?

С уважением
avatar
Мальчик Buybuy, это надо всем! Просто мы сейчас находимся как до средневековья в тёмную эпоху. Когда любые научные знания прятались от всех в тёмных подвалах. На днях сидел всю ночь за столом с группой HFT-шников. Суть в том, что каждая команда тайно от других разрабатывает свой велосипед. Все попытки объединить труд упираются в сильные страхи. Платформа и система конкуренции стратегий — это и есть наше личное преимущество на рынке, говорят они.
Fry (Антон), это хня полная на мой взгляд

Грааль — в математических идеях и моделях рынка (IMHO)
Все остальное — колокейшн, короткие кабели, работа поверх/вместо протоколов — детские игрушки. Слишком много энтузиастов. Аппаратные преимущества в-основном выбраны лет 10 назад.

С уважением
avatar
ves2010, не пробовали пробивать уровень стопа из системы своим сайзом и «создавать» сигнал? ))) забавная штука  проскольз отрицательный ))
avatar
yurikon, мысль была, но ее технически сложно протестить
этим балуется брокерня, т.к они видят скопления стопов и их срывают
avatar
ves2010, Os.Engine имеет триггерную цену и цену ордера. Между ними разница на размер допускаемого проскальзывания. При достижении триггера ордер по цене триггер минус проскальзывание (или плюс, если шорт) идёт в стакан. В тестере анализируются тики и ордер или исполняется или отзывается через заданное кол-во секунд и автоматически выставляется новый, по заданным новым условиям. Имхо вполне вменяемая схема. 
avatar
Мальчик Buybuy, у меня ося на трейдах (считай что тиках) работает, нальет в тестере по цене следующего трейда. Свечки же можно вообще не прорисовывать. Исходный код там открытый, научить его «размазыванию» (закрытие «хвост селедки») можно. Бесплатно. Но для HFT не особо годится, хотя коннект к плазе имеется. Тестировщик раз в секунду рассчитывает, для Ultra-HFT не покатит
avatar
Мальчик Buybuy, «Все известные тестеры (в т.ч. 2 из содержания топика) исполнят Ваш ордер по Open(NextBar).»

Амиброкер по любой
limit_price=ref(c,-1)*0.999;
Buy=L<limit_price;
BuyPrice=limit_price;
т е можно цену задавать непосредственно в коде
avatar
Eugene Logunov, У меня нет опыта гонять тики на форексе. Так то можно все прогнать и в ТсЛаб или может AmiBroker, который не умрет под гигабайтами тиков. Но смысла то нет. Опускаясь на тики, мы попадаем в высококонрентную среду, где тесты не будут ничего иметь общего с реалом. Тут нужно подтягивать дату Level 2, типа стакан или лучший бид/аск.

А еще у них на форексе совершенно другие типы заявок вроде, которые тоже нужно уметь учитывать.
avatar
Eugene Logunov, уважаемый

Да я уже иду потихоньку по этому пути

Просто немного мучаюсь вопросом — делать ли чистый хэнд-мейд продукт (не так быстро, как кажется), или сэкономить время, купив работающий И ДОСКОНАЛЬНО ДОКУМЕНТИРОВАННЫЙ продукт.

Вопрос — а есть ли такие вообще в ценовой категории < 1 MB S-Klasse?)

С уважением
avatar

Мальчик Buybuy, если для себя, то зачем дока?) а если на продажу, то один точно не вывезешь, видел такое не раз, да и сам грешу.
До сих пор свой движок на Go дописать не могу))

ну а в плане тестов — хочешь тестить тики — тестируй на TAQ как минимум, а еще лучше на стаканах.

и еще совет — поищи опенсорсное на гитхабе на китайском. есть большая вероятность, что кто-то что-то уже написал

avatar
Почему-то никто ничего не сказал про S#. Года два назад когда задавались такие вопросы прежде всего все вспоминали именно про сток шарп.
Признаюсь честно! Я не в теме.
Fry (Антон), S# недешевое решение и с массой косяков

Интересно — могу дать ссыли на пару ресурсов, где его хвалят/ругают. Но в любом случае это черный ящик с массой странностей.
Полезнее o-s-a.net. Это опенсорс, но тоже вполне себе замысловатый.

С уважением
avatar
Мальчик Buybuy, в Осе код открыт и можно хоть все под себя переделать. И архитектурно она развивается
avatar
Fry (Антон), закрытый код и баги, для меня решило в пользу оси
avatar
1. Быстрые стратегии (секундные) точно протестировать практически невозможно. Причины Вы сами описали прекрасно. 
2. Можно написать Executer, который по реальному потоку Tick-ов и bid/ask — ов будет исполнять ордера. Получите некоторую приближенную оценку идеи.
3. Но лучше сразу переходить на реальные торги малым size-ом. И смотреть как происходит реальный execution.
Ведь главный плюс быстрых стратегий в том, что Вы сразу или, скажем мягче, в течение непродолжительного времени увидите и поймете работает идея или сразу в «топку». Вы сразу увидите все свои косяки и поймете мясо Вы или нет.
В 2011 — 2014гг я делал так, как в пункте 3. У меня было не очень много  сделок по сравнению с  современным уровнем. Примерно 1000 в день на RI.
Постепенно снижал к-во сделок. Остановился где-то на 320 — 350.
Это было оптимально для моих стратегий.
Ну а потом началось — Изменение шага цены, Увеличение комиссий.
Ухудшение performance. Значительное. Я понял, что это Тренд.
И завязал со своими быстрыми (секундными ) стратегиями.
Я желаю Вам успехом в этом направлении.
Но хочу подчеркнуть, что главные сложности не в том, чтобы что-то реализовать и протестировать, а в том, что простое какое-нибудь административное решение, например, очередное увеличение комиссии, навсегда уничтожит Ваш волшебный алгоритм окончательно и бесповоротно.
Всего хорошего.
avatar
_sg_, спасибо за доброе слово

1. Конечно, все протестировал (теория, тики, бид/аск)
2. Конечно, запустил бота на копейках
3. Конечно, увеличение комиссий убьет тему

Но технические вопросы все равно остаются

С уважением
avatar
Универсальные вещи всегда будут проигрывать решениям под конкретную задачу. 
Тестер без знания особенностей биржи, тоже бесполезен. Вот смотрите, тест простого маркет мейкера  на тиках на XBTUSD, биржа BITMEX. Можно подумать — грааль, если не знать, что в такие моменты биржа просто уходит в оверлоад и не принимает ордера.


avatar
yurikon, хм

Ну т.е. Вы попали своим ордером между лучшими бидом и аском и биржа Вас автоматом выкинула режектом ордера?
Странновато

С уважением
avatar
Мальчик Buybuy, для крипты это норма. Причём там всё в динамике меняется. Надо постоянно мониторить правила, но и не факт, что они соответствуют. Могут и задним числом обновить условия торговли.
Fry (Антон), вот тут я не согласен

С моей точки зрения на уровне микроструктуры рынка единственное отличие крипты от обычных рынков — в модели маркетмейкинга. Рибейты сильно влияют на поведение цены на малых таймфреймах — это да.

С уважением
avatar
Нет, просто в такие моменты биржа не принимает ордера вообще. Это как первая секунда на фортсе- висит груша, нельзя скушать )))
Если нужно hft, только своё пилить с учётом всех особенностей.
avatar
yurikon, это нормально

Если биржа в моменте не приняла ордер — потеряли 2 операции
Если она сделала это 100500 раз подряд — это помойка, а не биржа

С уважением
avatar
Использую надстройку над MT5-тестером (выкладывал). Исполнение происходит ровно по тем правилам, какие задашь.

Если делать для прогонов по одному символу, то такая надстройка пишется за один вечер. Если придумывать навороты — неделя максимум.

Все, что нужно от MT5-Тестера — его внутренний таймер, подача тиков, облачный оптимизатор.

Надстройка — только учет исполнения.

Такое ощущение, что программеры некомпетентны. Не нужны никакие DLL или разборки с MQ, чтобы из MT5-тестера сделать то, что хочется.
avatar

fxsaber, когда Вам прикроют обнаруженную лазейку — только вопрос времени. =)

avatar
ch5oh, поясните.
avatar
fxsaber, хм

А есть уверенность, что его внутренний таймер корректно работает?
Есть определенные сомнения по этому поводу...

С уважением
avatar
Мальчик Buybuy, давайте на примере все же. Если хотите не просто поговорить.
avatar
fxsaber, не

Я изначально обещал, что с моей стороны дискуссий не будет.
С другой стороны, Вы неплохо знакомы с работающим на меня программистом — вместе активно долбили поддержку МТ5 1-1.5 года назад.

С уважением 
avatar
Мальчик Buybuy, зачем устраивать дискуссию, если достаточно просто показать пример проблемы? Иначе получается, что заявляете о наличии проблем, но не озвучиваете их.

Многие люди работают с поддержкой. Информация по программисту ни о чем.
avatar
fxsaber, Ок

Я не хотел троллить Ваш предыдущий пост, поэтому старался заранее уйти от обсуждений.
Более-менее полный список косяков  конкретно МТ5 должен быть готов примерно во 2-й половине ноября. Если Вы не против — попробую выложить его здесь на публичное обозрение.

С уважением 
avatar
Мальчик Buybuy, только ЗА.
avatar
fxsaber, мт5 умеет работать напрямую со шлюзом биржи или только через сервер брокера?
avatar
yurikon, есть два режима работы MT5.

1. Как полноценная торговая платформа. Тогда прокладка в виде сервера обязательна.

2. В виде урезанного торгового Терминала. Когда пишется фидер, который торговое окружение биржи (для крипты так делается часто) отображает в виде кастомных символов и торгового состояния счета. Это делается напрямую через API биржи.

А торговый робот запускается на кастомном символе с минимальными изменениями. Все работает почти так же, как на родном символе для робота. Только отправка ордеров идет через «фидер обратной связи».

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

Так в одном Терминале MT5 можно торговать одновременно много бирж, например.

avatar
NinjaTrader 8
avatar
Если честно, то я врядли что-то могу дельное Вам подсказать. Ваш HFT принесёт выхлоп только если Вы маркетмейкер и планируете собирать объёмы. В противном случае тики вообще бесполезны — меньше пяти минут смысла лезть нету.
avatar
bozon, анализирую только тики и для толстокожих ТС. Бары ни к чему, если есть тики.
avatar
bozon, заинтриговали Вы своим хфт. Их технологии так или иначе сводятся в очень короткий опцион атм (t=1 минута и больше). Не понятно только что к чему торговать:)) И расчитать потенциальную доходность можно только на истории (нет такой q, которая *t). А так и квик вполне подойдёт.
avatar
Сам написал себе тестер.
avatar
NinjaTrader 8 не подойдет, интересно?
avatar
Посмотрите на
www.deltixlab.com/products/
с Россией похоже не работают, веб сайт открывается через VPN
когда-то читал их документацию, выглядит солидно. Но дорого
avatar
в таком масштабе времени все привычные для вас представления перестают работать, поэтому не существует и не может существовать специального годного софта для хфт. В хфт исполнение это часть алгоритма и софт пишется под алгоритм.
avatar
Cristopher Robin, да ладно

У меня в моменте 2 базовые системы — 344 сделки/сутки и 500 сделки/сутки.
Настоящие HFT-шники со мной даже с"№ть не сядут )))
Просто качество текущих (российских? доступных?) терминалов потихоньку пробивает уровень плинтуса...

С уважением
avatar
Мальчик Buybuy, настоящие хфтшники может и не сядут, но по бюджетам похоже что вы с ними не сядите. Напишите мне, пока у вас деньги не закончились.
avatar
В Jatotrader есть механизм тестирования на тиках который с реалом совпадает на более чем 100%, т.е. сделки на реале совершаются чаще чем на тестере. Просто реализован механизм строгого исполнения заявки на ценовом уровне. Заявка считается исполненной если цена после выставления заявки  была на тик лучше цены заявки и объем, прошедший по этой цене больше или равен объему заявки. Если меньше, то часть заявки останется неудовлетворенной. На счет ХФТ не знаю но порядка 3000 сделок за день по инструменту с тестом идут один в один, иногда чаще, по вышеуказанным причинам
avatar
Евгений Шибаев,
 Заявка считается исполненной если цена после выставления заявки  была на тик лучше цены заявки
 
Правильно ли я понял, что выставляя заявку например 
«Buy 1 SiZ9 @65500 Limit»
Вы считаете исполнение когда Price = 65499 ?
Если это так, то на мой взгляд, получается искусственное приписывание себе 1  MinStep в плюс. Что существенно влияет на результаты тестов в сторону улучшения.
Допускаю, что я что-то не понял в Вашем комментарии.
avatar
_sg_, да, понимаете правильно только приписки нет — ордер считается исполненным по цене выставления Limit 65500
avatar
Евгений Шибаев, пробовал так же два режима исполнения: по касанию, по пересечению ценой лимитника. Варианты дают разные результаты, поэтому смотрю на OrderOpenPriceBest (наилучшая цена открытия за время жизни позиции) и OrderOpenPriceLength (суммарная длительность цен лучше цены открытия за время жизни позиции). В зависимости от этих показателей, принимаю решение, какой тип исполнения выбрать.

Идеально только касаться редко получается, поэтому для Тестера оставляю исполнение по касанию. На реале при первом касании может не исполниться, зато в виртуальном исполняется и уже держится лимитка на этом уровне, пока на реале не исполнится, либо пока в виртуале не закроется поза.
avatar
fxsaber, 
лично я делал по касанию с Random.
Замедляет немного весь процесс.
Но я считаю это лучше пересечения.
avatar
_sg_, при рэндоме одинаковые проходы выдают разные результаты. Задавал по i-му касанию или по времени жизни тика. В общем, вариантов может быть масса. Главное, чтобы была простая возможность их реализовывать. Поэтому со своим решением (случай, когда не так страшен черт, как его малюют) лучше всего. Сделал на базе MT5-Тестера. Легко и эффективно получилось.
avatar

теги блога Мальчик buybuy

....все тэги



UPDONW
Новый дизайн