Глубокое обучение для торговли на Форекс 1

Глубокое обучение для торговли на Форекс.

Многие исследовательские работы посвящены прогнозированию финансовых временных рядов, но лишь в небольшом количестве из них говорится о применении в реальной торговой стратегии. В большинстве случаев исследование дает только показатели производительности модели (точность, RMSE,…), но без попытки превратить ее в прибыльную стратегию..

Когда мы говорим о финансовых временных рядах, мы говорим о случайных процессах, имея в виду, что они имеют дело с большим количеством случайностей. По этой причине нереально ожидать получения точности, аналогичной той, которая достигается во многих других приложениях глубокого обучения. Поэтому не ожидайте 80% точности при прогнозировании роста или падения рынка в течение определенного временного горизонта. Известно, что прогнозирование финансовых временных рядов является одной из самых сложных задач в машинном обучении. Цель состоит в том, чтобы вместо того, чтобы пытаться найти модель, которая может дать вам небольшое преимущество по сравнению с чисто случайным предположением или чистой стратегией покупки и удержания, когда мы говорим о фондовом рынке..

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

В течение многих лет в сотрудничестве с двумя французскими инженерными школами, CentralSupelec и Polytechnique, Департамент искусственного интеллекта Lusis работает над прогнозами финансовых временных рядов с точки зрения применимых торговых стратегий..

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

Прогнозирование внутридневного тренда GBPUSD.

В этой статье мы проиллюстрируем применение глубокого обучения для построения торговой стратегии..

Сначала мы создаем и оцениваем модель, предсказывающую внутридневные тренды на GBPUSD. Затем мы тестируем стратегию исключительно на основе прогнозов модели, прежде чем запускать ее в реальном времени..

Набор данных: данные GBPUSD за один час OHLC с 04.11.2011 по 30.01.2018, таким образом, это 41 401 часовой столбец OHLC для данных примерно за 7 лет. Обучающий набор: 2011–2014 годы Набор проверок: 2015 Набор тестов: 2016– Ярлык 2018: Цена закрытия вверх / вниз через N баров, наш прогнозирующий фактор — это классификатор..

После определения метки нам нужно проверить долю классов Up и Down в популяции. Обнаружение несбалансированных этикеток означает, что нам потребуется их повторно сбалансировать или использовать другую метрику, чем точность. Здесь мы нашли 50,3% от Up для 49,7% от класса Down, поэтому точность является надежным показателем для оценки нашей модели..

Здесь из соображений конфиденциальности мы не будем упоминать следующее:

горизонт прогнозирования (N столбцов) размер временных интервалов, используемых в качестве входных данных для характеристик модели (необработанных или производных), мы используем фильтры или любую другую предварительную обработку, применяемую гиперпараметры точной модели.

Но мы покажем, что на удивление простая модель может хорошо работать..

Модель.

В большинстве случаев, когда мы говорим о предсказаниях временных рядов, мы сначала думаем об использовании LSTM или CNN 1D. Здесь мы хотели сначала оценить MLNN для сравнения с двумя другими. Но после исследования мы нашли способ сделать эту модель достаточно точной, чтобы на ее основе построить торговую стратегию..

На следующей диаграмме показана MLNN, аналогичная той, которую мы используем:

Слой вывода модели состоит из двух единиц: для класса «Вверх» и для класса «Вниз». Он использует функцию активации softmax. Функция потерь — это категориальная кросс-энтропия.

Почему мы используем такой вывод нескольких единиц с softmax вместо одного модуля с сигмовидной активацией ?

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

Как правило, мы всегда сначала создаем набор функций повышения производительности, чтобы облегчить и ускорить создание и тестирование вариаций моделей. Это значительно ускоряет итерации. Затем мы можем сконцентрировать усилия на самом важном, на самой модели и показателях ее производительности..

Что касается другого момента, который мы можем раскрыть, функция активации плотных слоев — tanh, мы используем оптимизатор адама и слои исключения для регуляризации..

Мы обучаем модель на 500 эпохах с размером пакета 64, и получаем следующие результаты:

Функция потерь не имеет ничего общего с тем, что мы обычно получаем во многих других приложениях глубокого обучения. Имейте в виду, что финансовые рынки — это очень шумная среда, в которой мы можем ожидать лишь небольшого преимущества..

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

Есть несколько способов борьбы с переобучением, в том числе:

Получение большего количества данных: здесь мы используем только GBPUSD, мы не можем легко применить методы увеличения данных, такие как в классификаторах изображений. Перевёрнутая картинка кота по-прежнему кота, но это не так просто для финансовых временных рядов. Любая небольшая модификация данных может привести к очень разным ситуациям, мы никогда не сможем убедиться, что метка будет такой же, как для исходной последовательности. Сбор более длинной истории или добавление данных из других валютных пар может помочь в упрощении модели: часто это наиболее эффективный способ борьбы с переобучением, прежде чем использовать регуляризацию, здесь уже сделано Регуляризация: здесь мы сохранили отсев только после тестирования регуляризации L1 и L2 Ранняя остановка: мы не используем его на данный момент, поскольку нам нужно фиксировать лучшие показатели для данной эпохи (здесь где-то между 250 и 350), а не только для точной эпохи, например, 300. Поскольку метод изначально не существует в Керас, нам нужно реализовать кастомный.

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

Итак, мы проверили это.

Бэктестинг.

Мы тестировали модель на данных за 3 года, которые не использовались для обучения, поэтому с 2015 по начало 2018 года.

Стратегия, построенная на этой модели, очень проста. Мы просто покупаем, когда модель предсказывает восходящий тренд, и продаем короткую позицию, когда модель предсказывает нисходящий тренд..

Чтобы оценить эффективность чистой модели, мы не устанавливаем стоп-лосс или тейк-профит. Просто закрываем позицию через N баров после входа, где N — горизонт прогноза.

Мы также не устанавливаем никакого спреда для первого тестирования на истории, чтобы получить необработанные метрики..

Все результаты ниже выражены в пунктах. Чтобы получить его, мы используем размер сделки 10 000 фунтов стерлингов, поэтому каждый пункт соответствует 1 доллару США. Мы начинаем со счета 10 000 долларов США. Прежде чем говорить о кредитном плече, каждый бэктест должен сначала начинаться с сделок без кредитного плеча, чтобы оценить риск, на который можно пойти..

Похожие статьи