В течение последних месяцев я изучал некоторые финансовые временные ряды, такие как прогноз цены биткойна или различные задачи, предложенные Numer.ai, Two Sigma Investment или G-Research. Учитывая это, мы решили разработать библиотеку технического анализа на Python на основе библиотеки Pandas. Вы можете найти библиотеку по адресу:



Эта новая библиотека ориентирована на выполнение «Feature Engineering» из типичных наборов финансовых данных, которые обычно включают такие столбцы, как «Timestamp», «Open», «High», «Low», «Close» и «Volume». Эта библиотека будет использоваться специалистами по науке о данных, которые хотят решать проблемы машинного обучения с использованием стека технологий Python для науки о данных (Pandas, Scikit-Learn, XGBoost, LightGBM, Keras, TensorFlow и т. Д.).

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

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

Теперь мы подробно объясним два примера:

Полосы Боллинджера

Полосы Боллинджера используются для анализа волатильности цены актива в определенный период времени. Есть 3 диапазона, средняя полоса (MB) - это среднее значение цены за последние n периодов, верхняя (UB) и нижняя полоса (LB) равны средней полосе, но добавление и вычитание x, умноженное на стандартное отклонение. . Обычно используются следующие параметры: n = 20 периодов и x = 2. Итак:

МБ = СУММ (n последних закрытых значений) / n

UB = MB + (X * StdDev)

LB = MB - (X * StdDev)

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

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

MACD

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

MACD = EMA (n1, закрытие) - EMA (n2, закрытие)

MACD_Signal = EMA (n3, MACD)

MACD_Difference = MACD - MACD_Signal

Типичные значения переменных: n1 = 12, n2 = 26 и n3 = 9, однако в библиотеке можно заменить другие значения в зависимости от вашего стиля торговли и целей.

Теория говорит нам, что когда кривая MACD (синий) меньше, чем MACD_Signal (оранжевый) или когда разница MACD (зеленая кривая, которая представляет разницу между MACD_Signal и кривой MACD) имеет значение ниже 0, ценовой тренд будет медвежий. Напротив, это говорит о росте цен.

На данный момент в библиотеке реализовано 32 индикатора:

Объем

  • Индекс накопления / распределения (ADI)
  • Балансовый объем (OBV)
  • Среднее значение балансового объема (среднее значение OBV)
  • Денежный поток Чайкина (CMF)
  • Индекс силы (FI)
  • Легкость передвижения (EoM, EMV)
  • Тренд объема и цены (VPT)
  • Индекс отрицательного объема (NVI)

Волатильность

  • Средний истинный диапазон (ATR)
  • Полосы Боллинджера (BB)
  • Канал Келтнера (KC)
  • Канал Дончиана (округ Колумбия)

Тренд

  • Дивергенция схождения скользящих средних (MACD)
  • Индекс среднего направленного движения (ADX)
  • Индикатор Vortex (VI)
  • Трикс (TRIX)
  • Индекс массы (MI)
  • Индекс товарного канала (CCI)
  • Осциллятор цены без тренда (DPO)
  • Осциллятор KST (KST)
  • Ишимоку Кинко Хё (Ишимоку)

Импульс

  • Индекс денежного потока (MFI)
  • Индекс относительной силы (RSI)
  • Индекс истинной силы (TSI)
  • Окончательный осциллятор (UO)
  • Стохастический осциллятор (SR)
  • Вильямс% R (WR)
  • Потрясающий осциллятор (АО)

Другие

  • Ежедневный доход (DR)
  • Совокупный доход (CR)

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

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



Кроме того, я внештатный программист, специализирующийся на науке о данных с использованием инструментов Python, таких как Pandas, Scikit-Learn, Zipline или Catalyst. Не стесняйтесь обращаться ко мне, если вам понадобится что-то связанное с этой библиотекой, техническим анализом, алгоритмической торговлей, машинным обучением и т. Д.