Нейронная сеть и прогнозирование валютных пар онлайн

Нейронная сеть и прогнозирование валютных пар онлайн

Прогноз акций и валютных пар с помощью Recurrent Neural Network и Long Short-Term Memory (LSTM)

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

Наш проект состоит из 4 частей:

  • извлекаем исторические данные
  • подготовка данных для нейронной сети
  • обучение нейронной сети
  • создание прогноза

Извлекаем исторические данные

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

API предоставляет следующие поля:

  • цена открытия
  • макс. цена
  • мин. цена
  • цена закрытия
  • объем

Рекомендуем пройти регистрацию на alphavantage.co. и получить свой уникальный API ключ т. к. наш ключ имеет ограничения.

Data Function — тип актива. Ticker Symbol — символ актива. Alfa Vantage — API ключ. Data Temporal Resolutions — недельный дневной. Все активы которые вы выберете приравниваются к доллару.

Нажмите кнопку Fetch Data, чтобы сгенерировать график.

Simple Moving Average ( Простая средне-скользящая)

Данные Simple Moving Average (SMA) будут отправляться в нейронную сеть которая будет обучаться путем сопоставления входных данных вместе с выходными отметками. Наш метод это — извлечь простую скользящую из временного ряда.

Simple Moving Averageэто определение текущего тренда финансовых активов за определенный период времени. Количество цен во временном окне вы должны подбирать индивидуально. От этого будет зависеть ваш прогноз. Пример: цены закрытия за последние 5 дней были 13, 15, 14, 16, 17, где (13 + 15 + 14 + 16 + 17) / 5 = 15. Таким образом временное окно равняется 15.

This is the «time window» for SMA — временное окно для вычисления скользящей средней.

Нажмите кнопку Compute SMA и Draw Chart, чтобы сгенерировать данные обучения для нейронной сети.

Сначала нужно, сгенерировать график предидущий шаг.

Обучение нейронной сети

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

Это гиперпараметры (параметры, используемые в процессе обучения), доступные для настройки:

  — Training Dataset Size (%): размер обучаемого набора данных. Пример: 70% используем для обучения, а остальные 30% будут использоваться для прогнозирования.

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

  — Learning Rate: Скорость обучения — количество изменения веса во время тренировки на каждом шаге.

  — Hidden LSTM Layers: скрытые LSTM-слои для увеличения сложности модели при обучении в многомерном пространстве.

Вы должны настроить гиперпараметры, а затем нажать кнопку «Begin Training Model», чтобы обучить модель.

Проверка обученной модели

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

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

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

Чтобы получить более точный прогноз вы должны правильно изучить все настройки. Для каждой котировки, настройки должны быть индивидуальные. Чем точней настройки, тем лучше вы обучите нейронную сеть. Немаловажно правильно рассчитать временное окно, от этого зависят данные которые вы отправите в нейро-сети. Вы можете увеличить или уменьшить количество эпох (Epochs). Пробуйте изменять % размера набора данных Training Dataset Size (%), оставьте 60-70% для обучения, остальные 40-30% будут использоваться для прогноза.

Создание прогноза

И так, после того как модель прошла проверку и ее значения соответствуют прогнозируемым данным, используйте ее для будущего прогноза. Будут использоваться последние (windowsize) точки данных в качестве входной информации, в соответствии с вашим настроенным временным окном. Так же наш проект включает в себя среднеквадратическую ошибку (RMSE). Определяет разницу между прогнозируемыми и фактическими значениями, поэтому модель способна учиться, минимизируя ошибку во время тренировочного процесса. За счет Long short-term memory (LSTM) вы сможете более глубоко обучать нейронную сеть, т. к. в отличии от стандартной нейронной сети с прямой связью LSTM имеет соединения обратных связей. LSTM может работать не только с временными рядами, но и обрабатывать данные такие как обнаружение аномалий в сетевом трафике, распознавание речи, обработка видео, рукопись и т. д.

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

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