В цикле статей "Алгоритмы маркетмейкера" в пятой части был размещен мой код на C# для реализации стратегии оптимального управления ордерами. Пользователь сайта Eskalibur обнаружил в нем несколько ошибок, которые значительно влияли на результат, и доработал алгоритм до полного соответствия оригинальной статье. Его код я поместил в конце пятой части цикла статей (см. также комментарии к ней). Прошу всех, кто пробует применять эту стратегию, использовать именно этот листинг.
Хочу выразить благодарность за проделанную работы Eskaliburу и пользователю r0man, который также работает в направлении практического применения алгоритма. Думаю, у них все обязательно получится, и по результатам разместим отдельную статью на сайте.
Основные принципы увеличения прибыльности алгоритмов автоматизированной торговли изложены в блоге Inovancetech. Представляю здесь перевод этой статьи. В ней использованы некоторые алгоритмы и результаты цикла про машинное обучение (часть 1, часть 2).
После построения алгоритма, вам нужно убедиться, что он робастен и будет генерировать прибыльные сигналы при реальной торговле. В данном посте мы представим 3 легких способа увеличить производительность вашей модели.
Прежде чем улучшать модель, вы должны определить базовую производительность стратегии. Самый лучший способ сделать это — протестировать модель на новых исходных данных. Однако, вы всегда владеете довольно ограниченным набором данных, несмотря на их множество, предоставляемое финансовыми институтами. Значит, вы должны тщательно обдумать, как использовать имеющийся набор. По этим причинам, самое лучшее — разделить его на три отдельных части.
Существует класс алгоритмов, основанных на корелляции цен активов на разных рынках. Для того, чтобы исследовать такие корелляции, например, между американским и российским рынком, необходимо иметь доступ к данным в реальном времени с западных бирж, поставку которых предлагают специальные провайдеры за довольно существенную плату.Однако, есть возможность использования вместо платного датафида парсинг данных real-time с сайта Google Finance. На таких данных высокочастотную стратегию, конечно, не построить, но для более медленных стратегий такой способ вполне подойдет. Впрочем, на высоких частотах сильной корелляции с американцами уже давно нет, и HFT алгоритмы с такой идеей не работают, а вот на длинных промежутках времени есть очень широкое поле для исследований. Как осуществить получение данных с Google Finance рассмотрено в блоге
Окончание. Начало см. в блоге и на моем сайте.
В этой, последней части цикла разберем пример вычисления PIN с применением языка R. Кроме библиотеки PIN языка R будем использовать также библиотеку highfrequency.
Для примера автор берет сгенерированные данные, которые соответствуют формату TAQ — стандарт для акций NYSE. Данные состоят из двух наборов — временной ряд ценового котирования (sample_qdata) и сделки (sample_tdata) и предоставляются в открытом доступе вместе с библиотекой highfrequency.
Нужно отметить что используемые данные взяты только за один торговый день. Обычно, для вычисления PIN применяют больший набор данных, не менее, чем за 60 дней, чтобы выборка была достаточной для правильного определения параметров. Наши данные нужны только для демонстрации процесса получения PIN. Библиотека PIN позволяет это сделать для выборки с любой размерностью, что позволяет применять ее и для высокочастотной торговли. Пример, приводимый здесь, может быть легко расширен для вычисления на другом временном горизонте, большим, чем один торговый день.
В прошлой части мы рассмотрели теоретическую модель, лежащую в основе вычисления вероятности присутствия на рынке информированных трейдеров PIN. Продолжим с эмпирической реализации этой модели.
Для уменьшения пространства параметров модели, обычно предполагают, что частоты прихода ордеров на продажу ϵs и на покупку ϵb равны. В день «хорошей новости» вероятность наблюдения последовательности сделок купли и продажи соответствует:
, где B и S — число сделок купли и продажи соответственно.
В нескольких статьях мы рассмотрим использование индикатора PIN, который представляет собой вероятность присутствия на рынке так называемых информированных трейдеров. Статьи основаны на работе Paolo Zagaglia "PIN: Measuring Asymmetric Information in Financial Markets with R". Так как вероятность информированной торговли зависит от сделок купли и продажи в течение рабочего дня, в данном цикле мы рассмотрим весь процесс, от обработки исходных данных и вычисления вероятности информированной торговли, до определения параметров лежащей в основе математической модели. Примеры будут сопровождаться кодом на языке R.
Рост в последние годы алгоритмической и высокочастотной торговли открыл тот факт, что динамика биржевых цен сильно зависит от микроструктуры рынка. В частности, некоторые трейдеры могут иметь доступ к приватной информации о торгах, в то время как другие довольствуются только публичными новостями. Риск того, то неинформированный трейдер может в какой-то момент времени столкнуться в качестве контрагента в сделке с информированным, является одним из параметров, определяющих цену актива. Таким образом, измерение вероятности того, что контрагент владеет ассиметричной информацией, позволяет правильно вычислить цену.
В заглавии поста график прибыли моего робота ( его описание см. здесь) в процентном отношении от начального капитала за май (отделен красной чертой от результатов прошлого месяца). Результаты не впечатляют, прибыль около 1,5% всего за месяц. Май был очень слабо волатилен, Si практически стоял на месте. Пришлось ближе к середине месяца, после просадки, определить самые волатильные часы в течение дня, и затем робот работал только в эти периоды. Это позволило изменить тенденцию, а ближе к концу месяца ликвидность потихоньку стала восстанавливаться, и эквити пошла вверх.
Параллельно разрабатывал высокочастотную стратегию, основанную на одной из моделей, которые представлены или будут:) представлены на моем сайте. Основной каркас программы вновь сделан на основе
После рассмотрения основ машинного обучения в первой части, мы перейдем к примеру использования наивного байесовского классификатора для предсказания направления движения цены акций Apple. Сначала разберем основные принципы работы наивного байесовского классификатора, затем создадим простой пример использования дня недели для предсказания направления цены закрытия — выше или ниже текущей, а в окончании построим более сложную модель, включающую технические индикаторы.
Что представляет собой наивный байесовский классификатор (НБК)?
НБК старается найти вероятность события А при условии, что событие В уже произошло, обзначаемую как Р(А|B) (вероятность А при условии В).
В нашем случае, мы должны спросить: какова вероятность того, что цена возрастет, при условии, что сегодня — среда? НБК берет во внимание обе вероятности — общую вероятность роста цены, то есть число дней, когда цена закрытия была выше цены открытия относительно всех рассматриваемых дней, и вероятность роста цены при условии, что сегодня среда, то есть сколько прошедших сред имело цену закрытия выше цены открытия?
В последнее время приобретают все большую популярность алгоритмы машинного обучения. Они применяются для решения задачи классификации входных данных, или, проще говоря, выявления паттернов в структуре этих данных. Небольшой цикл статей про машинное обучение опубликован на сайте inovancetech.com, здесь я представляю их перевод.
В этой серии статей мы рассмотрим построение и тестирование простой стратегии машинного обучения. В первой части отметим основные принципы машинного обучения и их применение к финансовым рынкам.
Машинное обучение становится одной из самых многообещающих областей в алгоритмической торговле за последние два года, но имеет репутацию слишком сложного математического подхода. В действительности это не столь трудно в практическом применении.
Цель машинного обучения (МО) в том, чтобы правильно смоделировать исторические данные, и затем использовать эту модель в предсказании будущего. В алгоритмической торговле применяется два типа МО:
В прошлой части нами было сделано наблюдение, что для присутствующих на рынке высокочастотных алгоритмов характерна высокая частота отмены биржевых ордеров. В данной статье мы уделим внимание еще одной особенности HFT роботов — малому объему ордеров, генерирумых подобными стратегиями.
Автоматические стратегии стараются отсылать биржевые приказы, которые содержат небольшие количества акций или лотов. Маркет мейкеры делают это для того, чтобы выборочно торговать с небольшими контрагентами, обходя сильные движения, вызываемые крупными покупками или продажами. Исполнительные алгоритмы отсылают небольшие ордера, чтобы скрыть свои намерения о реализации крупных объемов, избегая тем самым сильного воздействия на цену. Чтобы проверить, действительно ли существуют описанные тенденции на рынке, построим график движения цены, с точки зрения пассивной стороны трейда, после взятия всех ордеров на конкретном уровне для двух ситуаций — когда малые ордера принимают участие в данном трейде, и когда их нет. За малый объем ордера примем 2 целых лота и менее: