Алгоритмический трейдинг 101 - Урок 5: Больше машинного обучения

В нашем последнем уроке мы представили контролируемые, неконтролируемые и частично контролируемые алгоритмы машинного обучения. Как уже говорилось, алгоритмы машинного обучения имеют большие преимущества, связанные с автоматическим выполнением. Тем не менее, по-прежнему необходимо учитывать гуманистические решения. Как и в случае с другими подходами к алгоритмической торговле, не существует единого правильного метода - разные типы данных и / или целевые функции работают лучше или хуже в соответствии с конкретными типами алгоритмов машинного обучения. Чтобы найти оптимальное решение для вашего варианта использования, методы необходимо постоянно тестировать на исторических данных.

Фреймворк машинного обучения

В этом уроке мы более подробно рассмотрим некоторые конкретные техники. По мере продвижения вниз по списку следует помнить об общих принципах. При создании алгоритма машинного обучения:

  1. Во-первых, обработка данных должна быть совместима с выбранной вами техникой машинного обучения.
  2. Используйте алгоритм машинного обучения для генерации прогнозируемых значений на вашем обучающем наборе - подмножестве данных, которые вы хотите использовать для начальной калибровки модели.
  3. Сравните предсказанные значения с истинными значениями, чтобы создать функцию остаточной ошибки.
  4. Итерировать! Обновите параметры и перезапустите модель, чтобы минимизировать эту функцию ошибок.
  5. Оптимизируйте и проверьте алгоритм для создания доверительных интервалов.
  6. Наконец, используйте свой «окончательный» алгоритм на тестовых данных и запускайте его в производство.

Типы алгоритмов машинного обучения

Наивный Байесовский

Этот метод полезен при определении вероятности категориальных классификационных переменных. Например, если цена Ethereum снижалась в течение последних двух дней, какова вероятность того, что цена вырастет сегодня? Наивный в этом контексте означает, что все переменные независимы друг от друга, а Байесовский относится к теореме Байеса, которая связывает условные вероятности.

Математически алгоритм Наивного Байеса выглядит следующим образом:

Вот пример модели, в которой время дня используется в качестве события и указывается, выросла или уменьшилась цена в соответствии с событием:

Таким образом, если задано время утро, у нас более высокая вероятность снижения цены. Хотя в этом примере используется дискретная случайная величина, мы также можем моделировать более сложные распределения вероятностей - скажем, Гаусса, Бернулли или Пуассона. Однако формула Наивного Байеса останется прежней, будет отличаться только расчет индивидуальных вероятностей.

Чтобы использовать эту модель для торговли, вам нужно решить, на каком уровне вероятности вы достаточно уверены, чтобы действовать в соответствии с этим прогнозом. В этом примере является ли 60% вероятность того, что цена упадет утром, достаточно высока для того, чтобы вы смогли продать свои позиции?

Подробнее о наивном байесовском алгоритме см. В этой статье (Наивная байесовская классификация с помощью Sklearn). Кроме того, в этом GitHub есть реализация наивного байесовского языка на Python, которая может быть адаптирована к вашим потребностям.

Обработка естественного языка

Сегодня цены на активы колеблются в зависимости от новостей. Статьи, твиты и другой контент могут путешествовать по миру за секунды. Трейдеры часто читают заголовки и принимают решения по своим позициям на основе интерпретируемых настроений. Однако время для человеческого разума читать, обрабатывать и торговать на основе заголовка часто может быть слишком медленным. Обработка естественного языка (NLP) - обучение компьютеров чтению слов и фраз и пониманию их значения - может помочь повысить скорость реакции трейдеров. Кроме того, эффективный алгоритм может автоматически занимать соответствующие позиции на основе новостей.

Предположим, есть статья, в которой говорится: «ZRX переживает бум после того, как управляющий фондом купил долю». Если человек прочитает это предложение, он поймет, что смысл этого предложения подразумевает, что ZRX будет расти в цене.

Алгоритм НЛП мог бы разобрать это предложение на:

  • Тема words = «ZRX» и «управляющий фондом»
  • Ключевые слова = «быстро растут» и «покупаются».
  • Заполнитель words = «есть», «после» и «ставка».

Затем алгоритм работает аналогично алгоритму дерева решений; он оценивает каждое слово во фразе, чтобы определить положительное или отрицательное отношение. Некоторые слова, такие как взломать, можно определить как всегда отрицательный эффект. Некоторые слова, такие как инфляция, значимы, но бессмысленны без знания предшествующего слова (выше или ниже). Stanford Sentiment Treebank и аналогичные базы данных уже классифицируют многие часто используемые слова.

И нам не нужно полагаться только на один заголовок. Мы могли бы обработать множество заголовков - со многих веб-сайтов, каналов Twitter или других источников - чтобы подсчитать частоту использования ключевых слов. А если в Интернете наблюдается значительная активность тех же настроений, мы можем предсказать, насколько определенный актив вырастет или упадет в цене.

Чтобы узнать больше о том, как включить некоторые из этих подходов в свои торговые стратегии, мы предлагаем следующие ресурсы:

Обучение с подкреплением

Методы обучения с подкреплением основаны на выполнении множества итераций модели, чтобы проверить, какие выгоды или последствия будут в каждом состоянии. Это метод, используемый AlphaGo и другими подобными проектами, чтобы научить компьютеры побеждать людей в определенных играх или задачах. В игре каждый ход имеет значение для будущих ходов. Играя в шахматы, гроссмейстеры часто думают на несколько ходов вперед, чтобы увидеть, какими будут позиции в будущем.

Точно так же алгоритм обучения с подкреплением создает систему, в которой мы будем вознаграждать за хорошие решения и наказывать за плохие. Награда будет количественной переменной, которую мы постараемся максимизировать. В каждом состоянии агенту разрешено принимать любое фиксированное количество возможных решений - в контексте торговли это будут решения о покупке, удержании или продать. После вашего решения алгоритм подталкивает вас к следующему состоянию или периоду времени и оценивает, будет ли это решение вознаграждено или наказано. Когда алгоритм запускается впервые, он, по сути, предполагает случайные предположения о том, каким должно быть действие. Однако за несколько итераций алгоритм изучает, какие действия могут быть более полезными в разных контекстах. Конечно, если модель запускается слишком много раз, мы столкнемся с проблемой переобучения. Это когда алгоритм работает в соответствии с заданными точками данных слишком близко и не может адаптироваться к новым данным.

Предположим, мы смотрим на двухэтапную модель, в которой мы пытаемся перейти от точки A к точке C, и мы можем выбирать между B1 или B2 для промежуточных шагов. Назначим следующие награды и наказания за соответствующие ходы:

A → B1 = 10
A → B2 = -15
B1 → C = -25
B2 → C = 25

На пути A → B1 → C мы получаем чистый результат 10-25 = -15
На пути A → B2 → C получаем чистый результат -15+ 25 = 10
Итак, в этом примере путь через B2 является оптимальным (поскольку он заканчивается на более высоком значении).

Находясь в состоянии A, естественно, более выгодно перейти в состояние B1, чем в состояние B2, так как непосредственный результат - 10 против -15 для первого действия. Однако мы также можем видеть, что в долгосрочной перспективе более выгодно выбрать B2, так как мы получаем чистый результат 10 против -15.

С точки зрения торговли, вы можете думать о промежуточном времени B как о нашем «нереализованном PnL», и как только мы достигаем состояния C, мы «реализуем» наш окончательный PnL. Модель подкрепления при многократном запуске может оптимизировать выбор пути, даже если кажется, что определенные состояния являются менее прибыльным вариантом. Вот почему важно исследовать более длительный временной горизонт в торговле, а не беспокоиться об отдельных ежедневных движениях. Преимущество этих моделей - сквозная оптимизация с учетом потенциальных просадок в модели. Недостатком этой модели является то, что по мере роста ваших узлов и действий время для оценки этой модели увеличивается.

Чтобы узнать больше об обучении с подкреплением в контексте торговли, попробуйте:

Глубокое обучение / нейронные сети / LSTM

Эти методы используют предыдущие входы и выходы, чтобы определить, как мы можем предсказать будущие результаты. В частности, нейронная сеть - это алгоритм машинного обучения, который разработан так же, как и ваш мозг, где более свежие «воспоминания» имеют большее значение / вес, чем более старые воспоминания.

В рекуррентной нейронной сети мы принимаем входные данные и пропускаем их через алгоритм для получения выходных данных. Для каждой точки данных мы получаем веса алгоритма, чтобы увидеть, какое влияние он должен оказать на следующую точку данных. По мере того, как мы вводим в модель все больше и больше точек данных временных рядов, веса более старых точек уменьшаются, пока они не станут равными нулю и не будут исключены из нашей модели.

Например, предположим, что вы включаете объем торговой активности в качестве объясняющей переменной для вашей модели для прогнозирования цены. Объем торговой активности имеет значение для позиции, которую вы открываете в первый день. Через 10 дней влияние объема первого дня будет меньше, чем это было изначально для прогнозирования цены первого дня, а через 100 дней. влияние объема первого дня будет иметь незначительное влияние на цену. Вместо этого объем дня 99 будет иметь наибольший вес. Модель рекурсивно обновляет веса каждый раз, чтобы обеспечить лучший анализ в данный момент. Пример нейронных сетей, применяемых для торговли биткойнами, можно найти в исследовании this (техническая торговля биткойнами с использованием искусственной нейронной сети).

Еще одно применение глубокого обучения - алгоритм Long Short Term Memory (LSTM). Трейдер может иметь общее представление о ценах в долгосрочной перспективе, но также хочет отслеживать (и, возможно, использовать в своих интересах) колебания цен в краткосрочной перспективе. В моделях LSTM существует скрытое состояние, которое отслеживает краткосрочные состояния и взвешивает их относительно их долгосрочного воздействия. Эти модели также можно настроить так, чтобы они фокусировались на краткосрочном прогнозе состояния, если представится хорошая торговая возможность. Определение правильных краткосрочных и долгосрочных таймфреймов может быть трудным, но при правильной оптимизации эти модели могут привести к точным прогнозам в реальной торговой среде. См. Статью Это (Машинное обучение криптовалютного рынка) для модели LSTM, применяемой к торговле криптовалютой.

Задача № 5 - Модели машинного обучения

* Помните, любой, который участвует в Telegram или отправляет нам решение в любое время в ходе нашей серии 101 алгоритмической торговли, имеет право на получение части 5000 долларов США в призы в криптовалюте.

__________________________

🤖 Ссылки на уроки 🤖
Программа и как победить
Урок 1: Анализ временных рядов
Урок 2 : Данные, разработка стратегии и возврат к среднему значению
Урок 3: Введение в стратегии арбитража
Урок 4: Управление портфелем и машинное обучение в Python
Урок 5: Больше машинного обучения

Не забудьте присоединиться к нашему Telegram, если у вас есть вопросы!

Следуйте за нами в Twitter на @TheOceanTrade или подпишитесь на нашу рассылку, чтобы оставаться в курсе.