Прошлая часть — см. в моем блоге.
В этой части разберем технику улучшения производительности стратегии, использующую множество моделей.
Одним из наиболее мощных методов улучшения прибыльности вашей модели является объединение нескольких алгоритмов в так называемое «множество». Теория состоит в том, что комбинируя разные модели и их предсказания, мы получаем более робастные результаты. Тесты показывают, что даже объединение простых моделей может быть производительнее более сложной, но единственной стратегии.
Существует три основных техники объединения:
Смешивание:
Смешивание основано на создании моделей, прогоняемых на немного различных тренировочных наборах и усреднения их результатов для получения одного предсказания. Тренировочный набор переделывается путем повторения или удаления вхождений данных, в результате чего получается несколько разных наборов. Этот процесс работает хорошо для нестабильных алгоритмов (например, деревья решений) или, если присутствует определенная степень случайности в процессе создания моделей ( как, например, начальные веса в нейронных сетях). Получив усредненное предсказание для коллекции моделей с высоким значением подгонки, мы можем уменьшить результирующую подгонку без увеличения недооценки, что приведет к лучшим результатам.
В цикле статей "Алгоритмы маркетмейкера" в пятой части был размещен мой код на C# для реализации стратегии оптимального управления ордерами. Пользователь сайта Eskalibur обнаружил в нем несколько ошибок, которые значительно влияли на результат, и доработал алгоритм до полного соответствия оригинальной статье. Его код я поместил в конце пятой части цикла статей (см. также комментарии к ней). Прошу всех, кто пробует применять эту стратегию, использовать именно этот листинг.
Хочу выразить благодарность за проделанную работы Eskaliburу и пользователю r0man, который также работает в направлении практического применения алгоритма. Думаю, у них все обязательно получится, и по результатам разместим отдельную статью на сайте.
Основные принципы увеличения прибыльности алгоритмов автоматизированной торговли изложены в блоге Inovancetech. Представляю здесь перевод этой статьи. В ней использованы некоторые алгоритмы и результаты цикла про машинное обучение (часть 1, часть 2).
После построения алгоритма, вам нужно убедиться, что он робастен и будет генерировать прибыльные сигналы при реальной торговле. В данном посте мы представим 3 легких способа увеличить производительность вашей модели.
Прежде чем улучшать модель, вы должны определить базовую производительность стратегии. Самый лучший способ сделать это — протестировать модель на новых исходных данных. Однако, вы всегда владеете довольно ограниченным набором данных, несмотря на их множество, предоставляемое финансовыми институтами. Значит, вы должны тщательно обдумать, как использовать имеющийся набор. По этим причинам, самое лучшее — разделить его на три отдельных части.
Существует класс алгоритмов, основанных на корелляции цен активов на разных рынках. Для того, чтобы исследовать такие корелляции, например, между американским и российским рынком, необходимо иметь доступ к данным в реальном времени с западных бирж, поставку которых предлагают специальные провайдеры за довольно существенную плату.Однако, есть возможность использования вместо платного датафида парсинг данных real-time с сайта Google Finance. На таких данных высокочастотную стратегию, конечно, не построить, но для более медленных стратегий такой способ вполне подойдет. Впрочем, на высоких частотах сильной корелляции с американцами уже давно нет, и HFT алгоритмы с такой идеей не работают, а вот на длинных промежутках времени есть очень широкое поле для исследований. Как осуществить получение данных с Google Finance рассмотрено в блоге
В прошлой части нами было сделано наблюдение, что для присутствующих на рынке высокочастотных алгоритмов характерна высокая частота отмены биржевых ордеров. В данной статье мы уделим внимание еще одной особенности HFT роботов — малому объему ордеров, генерирумых подобными стратегиями.
Автоматические стратегии стараются отсылать биржевые приказы, которые содержат небольшие количества акций или лотов. Маркет мейкеры делают это для того, чтобы выборочно торговать с небольшими контрагентами, обходя сильные движения, вызываемые крупными покупками или продажами. Исполнительные алгоритмы отсылают небольшие ордера, чтобы скрыть свои намерения о реализации крупных объемов, избегая тем самым сильного воздействия на цену. Чтобы проверить, действительно ли существуют описанные тенденции на рынке, построим график движения цены, с точки зрения пассивной стороны трейда, после взятия всех ордеров на конкретном уровне для двух ситуаций — когда малые ордера принимают участие в данном трейде, и когда их нет. За малый объем ордера примем 2 целых лота и менее: