МАШИННОЕ ОБУЧЕНИЕ ФОРЕКС

СОДЕРЖАНИЕ:

Как мы внедряли машинное обучение в трейдинг – опыт Richardson GMP

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

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

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

Большие данные (Big Data) и будущее финансов

Сегодня объемы данных растут в геометрической прогрессии. По оценкам IBM, за последние два года было создано 90% всех мировых данных, которые появляются из трех основных источников: частных лиц, компаний и сенсорных датчиков.

Люди увеличивают потоки информации при каждом посте в Instagram или поездке в Uber, компании генерируют сегодня больше транзакций, чем когда-либо, а датчики уже фиксируют данные почти со всех окружающих нас предметов – от стиральных машин до ветровых турбин. По данным Seagate, в 2020 году объем сгенерированных данных оценивается примерно в 21 ЗеттаБайт (ЗБ, единица измерения информации, 1 ЗБ = 1021 байт), а к 2025 году он может превысит 160 ЗБ.

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

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

Применение машинного обучения в трейдинге

Конечно, мы в Richardson GMP не являемся настоящими специалистами по Big Data, но признаем возможности, которые она раскрывает. Поэтому мы нанимаем квантов и внедряем различные технологии в управление инвестиционным портфелем, чтобы оптимизировать все процессы и получать прибыль. Мы считаем, что симбиоз человека и машины в работе гораздо эффективнее, чем их работа по отдельности. И мы твердо убеждены, что поведенческий фактор, предубеждения и субъективность, вызванная эмоциями, заставляет инвесторов действовать иррационально. Это приводит к покупке неправильно оцененных активов. При этом человек, совершив ошибку один раз, может вновь наступить на те же грабли, что в результате приведет к росту числа неправильных решений.

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

Пример разработки стратегии с применением машинного обучения

Мы решили улучшить базовый поход к нашей стратегии, и первым шагом стало изменение инструментов для скрининга – анализа и сбора данных. Excel был слишком медленным для наших задач, поэтому мы заключили партнерство с квантовой командой Bloomberg, чтобы разработать систему, которая выполняла большую часть работы в облаке. Результатом стал динамический инструмент на основе Python (высокоуровневый язык программирования), который отображает различные индексы для трейдинга. Мы использовали этот инструмент, чтобы составить общую базу данных на 20-летнем промежутке.

Следующим шагом стала автоматизация нашей торговли, установление идеальных уровней для стоп-лосса и трейлинг-стопа (автоматическое перемещение цены ордера стоп-лосс следом за ценой актива с небольшим отставанием на заданную разницу – Прим. ред). Эта оптимизация значительно улучшила результаты нашей стратегии, которая превзошла доходность инвестиций в индекс S&P 1500.

Наконец, третий шаг – применение машинного обучения. Мы решили, что будем использовать в работе «контролируемое машинное обучение», когда мы посылали машине вопросы (Х) и ответы на них (Y). Впоследствии система стала учиться сама, используя данные, полученные в ходе идентификации поставляемых нами шаблонов.

В Richardson GMP мы пробовали использовать различные модели, но остановились на нелинейном методе опорных векторов (Support Vector Machines, SVM), так как именно он постоянно показывал хорошие результаты. SVM – это набор контролируемых алгоритмов обучения, которые хорошо работают в многоразмерных пространствах.

Эти алгоритмы используют разделяющую плоскость (decision boundary) в случае пространств большой размерности и делит данные на несколько классов. Наша цель заключалась в том, чтобы на уровне предиктивной аналитики алгоритмы смогли разделить наши торговые решения на классы Yes и No. Первый класс означает сделки, приносящие гарантированную высокую прибыль, вторые – сделки, которые не являются такими.

В результате три из четырех «новых» стратегий, использовавшие машинное обучение, смогли обогнать нашу базовую стратегию по отношению к бенчмарку (S&P 1500). К слову, для составления нашей базовой стратегии мы использовали все накопленные данные (фундаментальные, исторические, рыночные и т.д.) за 10 лет.

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

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

Сочетание традиционного управления инвестпортфелями, поведенческой экономики и машинного обучения дадут нам эти преимущества.

Материал подготовлен при поддержке компании «Норд Капитал». Статья основана на отчетах управления по работе с частным капиталом компании Richardson GMP. С полным отчетом «Big Data & Machine Learning» можно ознакомиться по ссылке.

Еще по теме:

Машинное обучение в трейдинге

Трейдинг — это ужасно конкурентный мир. И поэтому искусственный интеллект, используемый уже практически как универсальное оружие для чего угодно, не может не найти свое применение и в торговле.

Дисклэймер

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

Если ответить кратко: человеческая конкуренция, но об этом чуть-чуть позже.

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

К примеру, 4 основных применения ИИ на данный момент это:

Анализирование данных

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

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

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

Прогнозирование реальных данных

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

  • Прогноз погоды на северо-востоке на следующие пару недель;
  • Потребление солнечной энергии в Европе;
  • Итоги политических выборов.

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

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

Поиск данных

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

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

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

Настройка машин в высокочастотной торговле

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

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

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

! 3 предупреждающих знака! — Что следует понимать

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

1.ИИ на сегодняшний день НЕ умнее людей

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

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

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

2. Опубликованные стратегии по торговле часто не работают в реальной жизни

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

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

Эффект самоотбора

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

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

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

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

Эта статья приведёт Вас к успеху:  КОРРЕЛЯЦИЯ ВАЛЮТНЫХ ПАР НА ФОРЕКС

Комиссионные и проскальзывание (слиппедж)

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

Графики меняются со временем

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

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

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

3. Одни алгоритмы никогда не дадут вам преимущества

Легко сконцентрироваться только на одних алгоритмах, как на единственном преимуществе перед другими торговыми стратегиями.

По существу, такие компании как Numerai это и предлагают:

  • Комбинировать хорошие торговые стратегии с целью создать лучшую.
  • Срывать куш.

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

Немного надежды: неэффективные рынки все еще могут быть прибыльными

Рынки с несколькими трейдерами, обладающие высокие барьерами для входа и с ограниченным количеством сделок, могут использовать машинное обучение чтобы получить преимущество в “чистой игре” (занимаясь одним видом деятельности, например, продажей через Интернет).

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

МАШИННОЕ ОБУЧЕНИЕ ФОРЕКС

Администратор

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

R*,
Data Mining*,
Искусственный интеллект
Примечание переводчика 1. Я наткнулся на этот блог в одном из обзоров материалов по машинному обучению. Если вы хорошо разбираетесь в машинном обучении, то в этой статье вы не найдете для себя ничего интересного. Она достаточно поверхностная и затрагивает только основы. Если же вы, как и я, только начинаете интересоваться данной темой, то добро пожаловать под кат.

Примечание переводчика 2. Кода будет мало, а тот что есть написан на языке R, но не стоит отчаиваться, если вы его до сих пор никогда в глаза не видели. До этой статьи я тоже ничего о нем не знал, поэтому я специально отдельно написал «шпору» по языку, включив туда все, что вам встретится в статье. Если хотите сами разобраться, то начать рекомендую c маленького курса на CodeSchool. На хабре тоже есть интересная информация и полезные ссылки. И наконец вот тут есть большая шпаргалка.

Примечание переводчика 3. Статья из двух частей, однако самое интересное начинается только во второй части, поэтому я позволил себе объединить их в одну статью.

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

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

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

  • Регрессия. Используется для прогнозирования направления и значения величины. Например рост на $7.00 стоимости акций Google за день.
  • Классификация. Используется для прогнозирования категорий, например направление стоимости акций Google за день.

Рассмотрим простой пример. Давайте попытаемся предсказать движение стоимости акций Google на один день вперед. В следующей части мы будем использовать несколько индикаторов, но сейчас, для изучения основ, мы будем использовать только один показатель: день недели. Итак, давайте попробуем предсказать движение цены на основе дня недели.

Ниже отображен график акций Google и картинка экспортированных данных из Yahoo Finance.

Я добавил колонку день недели и колонку цена закрытия минус цена открытия. Так же, я добавил колонку направления цены, где пишу «UP», если разница между ценой закрытия и открытия больше 0 и «DOWN» если меньше:

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

Теперь давайте выберем алгоритм. Есть целый ряд алгоритмов, которые вы можете использовать, включая скрытые Марковские Модели, искусственные нейронные сети, наивный байесовский классификатор, метод опорных векторов, дерева решений, дисперсионный анализ и множество других. Здесь хороший список, где вы можете разобраться в каждом алгоритме и понять когда и какой из них применять. Для начала я рекомендую использовать один из наиболее часто используемых алгоритмов, например метод опорных векторов или наивный байесовский классификатор. Не тратьте много времени на выбор, наиболее важные части вашего анализа — индикаторы которые вы используете и величина, которую прогнозируете.

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

[b]Что такое наивный байесовский классификатор?[/b]

