рекомендации

четверг, 15 июля 2021 г.

Последовательная корреляция в анализе временных рядов

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

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

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

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

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

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

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

Ожидание, дисперсия и ковариация

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

Первое определение - это ожидаемое значение или математическое ожидание:

Математическое ожидание

Ожидаемое значение или математическое ожидание, E(x), случайной величины x является ее средним значением в генеральной совокупности. Обозначим математическое ожидание x через μ, такое что E(x) = μ.

Теперь, когда у нас есть определение ожидания, мы можем определить дисперсию, которая характеризует «разброс» случайной величины:

Дисперсия

Дисперсия случайной величины - это математическое ожидание квадратов отклонений переменной от среднего, обозначенное как σ2(x) = E [(x − μ) 2].

Обратите внимание, что дисперсия всегда неотрицательна. Она позволяет нам определить стандартное отклонение:

Стандартное отклонение

Стандартное отклонение случайной величины x, σ(x), является квадратным корнем из дисперсии x.

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

Ковариация

Ковариация двух случайных величин x и y, каждая из которых имеет соответствующие ожидания μx и μy, задается как σ(x, y) = E [(x − μx) (y − μy)].

Ковариация сообщает нам, как две переменные движутся вместе.

Однако, поскольку мы находимся в статистической ситуации, у нас нет доступа к средним значениям популяции μx и μy. Вместо этого мы должны оценить ковариацию по выборке. Для этого мы используем соответствующие выборочные средние x¯ и y¯.

Если мы рассмотрим набор из n пар элементов случайных величин из x и y, заданных как (xi, yi), будет дана выборочная ковариация Cov(x, y) (также иногда обозначаемая q(x, y)):


Примечание. Некоторым из вас может быть интересно, почему в знаменателе мы делим на n − 1, а не на n. Это правильный вопрос! Причина, по которой мы выбираем n − 1, заключается в том, что это делает Cov(x, y) несмещенной оценкой.

Пример: выборочная ковариация в R

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

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

Сначала мы построим диаграмму рассеяния, а затем вычислим ковариацию выборки с помощью функции cor. Чтобы убедиться, что вы видите точно такие же данные, как и я, мы установим случайное начальное число 1 и 2 соответственно для каждой переменной:

> set.seed(1)
> x <- seq(1,100) + 20.0*rnorm(1:100)
> set.seed(2)
> y <- seq(1,100) + 20.0*rnorm(1:100)
> plot(x,y)
График следующий:


Диаграмма рассеяния двух линейно возрастающих переменных с нормально распределенным шумом

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

> cov(x,y)
681.6859
Выборочная ковариация равна 681,6859.

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

Корреляция

Корреляция - это безразмерная мера того, как две переменные изменяются вместе или «взаимозависимы». По сути, это ковариация двух случайных величин, нормализованная их соответствующими стандартными отклонениями. Корреляция (совокупности) между двумя переменными часто обозначается через ρ(x, y):


Произведение двух стандартных отклонений в знаменателе будет ограничивать корреляцию в пределах интервала [-1,1]:
  • Корреляция ρ(x, y) = + 1 указывает на точную положительную линейную связь
  • Корреляция ρ(x, y) = 0 указывает на отсутствие линейной связи
  • Корреляция ρ(x, y) = - 1 указывает на точную отрицательную линейную связь
  • Как и в случае с ковариацией, мы можем определить выборочную корреляцию Cor(x, y):

где Cov(x, y) - это выборочная ковариация x и y, а sd(x) - выборочное стандартное отклонение x.

Пример: выборочная корреляция в R

Мы будем использовать те же векторы x и y из предыдущего примера. Следующий код R вычислит выборочную корреляцию:

> cor(x,y)
0.5796604
Выборочная корреляция равна 0,5796604, что показывает достаточно сильную положительную линейную связь между двумя векторами, как и ожидалось.

Стационарность во временных рядах

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

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

Мы начнем с попытки применить приведенные выше определения к данным временных рядов, начиная со среднего/ожидания:

Среднее значение временного ряда

Среднее значение временного ряда xt, μ(t), задается как математическое ожидание E(xt) = μ (t).

Следует отметить два важных момента относительно этого определения:
  • μ = μ(t), т.е. среднее (в общем случае) является функцией времени.
  • Это ожидание берется из совокупности всех возможных временных рядов, которые могли быть сгенерированы в рамках модели временных рядов. В частности, это НЕ выражение (x1 + x2 + ... + xk) / k (подробнее об этом ниже).
Это определение полезно, когда мы можем создать множество реализаций модели временных рядов. Однако в реальной жизни это обычно не так! Мы «застряли» только на одной прошлой истории, и поэтому мы часто будем иметь доступ только к одному историческому временному ряду для конкретного актива или ситуации.

