Если вы пойдете в колледж и пройдете курс «Машинное обучение 101», это может быть первый пример машинного обучения, который ваш учитель покажет вам:

Представьте, что вы работаете в агентстве недвижимости и хотите предсказать, за сколько дом будет продаваться. У вас есть некоторые исторические данные - вы знаете, что дом A был продан за 500 000 долларов, дом B за 600 000 долларов и дом C за 550 000 долларов. Вы также кое-что знаете о свойствах домов - вы знаете размер дома в квадрате. метров, количество комнат в доме и год постройки дома.

Цель агентства недвижимости - спрогнозировать, за сколько будет продан новый дом D, учитывая его известные свойства (размер, возраст и количество комнат в доме). В терминологии машинного обучения известные свойства дома называются «функциями» или «индикаторами» (мы используем термин «индикаторы» в «Сигналах», потому что этот термин исторически использовался в торговле). Цена дома - ваша «цель». [3] [9]

Давайте посмотрим на данные человеческим глазом:

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

Хорошо, но что, если у вас гораздо больше данных, скажем, сотни тысяч домов? Вы, как человек, никогда не сможете обрабатывать такие данные. Другая проблема может возникнуть, если у вас много показателей - не только количество комнат, размер и возраст дома, но, скажем, тысячи показателей. Вашему человеческому разуму будет очень трудно выявить взаимосвязь между этими особенностями. Вам могут потребоваться месяцы, чтобы понять данные, и все же вы можете просто спроецировать свое ложное предположение - например, вы считали, что большие дома дороже, прежде чем вы увидели данные, и у вас будет соблазн поверить в это, даже если данные сказать иначе. [5]

Что, если кто-то другой, кроме человека, сможет извлечь уроки из этих данных, кто-то, кто лучше подходит для обработки огромных и несколько скучных структурированных данных? Алгоритм? Машина"?

Оказывается, такие алгоритмы есть. Алгоритмы машинного обучения, которые принимают данные в формате, который мы показали выше, учатся на этих данных (или мы можем сказать, что мы «обучаем» алгоритм на данных, поэтому эти данные называются «обучающими данными»), и когда они позже получают новый, невидимый пример, они выводят предсказание. Эти алгоритмы могут быть такими же простыми, как линейная регрессия, и такими же сложными, как нейронные сети, но это всего лишь математика. Основная идея всех этих алгоритмов - оптимизация известных данных для нахождения функции (линейной в случае линейной регрессии или довольно сложной в случае нейронных сетей), которая хорошо соответствует данным, но не слишком подходит для «переобучения». Эта подобранная функция затем используется для прогнозирования «цели» для невидимых данных. [6] [12] [8]

Как мы используем машинное обучение в Signals?

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

1. Оптимизация стратегии

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

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

Эта проблема называется оптимизацией и хорошо изучена. В Signals мы реализуем генетические алгоритмы для оптимизации параметров, и в будущем мы планируем реализовать другие методы, такие как байесовская оптимизация. [4] [12]

2. Извлечение сигналов

Это использование ML больше всего похоже на игрушечный пример с домиками, описанный в начале этой статьи. При извлечении сигналов мы используем данные временных рядов, например, график цен на биткойны. Пользователь выбирает индикаторы (функции) из Indicator Marketplace и передает их результаты, извлеченные из временных рядов, в алгоритм машинного обучения. Затем алгоритм машинного обучения учится на данных, находит нелинейные отношения между индикаторами и предсказывает целевое значение на основе невидимых данных. [10] [16]

Как работает извлечение сигналов?

Предварительная обработка временных рядов необходима не только в торговле, но и во многих других областях - обработка речи, звука или сигналов акселерометра, прогноз погоды и т. Д.

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

Трейдеры в основном используют эти индикаторы для обозначения сигналов покупки или продажи, и обычно они используют лишь некоторые из этих индикаторов. [7] [2] В Signals мы дадим вам возможность использовать технические индикаторы в качестве функций вашего алгоритма машинного обучения.

Мы называем эту функцию Извлечение сигналов, пользователи выбирают комбинацию индикаторов, которые они хотят использовать в своей модели, а затем позволяют методам машинного обучения находить наиболее прибыльные модели на их основе. . [9] [13] После того, как извлечение сигналов выполнено на исторических данных (скажем, с января по май), платформа сигналов оценивает свою производительность на невидимых исторических данных (скажем, с июня по август) и выводит параметры производительности, такие как просадка. и прибыль.

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

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

Однако есть много вещей, которые вам придется решить для себя.

  • Какую комбинацию технических индикаторов вы попробуете и какие параметры индикаторов вы будете использовать (например, размеры временного окна)?
  • Вы попробуете какой-нибудь алгоритм выбора / преобразования признаков (индикаторов)?
  • Какой алгоритм машинного обучения вы попробуете? Какие параметры этих алгоритмов?
  • Будете ли вы изучать все исторические данные или только последние несколько месяцев? Или вы всегда будете учиться только за последние несколько дней и предсказывать следующий день?
  • Какая будет ваша цель? Как вы определите сигнал покупки / продажи?

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

3. Показатели на основе машинного обучения.

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