Формула Байеса позволяет найти вероятность того, что событие А случится, если известно, что событие В уже произошло. Обычно обозначается как: P (A | .

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

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

До сих пор мы обсуждали только один индикатор, но как только их становится несколько, вся математика быстро усложняется. Чтобы это предотвратить используется наивный байесовский классификатор (вот тут хорошая статья). Он обрабатывает каждый индикатор, как независимый, или не коррелированный (отсюда термин наивный). Поэтому важно использовать индикаторы связанные слабо или не связанные вовсе.

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

[b]Пошаговый пример на R[/b]

Шпора по RДля работы вам понадобится:

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

Теперь по порядку, все что встретится:

В языке не строгая типизация, объявлять переменные нет необходимости. Для присвоения значения используется знак « weights prices types treasure print(treasure)
weights prices types
1 300 9000 1
2 200 5000 2
3 100 12000 3
4 250 7500 2
5 150 18000 3

Можно указывать диапазон строкстолбцов. К примеру чтобы вывести с 1 по 4 строку все столбцы, надо написать:

Чтобы вывести все строки и только второй столбец:

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

При вызове функций, дополнительные параметры прописываются так: имя_параметра = значение. Например:

getSymbols(«AAPL», src = «yahoo», from = startDate, to = endDate)

Конкретно эта функция выгружает с yahoo данные о стоимости акций. Подробней о ней в мануале: www.quantmod.com/documentation/getSymbols.html

С остальным думаю вопросов не возникнет.

Теперь разберем очень простой пример на R. Мы будем использовать день недели, для прогнозирования движения цены акций Apple вверх или вниз.

Для начала давайте убедимся, что у нас есть все библиотеки которые нам нужны:

install.packages(«quantmod»)
library(«quantmod»)
#Позволяет импортировать данные

install.packages(«lubridate»)
library(«lubridate»)
#Упрощает работу с датами

install.packages(«e1071»)
library(«e1071»)
#Дает доступ к алгоритму наивного байесовского классификатора

Теперь давайте получим данные, которые нам нужны:

startDate = as.Date(«2012-01-01»)
#Начало рассматриваемого промежутка

endDate = as.Date(«2014-01-01»)
#Конец рассматриваемого промежутка

getSymbols(«AAPL», src = «yahoo», from = startDate, to = endDate)
#Получаем дневное OHLCV акций Apple с Yahoo Finance

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

DayofWeek 0, «UP»,»DOWN»)
#Конвертируем в двоичную классификацию. (В наших данных не встречаются дни, когда цена открытия была равна цене закрытия, т. е. изменение было равно нулю, поэтому для упрощения мы не рассматриваем этот случай)

Теперь мы готовы применить наивный байесовский классификатор:

MyModel<-NaГЇveBayes(DataSet[,1],DataSet[,2])
#Входное значение, или независимая переменная (DataSet[,1]), и то, что мы собираемся предсказывать, зависимая переменная (DataSet[,2]).

Поздравляю! Мы применили алгоритм машинного обучения для анализа акций Apple. Теперь давайте разберемся в результатах.

Здесь отображена вероятность повышения или понижения цены на основе исходного набора данных ( известного как предыдущие вероятности). Мы можем видеть небольшой медвежий уклон.

Здесь отображены условные вероятности (указывается вероятность роста или падения цены для каждого дня недели).

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

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

Я предпочитаю использовать экспоненциальные скользящие средние, поэтому давайте рассмотрим 5-ти дневные и 10-дневные экспоненциальные скользящие средние (EMA).

Для начала нам необходимо рассчитать EMA:

EMA5<-EMA(Op(AAPL),n = 5)
#Мы рассчитываем 5-периодную EMA по цене открытия

EMA10<-EMA(Op(AAPL),n = 10)
#Затем 10-ти периодную EMA, так же по цене открытия

Затем рассчитываем пересечение:

EMACross <- EMA5 - EMA10
#Положительные значения будут означать что EMA5 расположена на графике выше EMA10

Теперь округляем значения до 2-х знаков после запятой. Это важно, поскольку если попадется значение, которое наивный классификатор байеса не видел во время обучения, он автоматически рассчитает вероятность в 0%. Например, если мы смотрим на пересечение EMA с точностью до 6-ти знаков, и была найдена высокая вероятность движения цены вниз, когда разница была $2.349181, а затем была представлена новая точка данных, которая имела разницу $2.349182, будет рассчитана 0% вероятность повышения или понижения цены. Окрулив до 2-х знаков после запятой, мы снижаем риск столкнуться с неизвестным для модели значением (при условии, что для обучения использовался достаточно большой набор данных, в котором скорее всего встретятся все значения индикатора). Это важное ограничение, о котором нужно помнить, при построении собственных моделей.

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

