Как ARIMA может прогнозировать данные временных рядов курсов валют

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

Прогнозирование курсов валют

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

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

В моем блоге Как предсказать временные ряды? И Понимание модели авторегрессивного скользящего среднего - ARIMA я изложил концепцию временных рядов и то, как работает ARIMA. В этом блоге я буду использовать язык программирования Python с записной книжкой Jupyter, чтобы объяснить, как использовать ARIMA в Python для прогнозирования обменных курсов.

Пожалуйста, прочтите FinTechExplained d isclaimer.

Использование Pandas для загрузки данных о курсах валют

Pandas - одна из самых популярных библиотек Python. Он построен на основе библиотеки Python Numpy и предлагает ряд функций, включая:

Создание объектов, анализ данных и загрузка данных. Он имеет встроенные статистические функции, может объединять / объединять / объединять несколько коллекций. Это также может помочь нам в группировке, повороте и построении данных. Кроме того, Pandas - очень эффективная библиотека для загрузки данных из csv, HDF5 и Excel. Наконец, к данным можно применить различные стили и форматирование.

Мы будем использовать панды, чтобы:

1. Загрузите курсы обмена временных рядов из файла CSV (через запятую).

2. Просмотрите первые 10 записей.

3. Просмотрите основную статистическую информацию о данных.

Загрузить курсы валют временного ряда из файла csv

Я подготовил файл, который включает ежедневные курсы обмена GBP / USD с 31 декабря 1998 года. Файл хранится здесь. Этот файл содержит данные с двумя столбцами: Data и GBP / USD Close.

Убедитесь, что файл сохранен в том же месте, что и ваш блокнот на Python.

Введите следующие строки, чтобы загрузить файл и просмотреть первые 10 записей:

Чтобы импортировать библиотеку, выполните: Импортировать ‹имя библиотеки› как ‹псевдоним

Примечание. GetData (fileName) - это метод, который принимает имя файла в качестве аргумента.

Нажмите Alt + Enter, чтобы просмотреть основную статистическую информацию о данных.

На изображении ниже показаны первые 10 записей CSV-файла путем вызова метода GetData (fileName):

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

Введите: exchangeRatesSeries.describe (), чтобы увидеть статистику, как показано ниже:

description () показывает ряд полезных показателей, в том числе:

count - количество записей, среднее - ожидаемое значение, std - стандартное отклонение, указывающее на разброс данных вокруг среднего, min - минимальное значение в наборе, max - максимальное значение в наборе вместе с диапазоном процентилей. Процентили могут помочь нам понять распределение вероятностей наших данных.

Построение загруженных данных

Чтобы изменить внешний вид Python, можно добавить стили HTML. Я устанавливаю зеленый цвет графика:

#plot the time series data

exchangeRatesSeries.plot (color = ’green’)

Обратите внимание, что при передаче color = ’green’ создается зеленый линейный график.

Введите: exchangeRatesSeries.hist (), чтобы отобразить историграмму.

Гистограммы могут помочь нам понять распределение данных, что, в свою очередь, помогает нам прогнозировать переменную:

matplotlib может помочь нам с построением данных. Мы также можем импортировать matplotlib, написав:

из matplotlib import pyplot

Затем постройте временной ряд, написав:

pyplot.plot (exchangeRateSeries)

ARIMA с пакетом StatsModels

StatsModels - мощная библиотека Python, богатая статистическими моделями. Библиотека StatsModels содержит ряд моделей, которые можно использовать для прогнозирования и прогнозирования данных. Эта библиотека также содержит ряд диагностических инструментов. Мы собираемся использовать модель ARIMA в пакете StatsModels для прогнозирования обменных курсов.

Введение в ARIMA

Модель ARIMA имеет 3 параметра:

P - Авторегрессивная особенность модели

D - Порядок отличия

Q - Скользящее среднее значение модели

После импорта статистических моделей используйте tsa.arima_model и дайте ему псевдоним ARIMA:

из statsmodels.tsa.arima_model импортировать ARIMA

Для получения более подробной информации о параметрах посетите: http://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.ARIMA.html

Параметры ARIMA могут быть изменены для достижения различного прогнозируемого поведения. Я определил определяемый пользователем метод, который принимает обучающий набор и значение для каждого из трех параметров. Функция сначала создает модель ARIMA. Затем он выполняет fit () и затем прогноз () для модели. Forecast () возвращает прогнозируемое значение.

Скопируйте и вставьте эти строки в свой блокнот:

ARIMA (…) создает модель ARIMA. Fits () соответствует модели ARIMA (p, d, q) по точному максимальному правдоподобию с помощью фильтра Калмана, а Forecast () возвращает оценочное значение на основе подобранной модели ARIMA.

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

Параметры p, q, d можно настроить для получения лучших результатов.

Это пример того, как мы можем передавать данные временных рядов и использовать ARIMA для прогнозирования значения на основе фактических наблюдаемых данных:

Запустив скрипт, мы видим прогнозируемое значение:

Мы передали случайные значения в качестве обучающей выборки. Затем модель ARIMA подобралась и предсказала следующее значение как 15,219305.

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

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

Теперь, когда мы понимаем, как использовать python Pandas для загрузки данных CSV и как использовать StatsModels для прогнозирования значения, давайте объединим все знания, полученные в этом блоге, для прогнозирования нашей выборки. обменные курсы.

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

Нажмите Alt + Enter. Python начнет вызывать модель ARIMA в цикле с фактическими данными. 70% данных используется для обучения модели, а остальные 30% используются для проверки точности. Каждый раз создается новое прогнозируемое значение.

Фактические и прогнозируемые значения будут напечатаны на ноутбуке.

Наконец, фактические и прогнозируемые значения будут нанесены на диаграмму.

Просмотр среднеквадратичной ошибки

Я также импортировал дополнительную библиотеку sklearn, которую буду использовать в своих будущих блогах.

Скопируйте и вставьте эту строку:

«From sklearn.metrics import mean_squared_error» для импорта библиотеки.

Наконец, напечатайте среднеквадратичную ошибку:

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

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

Как видите, мы напечатали фактические и прогнозируемые значения. Кроме того, мы нанесли предсказанные значения красным цветом с MSE 1,551.

Полную записную книжку можно найти здесь.

Дальнейшие улучшения

Прогнозирование обменных курсов можно улучшить:

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

Заключительные примечания

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

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

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

Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.