Машинное обучение, Программирование

Алгоритмическая торговля с Python и машинное обучение, часть 1

Что такое алгоритмическая торговля и как получить торговые данные

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

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

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

Вот что мы расскажем:

  • Что такое алгоритмическая торговля
  • Как получить финансовые данные с помощью библиотек Python и API

1. Что такое алгоритмическая торговля

По мнению Дорна и др.,

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

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

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

2. Как получить финансовые данные с помощью библиотек Python и API

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

Использование yfinance для получения финансовых данных

Чтобы установить yfinance библиотеку

pip install yfinance

Получим данные для AAPL (Apple Inc.) за последний месяц с 30-минутным интервалом.

Корректировка цены закрытия для нескольких акций

Использование yahoofinancials для получения финансовых данных

Чтобы установить yahoofinancials библиотеку

pip install yahoofinancials

Получение ежедневных данных для TSLA (Tesla Inc.)

Корректировка цены закрытия для нескольких акций

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

Использование IEX Cloud для получения финансовых данных

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

Чтобы начать работу с IEX Cloud, зарегистрируйтесь на этой странице в пакете СТАРТ (начните бесплатно). После регистрации выполните действия, описанные на этой странице, чтобы настроить среду песочницы и получить токен API для доступа к облачному API IEX для получения данных. Среда песочницы очень полезна для начального тестирования. Он не предоставляет фактических данных, но может быть удобен, чтобы проверить, работает ли наш код для получения данных или нет. Кроме того, нет ограничений на количество вызовов API для среды песочницы.

После успешной настройки среды песочницы сохраните свой общедоступный токен API в secret.cfg файле, как указано ниже (помните, никогда не публикуйте свой secret.cfgfile и не публикуйте его. Если вы публикуете свой код на GitHub, поместите secret.cfg в .gitignore)

После настройки файла secret.cfg следуйте приведенному ниже коду, чтобы получить доступ к данным (поддельным) для TSLA (Tesla Inc.)

Чтобы получить доступ к реальным данным, измените токен в secret.cfg файле на настоящий токен и используйте базовый URL, указанный ниже в приведенном выше фрагменте кода.

https://cloud.iexapis.com/v1/

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

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

Ссылки:

  • Дорн, Энн, Дэниел Дорн и Пол Сенгмюллер. 2008. «Почему
    люди торгуют?» Журнал прикладных финансов (осень / зима): 37–50.

Следуйте за мной, чтобы увидеть больше статей. Не стесняйтесь подключаться и связываться со мной в LinkedIn. Спасибо!