DataSet2<-data.frame(DayofWeek,EMACross, Class)
DataSet2<-DataSet2[-c(1:10),]
#Нам нужно удалить значения, в которых 10-периодная скользящая средняя все еще не рассчитана
TrainingSet<-DataSet2[1:328,]
#Мы используем 2/3 данных для обучения модели
TestSet<-DataSet2[329:492,]
#И 1/3 для тестирования модели

Условная вероятность пересечения скользящих средних – число, которое показывает среднее значение для каждого случая ([,1]) и для стандартного отклонения ([,2]). Мы можем видеть, что в среднем разница между 5-дневной EMA и 10-ти дневной EMА для длинных и коротких торгов была $0.54 и -$0.24 соответственно.

Теперь протестируем на новых данных:

Примечание переводчика 4 Я почему-то долго не мог понять как читать эту таблицу. Для тех, у кого тоже был тяжелый день: числа на пересечениях down-down и up-up это количество дней, в которых предсказание совпало с реальными данными. Соответственно если смотреть на столбец down и строку up – это количество дней, в которых наша модель предсказала движение вверх, а реально было движение вниз.

Всего в тестовой выборке 164 дня. При этом предсказания нашей модели совпали с реальными данными 79 раз или в 48% случаев.

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

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

я думал-думал, я все понял — про машинное обучение в применении к трейдингу

в последние несколько месяцев я изучал машинное обучение, точнее, в основном, классификаторы на основе supervised learning
и я понял одну вещь — весь этот ручной трейдинг, соблюдение дисциплины, философия трейдинга, 30 гуру трейдинга и «к нам приехал Ларри Вильямс дорогой, сейчас он нас научит как жить» — все это туфта.
Если в поведении акций и других фин инструментов есть какие то закономерности, которые позволяют выцарапать из торговли хоть какой то risk-adjusted return — то это можно сделать только с помощью машинного обучения.
Точнее, сделать это можно, наверное, многими способами, но только машинное обучение предоставляет научный метод, оптимизирующий результат.
Почему ?
Потому что Машинное обучение (а оно бывает разное, я говорю в данном случае о supervised learning ) — оно тем и занимается, что строит модель на основе эмпирических данных, причем там есть методы типа adaboost, которые позволяют залить в модель десятки параметров и выжать из каждого их них хоть какую то кроху закономерностей, если она вообще там есть.
Я уверен, что в этот момент много умных людей пытаются на этом заработать.

Эта статья приведёт Вас к успеху:  НАДЕЖНЫЙ ЕВРОПЕЙСКИЙ ФОРЕКС

Все эти технические индикаторы, какие то роботы на основе скользящих средних — все это вчерашний день по сравнению с хорошим алгоритмом машинного обучения, все равно что арифмометр по сравнению с айпадом. Я последние несколько дней провел (убил ?) в экспериментах по применению adaboost + decision trees к торговле.
Работает медленно, зараза, плюс Питон толком не поддерживает многоядерные процессоры, поэтому после каждого изменения параметров приходится ждать нового пересчета классификатора несколько минут.
Там есть способы ускорить все это дело, пользуясь всякими Apache Spark, но начинать надо с малого.Будучи полным лохом в алготрейдинге, пока только гоняю код, но хочу попробовать сделать функционирующую торговую приблуду на основе машинного обучения.
Охренительно интересная тема, скажу я вам.
Следите за апдейтами.

  • спецраздел:
  • торговые роботы
  • Ключевые слова:
  • гуру хренов,
  • американский шадрин,
  • русский баффет

=)
Что на входе? Какими данными вы кормите «машинку»?

Знаете, арифмометр в умелых руках, когда на него подаются адекватные данные и решается красивая задача, несоизмеримо лучше, чем айпэд у 99,9% владельцев «чуда техники».

Андрей Л (division_by_zero), не серьёзно.

Логарифмическая линейка действительно миру уже не нужна, достаточно айпэда и софта для дебилов из эпстора.

Множество исследований ведется вокруг цены и объема по той причине, что сейчас, в век компьютеров, по ним имеются практически бесконечные объемы данных. Не обязательно такие исследования имеют какую-то полезность, просто данные есть, а ученые много времени потратили на развитие математических способностей с ними манипулировать. Раз уж эти способности приобретены, грех не использовать их, даже если такое использование не имеет никакой полезности или полезность отрицательна. Как говорится, если у человека в руке молоток, все вокруг выглядит как гвоздь.» — W.Buffett, The Superinvestors of Graham-and-Doddsville

Потырено с long-short.ru

ab_trader, на каждый оверфитинг должна быть отложенная выборка. На каждый вывод, сделанный по отложенной выборке, должно быть подтверждение по еще одной отложенной выборке.

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

Машинное обучение — это хороший метод. Но, увы, это только метод. Чтобы что-то получить адекватное, надо скормить качественные предикторы… И их так или иначе надо искать и оценивать. По своей сути ML это лишь способ оптимизации и поиска лучшей области использования предикторов.
По своему опыту могу сказать, что на больших выборка (от 20К случаев) при 3-4 предикторах без оверфитинга на тестовой выборке нормально работает только классификатор на основе naive bayes. Но предикативный результат редко больше 53-54%. K Means, Decision Trees имеют очень большую склонность к оверфитингу, увы. Про SVM трудно говорить, ибо он работает очень медленно на больших выборках.

К чему я это… Основное это предикторы, а не методы. Если есть эйдж, то его можно вычленить и без ML. Хотя ML, конечно, приятней, ибо более формализовано.

SergeyJu, стандартизованные непрерывные.

Alex Hurko, стандартизованные, это приведенные к диапазону (-1,1) или Вы приводите к распределению с нулевым выборочным средним и единичной выборочной дисперсией?

SergeyJu, обычно, но не всегда делаю так
StandartValue = (Real — Mean)/Std

Увы, такая стандартизация не всегда робаста. Особенно в случае портфелей.

Alex Hurko, я этот прием не использую в первую очередь потому, что при каждом новом поступлении данных изменяются и оценка среднего, и дисперсии.
По честному, надо заново все пересчитывать на каждом такте.
Проще работать с дискретными переменными. Есть перекупленность/перепроданность — нету. Три состояния -1, 0, 1.
Быстрая скользяшка выше/ниже медленной. 2 состояния 1, -1.
Ну и так далее.

SergeyJu, да, это не везде применимо, конечно. Дискретизация — это то же не панацея. Очень много зависит от входящих данных.

Главная проблема — это внутренняя корреляция выборки предикторов. Т.е. если мы имеем, например, в качестве предиктора количество std от мувинга до цены, то значение в точке N будет сильно коррелировано со значением в точке N+1, N-1. В случае, если мы обучаемся на единственном инструменте, дискретизация частично уберет эффект корреляции с предыдущим семплом, но если мы работаем с портфелем стаков, это не будет работать нормально из-за взаимной корреляции между стаками. Поэтому под каждый предиктор приходится икать форму, в которой эти эффекты будут нивелированы. Иногда помогает ранжирование по портфелю, ранжирование по историческому окну и тд.

Alex Hurko, Вы строите торговую систему сразу на группе активов?
Не вполне понимаю, чем Вам мешают корреляции. Ясно же, что любой взвешенный по временному окну индикатор имеет по построению связи между предыдущим и последующим значением.

Просто, с точки зрения здравого смысла, мне он показался наиболее оптимальным способом нахождения закономерностей, которые можно использовать, ЕСЛИ они там вообще есть

SergeyJu, я не предлагал взять 1000 чукчей:) Но, как вы верно заметили, ничего кроме примитивных условных вероятностей у нас нет из того, о чем мы можем говорить объективно и формально. Кто его знает, может нам наш опыт дается свыше магически-мистическим путем? Может всё, где мы добиваемся успеха, дается через озарение? Но это другая тема.

С другой стороны,

Мы живем в условиях относительно низкого отношения сигнал/помеха

Sergey Pavlov, наш главный источник данных, цена совершает за день, условно, колебания по 100 пунктов в минуту каждую минуту. А средний доход, также условно, 100 пунктов в день. Значит, мы берем 1/500 от величины движения.
Вот это я имею в виду, когда говорю о низком отношении сигнала к помехе.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

СОПРОВОЖДЕНИЕ ЭКСПЕРИМЕНТА ПО АНАЛИЗУ ДАННЫХ ФОРЕКСА: успешное применение машинного обучения

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

Коллеги и читатели блога!

А теперь, напомню, что мы делаем.

Таким образом я графически изобразил структуру данных.

Последние 1/3 данных каждой пары идут на валидацию. Валидация начинается примерно с 23.09.2010 и заканчивается 01.02.2020.

Как видно, мы в солидном плюсе.

