Продолжаю серию статей. Начало тут http://smart-lab.ru/blog/310895.php
Итак, у нас имеется история в виде набора упорядоченных по времени тиков, но используем мы только данные цены. Перед началом проведем подготовку данных (как я называю «упаковку тиков»). Например, есть исторический отрезок со следующими данными (окончание сессии от 12.02.2016 по ESH16):
Как мы видим множество соседних тиков, имеют одинаковое значение цены, что создает «избыточность данных». Если мы оставим только те последовательные тики, цена которых отличается от предыдущего, то количество данных ощутимо сократиться:
Это я и называю упаковкой тиков. Но на самом деле такой способ упаковки удобен для дата-майнинга, для симуляции на истории удобен способ «меньшего сжатия», когда мы оставляем только те последовательные тики, цена которых отличается от предыдущих. Или тики, которые по времени отстоят от предыдущего более чем на 1 секунду. Это необходимо при симуляции выставления и исполнения ордеров. И также дает нам биржевое время, с точностью до секунды, для функционирования работа в режиме симуляции по истории. В этом случае картинка будет следующей:
Итак, данные подготовлены и можно приступить к «описанию и поиску простейших паттернов» (этот блок служит для ввода в курс дела, а не отражает практический способ). Например, имеется некоторый паттерн, представленный на следующем рисунке:
Паттерн выделен оранжевым цветом. Какая особенность алгоритма необходима для его выявления? Это то, что он должен искать паттерн при поступлении каждой порции данных. Паттерн может начаться с любого тика, и закончится на любом. Т.е. поиск в данном случае будет представлять «трафарет»:
Подставляемый для каждого тика в последовательности, и при совпадении с которым паттерн считается «опознанным» (Т.е. трафарет как-бы скользящий).
Представленный пример достаточно сильно утрирован, в реальности трафарет не столь «жёсткий» и возможно бы включал в себя и следующие представления:
P.P.S
Формирование следующих статей цикла будет производиться по мере наличия времени и желания ;)
Всем успехов в торговле!
Решил написать цикл статей про алгоритмическую торговлю с моего взгляда и опыта, как я это вижу и применяю, т.е. буду описывать мой субъективный взгляд ;) Начну с самых простых вещей и буду двигаться к более сложным…
P.S. Описание содержит (или отталкивается от) практику торговли фьючерсами на CME
Исходные данные:
Все, что у нас есть это исторические данные, даже наш опыт это тоже «исторические данные» в известном смысле, и будущего не знает никто. Поэтому работаем только от истории. Поступающие в реальном времени данные, тут же становится историческими т.к. уже случились.
Наша задача – найти закономерности на имеющейся истории, дающие статистическое преимущество и эксплуатируя их получать профит. Но сами «закономерности» должны обладать определенными свойствами. Например, любая закономерность должна область определенной степенью «стационарности» (стабильности), что бы она могла дать нам себя поэксплуатировать, (об этом я расскажу в будущих статьях). Еще одно из таких свойств – техническая возможность ее эксплуатировать, но это больше касается HFT, а этот цикл не о высокочастотной торговле.