Продолжаю серию статей. Начало тут http://smart-lab.ru/blog/310895.php
Итак, у нас имеется история в виде набора упорядоченных по времени тиков, но используем мы только данные цены. Перед началом проведем подготовку данных (как я называю «упаковку тиков»). Например, есть исторический отрезок со следующими данными (окончание сессии от 12.02.2016 по ESH16):
Как мы видим множество соседних тиков, имеют одинаковое значение цены, что создает «избыточность данных». Если мы оставим только те последовательные тики, цена которых отличается от предыдущего, то количество данных ощутимо сократиться:
Это я и называю упаковкой тиков. Но на самом деле такой способ упаковки удобен для дата-майнинга, для симуляции на истории удобен способ «меньшего сжатия», когда мы оставляем только те последовательные тики, цена которых отличается от предыдущих. Или тики, которые по времени отстоят от предыдущего более чем на 1 секунду. Это необходимо при симуляции выставления и исполнения ордеров. И также дает нам биржевое время, с точностью до секунды, для функционирования работа в режиме симуляции по истории. В этом случае картинка будет следующей:
Итак, данные подготовлены и можно приступить к «описанию и поиску простейших паттернов» (этот блок служит для ввода в курс дела, а не отражает практический способ). Например, имеется некоторый паттерн, представленный на следующем рисунке:
Паттерн выделен оранжевым цветом. Какая особенность алгоритма необходима для его выявления? Это то, что он должен искать паттерн при поступлении каждой порции данных. Паттерн может начаться с любого тика, и закончится на любом. Т.е. поиск в данном случае будет представлять «трафарет»:
Подставляемый для каждого тика в последовательности, и при совпадении с которым паттерн считается «опознанным» (Т.е. трафарет как-бы скользящий).
Представленный пример достаточно сильно утрирован, в реальности трафарет не столь «жёсткий» и возможно бы включал в себя и следующие представления:
P.P.S
Формирование следующих статей цикла будет производиться по мере наличия времени и желания ;)
Всем успехов в торговле!
Решил написать цикл статей про алгоритмическую торговлю с моего взгляда и опыта, как я это вижу и применяю, т.е. буду описывать мой субъективный взгляд ;) Начну с самых простых вещей и буду двигаться к более сложным…
P.S. Описание содержит (или отталкивается от) практику торговли фьючерсами на CME
Исходные данные:
Все, что у нас есть это исторические данные, даже наш опыт это тоже «исторические данные» в известном смысле, и будущего не знает никто. Поэтому работаем только от истории. Поступающие в реальном времени данные, тут же становится историческими т.к. уже случились.
Наша задача – найти закономерности на имеющейся истории, дающие статистическое преимущество и эксплуатируя их получать профит. Но сами «закономерности» должны обладать определенными свойствами. Например, любая закономерность должна область определенной степенью «стационарности» (стабильности), что бы она могла дать нам себя поэксплуатировать, (об этом я расскажу в будущих статьях). Еще одно из таких свойств – техническая возможность ее эксплуатировать, но это больше касается HFT, а этот цикл не о высокочастотной торговле.
Всем привет.
Решил выложить в открытый доступ базу данных тиков с CME, которая накапливалась за последние годы, и обновляется по итогу дня.
85.25.211.62
login: smartlab
pass: smartlabpass
Ссылки на торрент: http://ge.tt/1Ql8j3Y2
№2: app.box.com/s/h0dhmkif0fhnvlpzdp8ma89c1ysv876t
seconds (int32) — кол-во секунд с начала суток по Чикаго.
milliseconds (int32)
price (int32)
volume (int32)
bestBidPrice (sbyte) — расстояние в тиках между price и реальной ценой BidPrice
bestAskPrice (sbyte) - расстояние в тиках между price и реальной ценой AskPrice
bestBidSize (int32) — доступно с июня 2015
bestAskSize (int32) - доступно с июня 2015
Создаем класс Tick:
Большинство, наверное, обратило внимание на рост золота в последнее время. Особенно бурным этот рост был в последние три дня. В отличие от золота, серебро не так сильно выросло за это время, хотя имеет высокую корреляцию с золотом и, как правило, растет быстрее золота.
В сложившейся ситуации очень привлекательной становится идея покупки спреда серебро/золото или продажи апрельского фьючерсного контракта на золото и покупки майского контракта на серебро. Почему майского, а не ближайшего мартовского, дальше попробую объяснить.
Хотя, покупка спреда считается менее рискованной, чем открытие отдельной направленной позиции, риски все же существуют, и они могут быть существенными для относительно небольшого торгового счета. В статье уважаемого Bampi_Johnson «Золотой век. Взгляд на перспективу» от 17 октября 2015 года (http://smart-lab.ru/blog/285003.php) есть график Gold/Silver Index, из которого видно, как менялось соотношение золото/серебро на протяжении последних 25 лет. От 100 в начале 1991 года до 30 на пике цен на серебро в мае 2011-го. Сейчас это соотношение чуть больше 78, что довольно много. Фактически, спред находится на годовых максимумах. Если проанализировать это соотношение за прошлый год, то можно заметить, что оно менялось от 78 на максимумах в августе до 68,9 на минимумах в мае. Если брать за основу последний аптренд, то 3 декабря 2015 года этот коэффициент составлял 75,5. Сейчас, напомню, более 78.