Для последных трех пар волатильность выше и повыше спред (надо взять не 20, а 25-30 пипсов). Поэтому на них валовый результат и процент угаданных направлений лучше. Введение повышенного спреда уменьшит МО на прикидку до 10 пунктов. Просто, чтобы понимать, что происходит.

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

И, наконец, нужно сделать результаты статистически значимыми.

  • sample
  • validation sample shapiro test normality p-value
  • wilcoxon test p-value for difference from zero
  • mean
  • median
  • mean dist upper 99%-tail
  • mean dist lower 99%-tail

1 1.11E-65 0 0.000139 0.000095 0.000146 0.000133

2 8.55E-64 0 0.000139 0.000096 0.000145 0.000133

3 8.24E-63 0 0.000137 0.000096 0.000143 0.000131

4 3.31E-66 0 0.000139 0.000095 0.000146 0.000133

5 4.64E-66 0 0.000142 0.000097 0.000149 0.000136

6 7.08E-63 0 0.000141 0.000097 0.000147 0.000135

7 8.72E-65 0 0.000135 0.000096 0.000141 0.000129

8 4.52E-65 0 0.000139 0.000096 0.000145 0.000132

9 4.31E-64 0 0.000143 0.000102 0.000149 0.000137

10 4.53E-66 0 0.000141 0.000099 0.000147 0.000134

11 8.97E-67 0 0.000143 0.000098 0.000149 0.000136

12 2.21E-63 0 0.000139 0.000102 0.000145 0.000133

13 1.16E-63 0 0.000142 0.000099 0.000148 0.000135

14 7.82E-64 0 0.000138 0.000097 0.000144 0.000132

15 1.41E-65 0 0.000146 0.000103 0.000152 0.000140

16 8.17E-63 0 0.000135 0.000097 0.000140 0.000129

17 6.54E-65 0 0.000143 0.000099 0.000149 0.000136

18 6.70E-66 0 0.000138 0.000096 0.000144 0.000132

19 1.86E-65 0 0.000143 0.000099 0.000149 0.000136

20 1.79E-66 0 0.000142 0.000098 0.000148 0.000135

21 2.37E-62 0 0.000136 0.000099 0.000142 0.000131

22 5.51E-65 0 0.000141 0.000100 0.000147 0.000135

23 7.15E-67 0 0.000142 0.000097 0.000149 0.000136

24 1.06E-65 0 0.000144 0.000102 0.000150 0.000137

25 4.01E-65 0 0.000147 0.000101 0.000153 0.000140

26 2.33E-64 0 0.000141 0.000098 0.000147 0.000135

27 7.85E-65 0 0.000141 0.000100 0.000147 0.000134

28 2.07E-64 0 0.000141 0.000098 0.000147 0.000134

29 2.01E-63 0 0.000140 0.000098 0.000146 0.000134

30 2.77E-64 0 0.000139 0.000098 0.000145 0.000133

31 1.43E-66 0 0.000145 0.000098 0.000151 0.000138

32 1.08E-65 0 0.000141 0.000098 0.000147 0.000134

33 3.47E-62 0 0.000136 0.000099 0.000141 0.000130

34 6.04E-67 0 0.000140 0.000096 0.000147 0.000134

35 2.32E-65 0 0.000145 0.000100 0.000152 0.000139

36 6.39E-65 0 0.000143 0.000098 0.000149 0.000137

37 1.10E-61 0 0.000141 0.000103 0.000147 0.000135

38 6.74E-63 0 0.000142 0.000100 0.000148 0.000136

39 2.54E-64 0 0.000141 0.000098 0.000147 0.000135

40 2.45E-64 0 0.000139 0.000098 0.000145 0.000133

41 6.25E-66 0 0.000141 0.000099 0.000148 0.000135

42 3.99E-66 0 0.000141 0.000097 0.000147 0.000135

43 1.35E-66 0 0.000142 0.000098 0.000148 0.000135

44 1.01E-63 0 0.000134 0.000097 0.000140 0.000128

45 1.56E-64 0 0.000139 0.000097 0.000145 0.000133

46 3.11E-66 0 0.000145 0.000103 0.000152 0.000139

47 6.11E-66 0 0.000138 0.000099 0.000144 0.000131

48 2.99E-66 0 0.000146 0.000101 0.000152 0.000139

49 1.84E-63 0 0.000138 0.000098 0.000144 0.000131

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

Также я приведу для вашей информации входы, которые генерят такие картинки после обучения:

Во вложении файл с обобщенными результатами обучения и валидации.

