Избранное трейдера Burzhui
Метод ГП по своим свойствам потенциально мог бы являться универсальным методом поиска алгоритма оптимизирующего заданную целевую функцию. И я как любитель эволюционной оптимизации не мог пройти мимо такой заманчивой идеи.
Торговый алгоритм ищу в виде набора элементарных функционалов. Каждый функционал может иметь любое количество входов и по крайней мере один выход. Вход и выход характеризуется типом данных. Выход одного функционала может быть подан на вход другого при условии, что тип данных входа и выхода совпадает.
Например, функционал вычисления минимума/максимума в заданном окне получает на вход интересующую величину и значение размера окна, а также имеет 4 выхода: минимум/максимум, позиция точки минимума/максимума в окне.
ГП должен подобрать функционалы и связать их входы и выходы так, чтобы в итоге получился единственный выход типа сигнал (сигнал есть либо нет), который и будет являться сигналом на покупку/продажу. Связанные функционалы с общем случае образуют граф. Целевой функцией является критерий Шарпа с поправкой — наказанием за информационную сложность алгоритма.
Сейчас я попробую разложить торговлю по полочкам, вычленить независимые составляющие и их проанализировать.
Пусть у нас есть торговый алгоритм, который выдает приказ на покупку или продажу. Для выхода используем тупой алгоритм типа таймаут, случайный выход, выхода по стоп-лосс, тейк-профит, трейлинг-стоп и т.п. Комиссию не учитываем.
Обозначим рекомендацию алгоритма O[i] = -1, 0, 1, где i — номер потенциальной сделки. -1 соответствует рекомендации продать, 1 — купить, 0 — ничего не делать. Объем сделки обозначим V[i] >= 0.
Результат сделки и при единичном объеме и при условии что только покупаем обозначим R[i]. Будем считать что на рынке на всем периоде торговли нет устойчивого тренда вверх т.е. стратегия “купил и держи” в среднем прибыли/убытка не приносит. Тогда матожидание (M) от произвольной сделки на покупку равно нулю M(R[i])=0.
Итого, мы разделили торговлю на три независимые составляющие:
Статья о загрузке внутридневных котировок от поставщика данных IQFeed на языке Python опубликована в блоге www.quantstart.com. DTN IQFeed — популярный вендор, поставляющий данные со многих американских и европейских рынков по широкому спектру инструментов. Тем трейдерам, кто практикует алгоритмическую торговлю на зарубежных площадках или использует данные с них для поиска корреляций с российскими активами, будет очень полезен нижеследующий перевод.
С IQFeed возможно получение данных через сокет соединение к локальному серверу IQLink, который предоставляется при создании аккаунта у этого поставщика данных. В этой статье мы будем использовать потоковое сокет соединение на языке программирования Python для буферизации данных и создадим файл CSV с внутридневной маркет датой для американских акций.
Продолжая тему тестирования алгоритма Маркет Мэйкера, поделюсь своими результатами и мыслями по его работе:
1. Основной режим работы алгоритма — это маркетмэйкинг (он же арбитраж ликвидности, он же торговля спредом). И конечно же, прибыльность этой стратегии сильно зависит от рыночных условий, скорости получения данных и работы системы исполнения. Средняя прибыль на сделку даже и при идеальном исполнении не будет превышать значение спреда (2-5 пунктов по Si в среднем). А в период сильной волатильности, когда стакан бросает из стороны в сторону на 10-30 пунктов, несмотря на большое количество положительных сделок ( около 70%), алгоритм становится убыточным. В основном из-за комиссий, конечно.
2. Да, математические формулы сильно ограничили многих желание понять, как устроен алгоритм. Но на самом деле, если вдумчиво посмотреть картинки (карты политик), получается все ясно и просто. А будет еще проще, если посмотреть картинки графиков из других статей, лежащих в основе алгоритма (например Guilbaud, Fabien, and Huyen Pham, 2013, Optimal high-frequency trading with limit and market orders). Забудем на минутку про дисбаланс бид/акс объемов и построим карту политик для открытой позиции при разных значениях спреда:
Продолжение. Начало в моем блоге и на сайте.
В прошлой статье про модель Хестона мы отметили, что она обладет недостатком, который проявляется в неточности определения цен опционов на малых сроках экспирации. Здесь мы рассмотрим модель Бейтса, в которой этот недостаток устранен, и она является одной из лучших аппроксимаций, описывающих поведение цен опционов для разных страйков и периодов до экспирации.
Модель Бейтса относится к моделям стохастической волатильности и определятся следующими уравнениями: