Как 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 не принимает стрессы в рыночных данных в качестве исходных данных, экономических и политических условий или корреляции всех факторов риска для прогнозирования обменных курсов, простой пример, показанный выше, может быть полезен для прогнозирования движений стабильных валют в нормальных условиях, в которых диктует поведение в прошлом. настоящее и ценности.
Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.