Итак, как нам поступить, если мы хотим оценить среднее значение, учитывая, что у нас нет доступа к этим гипотетическим реализациям из ансамбля? Что ж, есть два варианта:
  • Просто оценить среднее значение в каждой точке, используя наблюдаемые значения.
  • Декомпозировать временной ряд, чтобы удалить любые детерминированные тенденции или сезонные эффекты, получив остаточный ряд. Когда у нас есть этот ряд, мы можем сделать предположение, что остаточный ряд является в среднем стационарным, т.е. что μ(t) = μ, фиксированное значение, не зависящее от времени. Затем становится возможным оценить это постоянное среднее значение совокупности с использованием выборочного среднего:

Стационарность по среднему

Временной ряд является стационарным по среднему, если μ(t) = μ, постоянна.

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

Дисперсия временного ряда

Дисперсия σ2(t) модели временного ряда, который является стационарным по среднему, задается как:


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

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

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


Обратите внимание, что для того, чтобы это работало, нам необходимо иметь возможность оценить выборочное среднее x¯. Вдобавок, как и в случае определенной выше выборочной ковариации, мы должны использовать n − 1 в знаменателе, чтобы сделать выборочную дисперсию несмещенной оценкой.

Стационарность по дисперсии

Временной ряд является стационарным по дисперсии, если 

постоянна.

Здесь нужно быть осторожным! С временными рядами мы находимся в ситуации, когда последовательные наблюдения могут быть коррелированы. Это приведет к смещению оценки, то есть к переоценке или недооценке истинной дисперсии совокупности.

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

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

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

Теперь мы можем применить наши определения среднего и дисперсии временных рядов к определению последовательной корреляции.

Последовательная корреляция

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

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

Стационарность второго порядка

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

Наконец, мы можем определить серийную ковариацию и серийную корреляцию!

Автоковариация временного ряда

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


Автоковариация Ck не является функцией времени. Это связано с тем, что она включает в себя математическое ожидание E(..), которое, как и раньше, берется из совокупности возможных реализаций временных рядов. Это означает, что оно одинаково для всех времен t.

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



Автокорреляция временного ряда

Последовательная корреляция или автокорреляция запаздывания k, ρk стационарного временного ряда второго порядка задается автоковариацией ряда, нормированной произведением разброса. То есть 


Обратите внимание, что:


То есть первая задержка k = 0 всегда будет давать значение, равное единице.

Как и в случае с приведенными выше определениями ковариации и корреляции, мы можем определить автоковариацию выборки и автокорреляцию выборки. В частности, мы обозначаем автоковариацию выборки буквой c в нижнем регистре, чтобы различать значение для генеральной совокупности, заданное буквой C.

Выборочная функция автоковариации ck определяется выражением:


Выборочная автокорреляционная функция rk определяется выражением:


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

Коррелограмма

Коррелограмма - это просто график функции автокорреляции для последовательных значений запаздывания k = 0,1, ..., n. Она позволяет нам увидеть структуру корреляции в каждом лаге.

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

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

Вот пример коррелограммы, построенной в R с использованием функции acf, для последовательности нормально распределенных случайных величин. Полный код R выглядит следующим образом:

> set.seed(1)
> w <- rnorm(100)
> acf(w)

Коррелограмма, построенная в R для последовательности нормально распределенных случайных величин

Есть несколько примечательных особенностей графика коррелограммы в R:

Во-первых, поскольку выборочная корреляция для лага k = 0 задается как:


мы всегда будем иметь линию высотой, равной единице, при лаге k = 0 на графике. Фактически, это дает нам точку отсчета, по которой можно судить об оставшихся автокорреляциях при последующих лагах. Также обратите внимание, что ACF оси Y безразмерна, поскольку корреляция сама по себе безразмерна.

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

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

Пример 1 - Фиксированный линейный тренд

Следующий код R генерирует последовательность целых чисел от 1 до 100, а затем отображает автокорреляцию:

> w <- seq(1, 100)
> acf(w)

Коррелограмма, построенная в R для последовательности целых чисел от 1 до 100

Обратите внимание, что график ACF уменьшается почти линейно по мере увеличения запаздывания. Следовательно, коррелограмма этого типа является четким указанием тренда.

Пример 2 - Повторяющаяся последовательность

Следующий код R генерирует повторяющуюся последовательность чисел с периодом p = 10, а затем строит автокорреляцию:

> w <- rep(1:10, 10)
> acf(w)

Коррелограмма, построенная в R для последовательности целых чисел от 1 до 10, повторенной 10 раз.

Мы видим, что на лаге 10 и 20 есть значимые пики. Это имеет смысл, поскольку последовательности повторяются с периодом 10. Интересно отметить, что существует отрицательная корреляция при лагах 5 и 15, равная точно -0,5. Это очень характерно для сезонных временных рядов, и поведение такого рода на коррелограмме обычно указывает на то, что сезонные/периодические эффекты не были полностью учтены в модели.

Комментариев нет:

Отправить комментарий