Визуализация данных

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

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

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

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

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

математическое ожидание переменной x - это среднее значение этой переменной, обозначаемое E (x) или греческим символом mu.

Дисперсия переменной - это мера разброса данных, в частности, ожидание отклонений от среднего квадрата, обозначаемое как Var (x) = E [(x - mu) ²].

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

Ковариация говорит нам, насколько две переменные изменяются вместе или «взаимозависимы». Это полезная мера, позволяющая понять, как две переменные коррелированы, и рассчитывается по следующей формуле - ›sigma (x, y) = E [(x - mu_x) (y - mu_y)].

Проблема с нашей мерой ковариации аналогична проблеме дисперсии в том, что эта метрика не дает нам никакой сопоставимой информации. В качестве примера, если вы возьмете цены GBPUSD и GBPCHF за предыдущий год, показанные ниже, и вычислите их ковариацию, мы получим цифру 0,000382. Это мало что говорит нам, и нет никаких ограничений для значений. Все, что мы можем сделать, это то, что эти две переменные движутся вместе, поскольку наша ковариация больше 0.

Введите корреляцию, которая стандартизирует нашу ковариацию, разделив ее на произведение двух стандартных отклонений. Это гарантирует, что наша цифра теперь имеет минимальное значение -1, максимальное значение +1, что значительно упрощает нам сравнение значений. Корреляция между GBPUSD и GBPCHF за прошлый год составляет 0,7514, что имеет гораздо больше смысла, учитывая график.

Автокорреляция требует одного параметра, лага k, количества временных шагов, на которые смещается наш исходный временной ряд для создания нового. Затем мы вычисляем корреляцию между этими двумя временными рядами, используя только что описанный метод, возвращая цифру, как и раньше, в диапазоне [-1,1].

Реализация и визуализация Python

В Python мы используем пакет statsmodels для выполнения вычисления и визуализации автокорреляции, сокращенно графика ACF. Мы можем передать параметр lags в метод plot_acf (), который устанавливает максимальные задержки, для которых мы хотим вычислить автокорреляцию. В приведенном ниже коде показана реализация этого.

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

Важные точки

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

Каждый лаг содержит один и тот же набор данных, поэтому, если у нас есть одно отставание (отличное от 0, поскольку корреляция для него всегда будет 1), корреляция которого значительно выходит за пределы нашей границы, мы ожидаем, что последующие значения будут следовать этому примеру и также покажут высокую корреляцию. Для нас как аналитиков это не идеальная ситуация. Это становится очевидным, если вы посмотрите на график АКФ GBPUSD ниже. Мы взяли почти два десятилетия истории постепенных изменений между каждым периодом времени, и в результате все наши ноги очень близки к единице.

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

Небольшой обходной путь, но чтобы выделить этот момент еще больше, возьмите визуализированный ниже набор данных, который измеряет количество солнечных пятен каждый год в течение трех столетий (1700–2008). Примерно каждые 11 лет магнитное поле Солнца меняется, и северный и южный полюса меняются местами. В начале каждого цикла на Солнце меньше всего солнечных пятен, а в средний период - самое большое. Это стало мерой определения того, как далеко на самом деле находится Солнце в своем солнечном цикле.

Я пытаюсь поднять на этом примере то, что у нас здесь есть внешняя причина. Когда мы смотрим на графики автокорреляции, мы видим значительную положительную корреляцию на лагах 10 и 11, а затем 21 и 22. Диаграмма, подобная той, которую мы видим здесь, намного более полезна для аналитика, потому что у нас есть основная причина того, почему определенные задержки отвергнуть нашу первоначальную гипотезу.

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

Эта статья основана на информации из главы 8 Advanced Algorithmic Trading Майкла Холлса Мура о последовательной корреляции.

Информация о солнечных пятнах была предоставлена ​​на следующем веб-сайте Solar Cycle.