Методы машинного обучения можно использовать для

1. полностью изучить индикаторы на основе неструктурированных данных, например, используя однослойные или глубокие нейронные сети. [1]

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

Ваш предсказатель машинного обучения может использовать эти индикаторы машинного обучения рядом с техническими индикаторами. Один из ваших новых индикаторов, который вы будете использовать для предсказателя машинного обучения, может быть настроением (= настроением) о биткойнах в Твиттере за последние 10 минут (по шкале 1–10), а другим новым индикатором может быть представление нейронной сети (= n-мерный вектор), полученный из временных рядов Ethereum за последние 15 минут.

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

Существуют также алгоритмы машинного обучения, которые предназначены для работы с необработанными временными рядами - они принимают временной ряд в качестве входных данных и предсказывают следующее значение. Вероятно, самый популярный из этих алгоритмов - LSTM. LSTM сложны и дороги в обучении (что на самом деле может быть вашим преимуществом на рынке торговли!), И они действительно хорошо работают для некоторых задач временных рядов. Вы можете поэкспериментировать с LSTM в сигналах. [11] [14] [15]

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

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

[1] А. Коутс, Х. Ли и А. Нг., «Анализ однослойных сетей в неконтролируемом обучении функций», JMLR Workshop and Conference Proceedings, vol. 15. С. 215–223. 2011.

[2] А. Н. Азизан и Дж. К. П. Мнг, «Может ли технический анализ предсказать движение фьючерсных цен?», IUP Journal of Financial Risk Management, vol. 7, вып. 3. С. 57–75, сентябрь 2010 г.

[3] А. В. Ло и А. К. Маккинли, «Цены на фондовом рынке не следуют случайным колебаниям: данные простого теста спецификации», Rev. Financial Stud., Vol. 1, вып. 1. С. 41–66, январь 1988 г.

[4] Д. Барбер, Байесовское мышление и машинное обучение. Глазго, Великобритания: Издательство Кембриджского университета, 2012.

[5] Г. Фризен и П. А. Веллер, «Количественная оценка когнитивных искажений в прогнозах доходов аналитиков», J. Financial Mark., Vol. 9, вып. 4. С. 333–365, ноябрь 2006 г.

[6] И. Каастра и М. Бойд, «Проектирование нейронной сети для прогнозирования финансовых и экономических временных рядов», «Нейрокомпьютинг», т. 10, вып. 3. С. 215–236, апрель 1996 г.

[7] Й. Станкович, И. Маркович и М. Стоянович, «Оптимизация инвестиционной стратегии с использованием технического анализа и прогнозного моделирования на развивающихся рынках». Экономика процедур и финансы, вып. 19. С. 51–62, 2015.

[8] К. П. Мерфи, Машинное обучение: вероятностная перспектива. Кембридж, Массачусетс, США: MIT Press, 2012.

[9] М. Т. Люнг, Х. Даук и А. С. Чен, «Прогнозирование фондовых индексов: сравнение моделей классификации и оценки уровня», Int. J. Прогноз., Т. 16, нет. 2. С. 173–190, апр. - июн. 2000 г.

[10] Н. И. Индера, И. М. Ясин, А. Забиди, З. И. Ризман, «Нелинейная авторегрессия с экзогенной входной (narx) моделью прогнозирования цены биткойна с использованием параметров, оптимизированных для PSO, и технических индикаторов скользящего среднего», J. Фундамент. Прил. Sci., Т. 9, вып. 3S, стр. 791–808, сентябрь 2017 г.

[11] Ордоньес Ф.Дж., Рогген Д. Глубокие сверточные и рекуррентные нейронные сети LSTM для мультимодального распознавания носимой активности. Лю Ю., Сяо В., Чао Х.С., Чу П., ред. Датчики (Базель, Швейцария). 2016; 16 (1): 115. DOI: 10,3390 / s16010115.

[12] С. А. Митилинеос, П. Г. Артикис, «Прогнозирование будущих цен на акции с использованием нейронных сетей и генетических алгоритмов», Int. J. of Decision Sciences, т. 7, вып. 1/2, стр. 2–25, апрель 2017 г.

[13] С. Тхаворнвонг и Д. Энке, «Адаптивный выбор финансовых и экономических переменных для использования с искусственными нейронными сетями», Нейрокомпьютинг, т. 56, стр. 205–232, январь 2004 г.

[14] Т. Фишер и К. Краусс, «Глубокое обучение с использованием сетей долгосрочной краткосрочной памяти для прогнозирования финансовых рынков», Eur. J. Oper. Res., Стр. 1–16, январь 2018 г.

[15] X. Pang, Y. Zhou, P. Wang, W. Lin и V. Chang, «Инновационный нейросетевой подход для прогнозирования фондового рынка», J. Supercomput., Стр. 1-21, январь 2018 г. .

[16] Ю. Шинкевич, Т. М. МакГиннити, С. А. Коулман, А. Белатрече и Ю. Ли, «Прогнозирование движения цен с использованием технических индикаторов: исследование влияния различной длины входного окна», Нейрокомпьютинг, т. 264, ноябрь 2017 г., стр. 71–88.