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

Может ли машина, обученная торговле криптовалютой, приносить прибыль? В Smile Innovation мы попробовали! 😃

Если вы думаете, что мы выращивали нейроны в лаборатории, это недалеко от реальности. Шучу 😉 (но посмотрите Что такое искусственный нейрон?, Чтобы узнать правду). Как бы вам ни повезло, давайте откроем для себя новый удивительный мир.

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

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

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

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

Мы, вероятно, будем использовать термин «нейронная сеть», чтобы говорить о машинном обучении, вам нужно только понимать, что «нейронная сеть» - это разновидность техники машинного обучения, а «длинная кратковременная память (LSTM)» - это разновидность нейронной сети. сеть (см. «LSTM»).

LSTM

LSTM от Long Short Time Memory - это конструкция модели, которая обрабатывает прошлые данные для получения прогноза. Это разновидность нейронной сети.

Проиллюстрируем это на примере.

Если я скажу вам «дайте мне следующий номер после 6», что вы скажете? Естественно, вы дадите «7», потому что это следующий, но почему не «8», если серия «N + 2»?

Хорошо, теперь я говорю вам «дайте следующий номер после 3, 6,…», и теперь вы можете ответить «9» или «12», потому что связь между 3 и 6 может быть «N + 3» или «N *. 2 ”. Затем я говорю вам: «Дайте мне следующее число после 0,3,6», и вы видите, что ответ - «N +3».

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

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

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

Различные типы торговых алгоритмов:

Существует 2 типа торговых алгоритмов, характеризующихся разной скоростью, скоростью оборота и соотношением заказов к сделкам, которые используют финансовые данные с разной периодичностью и инструменты электронной торговли. Хотя нет единого определения высокочастотной торговли и низкочастотной торговли, среди их ключевых атрибутов есть очень краткосрочные (HFT) инвестиционные горизонты или более длительные (LFT).

Высокочастотная торговля (HFT). Человеческий глаз может моргнуть от 300 до 400 миллисекунд. За это время обычным «HFT» было передано около 400 заказов, почему так быстро? поскольку он взаимодействует только с одним и только одним сервером, и в этом суть, невозможно реализовать алгоритм «HFT» для криптовалюты, потому что технология децентрализована. Для этого вида торговли нужна большая инфраструктура (супер калькуляторы, чрезвычайно быстрое соединение, это может быть не у всех).

Низкочастотная торговля (LFT). Учитывая высокие требования к оборудованию для HFT, мы сосредоточились на низкочастотной торговле. К тому же уже произошедшая HFT-программа взбудоражила рынок (пример ссылки).

Мы выбрали рынок криптовалют, потому что данные легко получить (API, наборы данных Kaggle и т. Д.), И это децентрализованный актив.

А как насчет данных?

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

После сбора наша выборка данных имеет следующий формат:

В финансах мы называем эти строки «тикерами», «тикер» - это снимок всех рыночных переменных в момент времени t.

Рынок криптовалют - это пара активов, такая как BTC и NEO. По сравнению с финансовым рынком это может быть евро или доллар США.

Обработка данных

Во-первых, мы уменьшили количество столбцов (функций), потому что очевидно, что некоторые функции более актуальны, чем другие.
Чтобы решить, какая из них, мы вычисляем часть дисперсии каждой функции и берем функции с лучшая дисперсионная часть. Мы знаем из финансовых данных, что значения нелинейны, поэтому нелегко найти связь между x и y, такую, что f (x) = y . Другими словами, мы не можем научить наш LSTM, как он может выполнять действие y в соответствии со своим параметром x. Чтобы справиться с этой проблемой, мы трансформируем наши данные, здесь мы использовали логарифмическую функцию.

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

Это преобразование помогает нашей нейронной сети найти постоянную связь между функциями x, во-первых, и, во-вторых, постоянную связь между функциями x и выбранным действием y. .

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

новый Xi = (старый Xi - среднее (X)) / стандартное отклонение (X)

Стандартное отклонение вычисляет разрыв между значением и его средним значением.

Маркировка

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

Первый вопрос, который приходит в голову, - что нам нужно, чтобы научить наш ИИ? Прогноз цен? Предсказание сбоя? Верхний или нижний прогноз? Человеческая профессиональная торговля?

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

Для прогнозов доступны три действия:
- Купить (зеленая точка)
- Продать (красная точка)
- Ждать (остальные тикеры, синяя линия)

пример:

Мы хотим покупать криптовалюту, когда у нас есть нижняя точка, потому что мы знаем, что после этого минимума цена вырастет, поэтому сейчас хорошее время для покупки.
Тикеры с этим минимальным значением помечены как «покупка».
Кроме того, мы хотим продать криптовалюту, когда мы находим верхнюю точку (максимальную цену), эти тикеры помечены как «продажа». Остальные тикеры помечены как «ждите», и для этого последнего мы ничего не делаем.

Преобразование данных в формат LSTM

На этом этапе мы сохраняем только числовые значения. Затем мы упаковываем данные по строкам, потому что LSTM оптимизирован для временных рядов.

Наши пакеты отсортированы в хронологическом порядке:

Мы сохраняем метку последнего тикера для маркировки пакета.
Для нашего последнего примера:

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

Что вы могли ожидать от предсказания на данном этапе?

Множество «выжидательных» прогнозов. Почему ?

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

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

Несбалансированные данные - очень распространенная проблема. Большинство алгоритмов классификации машинного обучения чувствительны к несбалансированным данным. Несбалансированный набор данных смещает модель прогнозирования в сторону более общего класса (дополнительная информация).

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

Обучение

Теперь мы разделили наш набор данных на два подмножества:

Обучающий набор (70% набора данных): он используется для обучения нашей нейронной сети, другими словами, он изучает, что предсказывать, когда он встречает определенные значения функций. Для этого мы выбрали гиперпараметр (настройки нейронной сети) нашего LSTM таким образом, чтобы точность прогноза была наилучшей.
Для измерения производительности выбранного гиперпараметра мы используем метод перекрестной проверки .

Набор для тестирования (30% набора данных): он используется для измерения того, насколько хорошо LSTM выполняет прогнозы на этом наборе.

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

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

Скрытый нейрон - это искусственный нейрон, в отличие от него, он находится в скрытом слое. В искусственной нейронной сети есть связь между входными и выходными слоями. (Дополнительная документация)

Точность:

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

Потеря:

Потеря проверки (зеленая линия) - это значение функции стоимости для наших данных перекрестной проверки, а потеря (синяя линия) - это значение функции стоимости для данных обучения.

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

Этот результат означает, что мы выбрали сильный гиперпараметр LSTM.

Прогнозирование

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

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

Заключение

Может ли машина, обученная торговле криптовалютой, приносить прибыль?

Если бы все это знали, все бы это сделали! 😜

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

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

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

Но это уже другая история, о которой стоит рассказать в другой статье.

Вам понравилось? В таком случае, не стесняйтесь 👏 нашу статью или подпишитесь на нашу новостную рассылку Innovation watch!
Вы можете подписаться на Smile в Facebook, Twitter и Youtube.

Соавторы: Юсеф Мессауд, Патрис Ферле, Квентин Ле Барон
Спасибо команде рецензентов ❤️.
Источники: Github Smile Innovation

Ресурсы