Как я заработал $500K на машинном обучении и высокочастотном трейдинге — Часть 1

От переводчика: На днях на Хабре был опубликован топик о том, как IT-специалисту сохранить и приумножить свои деньги, который вызвал довольно большой интерес. Я с недавних пор интересуюсь финансовой темой, и мне на глаза попалась интересная история парня, который, применив свои технологические навыки, смог за год заработать полмиллиона долларов. Мне кажется, его опыт может быть интересен многим хабражителям (хоть у него и уже был опыт работы на бирже), поэтому решил перевести этот текст (он очень объемный, так что будет две части).

В этом посте подробно описано то, как я заработал примерно полмиллиона долларов на высокочастотном трейдинге в период с 2009 по 2010 год. Поскольку я работал совершенно независимо и больше не использую мою программу, я свободно могу рассказать об этом все. По большей части я участвовал в торгах фьючерсными контрактами на индексы DAX и Russell 2000.

Ключ к моему успеху, на мой взгляд, заключался не в использовании сложных финансовых уравнений, а скорее в применении общего алгоритмического подхода, который увязал вместе множество простых компонент и включал в себя принцип машинного обучения для оптимизации алгоритма и достижения максимальной прибыльности. При чтении этой статьи вам не понадобится знание какой-либо специфической терминологии – когда я запустил мою программу, я полагался лишь на интуицию. (К сожалению, прекрасный курс Эндрю Нг’а (Andrew Ng) по машинному обучению тогда еще не был доступен публике – между прочим, если пройдете по ссылке, попадете на мой текущий проект: CourseTalk, сайт отзывов на массовые открытые онлайновые курсы/MOOC).

Во-первых, я просто хочу продемонстрировать, что мой успех не был лишь счастливым совпадением. Моя программа проводила 1000-4000 сделок в день (как «длинных», так и «коротких»), однако в единицу времени у меня всегда были открыты всего несколько контрактов. Это означает, что мои шансы на внезапный успех достаточно быстро усреднялись. Это означает также и то, что я никогда не проигрывал больше $2000 в день и ни разу не наблюдал убытков в месячном периоде.


(Поправка: это показатели за вычетом комиссий)

А вот график, показывающий вариации моего заработка в течение дня. Заметьте, что на данном графике нет последних 7 месяцев, потому что – как только суммы перестали расти – я потерял мотивацию их вводить.

Мой опыт торговли на бирже

Прежде чем начать работать с моей программой автоматизированного трейдинга, я два года проработал трейдером в «обычном» режиме. Это было в 2001 году – в годы становления электронных торгов, когда мелкие спекулянты имели возможность неплохо заработать. То, как я тогда работал, было в определенном смысле сродни компьютерным и азартным играм. Быть успешным значило быть быстрым, дисциплинированным и иметь хорошие способности к интуитивному распознаванию паттернов поведения рынка. Я зарабатывал примерно $250k, что позволяло мне оплачивать обучение да еще и откладывать. Профит!

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

API для трейдинга

В 2008 я был обыкновенным дневным трейдером на фьючерсном рынке и использовал ПО под названием T4. Я очень хотел заполучить какие-нибудь кастомизированные комбинации «горячих клавиш» для того, чтобы отдавать команды, поэтому узнав, что T4 обладает открытым API, я потрудился изучить C# (язык программирования, используемый API), а потом пошел дальше и сам создал необходимые «горячие клавиши».

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

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

Эта статья приведёт Вас к успеху:  ДЛИННЫЕ СТРАТЕГИИ ФОРЕКС

Проектирование собственного алгоритма

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

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

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

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

  • Предсказание движения цен
  • Организация прибыльных торгов

Предсказание движения цен

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

Создание и оптимизация индикаторов

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

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

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

Точные предсказания поведения цен

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

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

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

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

Компоновка индикаторов для получения однозначного предсказания поведения цен

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

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

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

Почему недостаточно просто предсказывать цены

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

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

  • С каждой торговой операции мне нужно платить комиссию и моему брокеру, и бирже.
  • Факт существования спреда (разницы между лучшей ценой покупки и продажи) означает, что если бы я просто в случайном порядке покупал и продавал, то потерял бы массу денег.
  • Большую часть рынка занимают другие боты, которые заключат со мной сделку только если сочтут ее статистически выгодной.
  • Найти привлекательное предложение – не значит заключить сделку. К тому моменту, когда приказ на покупку достигнет биржи, предложение, скорее всего, может стать неактуальным.
  • Как мелкий игрок на рынке, я не могу в одиночку конкурировать только за счет скорости.

Структуры данных и Алгоритмический трейдинг: машинное обучение

Data Structures and Algorithmic Trading: Machine Learning

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

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

forex-prediction

Here are 23 public repositories matching this topic.

Simple version of auto forex trader build upon the concept of DQN

hayatoy / ml-forex-prediction

Predicting Forex Future Price with Machine Learning

    Updated Sep 20, 2020

iancamleite / prediciting-binary-options

Predicting forex binary options using time series data and machine learning

    Updated Aug 15, 2020

Live-Rates / live-rates.com

Forex Real-time Streaming, Web-service & Rest API

    Updated Sep 18, 2020

cenkcorapci / forex-prediction

Comparison of few deep learning models on 15m interval USD/EUR time series data

    Updated Sep 13, 2020

rrguardo / market_predictor_cnn

Softwares tools to predict market movements using convolutional neural networks.

    Updated Aug 14, 2020

rrfaria / iqoption-bot

iqoption bot to trading forex on:

    Updated Sep 21, 2020

ExcViral / adaptive-forex-forecast

An adaptive model for prediction of one day ahead foreign currency exchange rates using machine learning algorithms

    Updated Sep 6, 2020

VelbazhdSoftwareLLC / VitoshaTrade

VitoshaTrade is a Forex forecasting module for MetaTrader4.

    Updated Jul 15, 2020

innocentkithinji9 / ForexPred

    Updated May 19, 2020

newellp88 / V20py

Wrapper for oandapyV20 and associated projects

    Updated Nov 8, 2020

neoricalex / nafi

DeepRL para Forex Trading

    Updated Apr 8, 2020

Financial-ML / Market-Analysis-2

Machine Learning techniques that analyse Forex market.

    Updated Sep 14, 2020

stpaulchuck / Forex-Indicator-Data-Generators

generate various math studies like CCI, Trix, MACD, to use in your programs

    Updated Sep 6, 2020

deezone / forex-clock

An API to monitor and suggest trends in the world FOREX markets. Responses include consolidated indicator values, market status and general currency trends (predictions).

Отдыхаем от инвестиций: Машинное обучение – Как зарабатывать на данных

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

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

Какие данные имеют ценность?

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

Алгоритмами могут выступать обычные статистические модели или нейронные сети. Принцип у них всех одинаковый – формулировка вопроса и выдача ответа. Ответы формируют разметку данных, суммарный объем который называется датасетом. Таким образом, ценны не все данные, а именно размеченные. Стоимость процесса разметки может быть разной и она зависит от нескольких факторов:

  • Профессионализм разметчиков;
  • Организация процесса;
  • Конфиденциальность информации и т. д.

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

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

Что такое синтетические данные?

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

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

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

Как работают синтетические данные?

Пару лет назад агрегатор объявлений Авито собрал огромный датасет и провел соревнование для спецов по алгоритмам обучения. Призовой фонд равнялся $20 тыс. Хостингом была площадка Kaggle. Участники должны были найти объявления, помеченные вручную, как дубликаты. Сложность была в том, что тексты и изображения в них могли отличаться. Это дало возможность протестировать механизмы, предназначенные для большего объема данных, нежели путем простого сравнение, которое, очевидно, неэффективно.

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

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

Киностудия Нетфликс успешна не только благодаря смелым проектам и качественной работе (ну тут не все согласятся), сервис также работает с системой Cinematch. С ее помощью пользователям предлагаются сериалы, которые могли бы им понравиться – это как функция «Показать похожие» в аудиозаписях VK. Подобная система не может работать без огромнейшего датасета, где отражен рейтинг, проставленный зрителями тому или иному фильму.

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

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

Как можно на всем этом заработать?

Ну и теперь перейдем к самому вкусному – как зарабатывать на данных. По-разному! Давайте выделим несколько групп:

    Выгода от продуктов, улучшенных при помощи машинного обучения:

  • Работа по разметке данных. Вы можете делать это вручную, создать площадку для аннотирования или разработать специальное ПО.
  • Сбор и реализация датасетов. Вы самостоятельно собираете данные и продаете их заинтересованным лицам.
  • Призы от соревнований по обработке данных, либо создание сервисов, на которых можно проводить такие мероприятия.
  • Взаимодействие с синтетическими датасетами – цифровые модели и объекты из реального мира, созданные при помощи специального оборудования, рендеринг разных объектов и сцен, предоставление мощностей для рендеринга и моделирования, разработка ПО для работы с данными такого типа. Для прогеров самое то.
  • Добавить комментарий