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

пятница, 4 февраля 2022 г.

Стационарность и память на финансовых рынках

Стационарность и предсказуемость временных рядов, частным случаем которых является память временных рядов, являются фундаментальными понятиями для количественного инвестиционного анализа. Однако это часто неправильно понимают как практики, так и исследователи, о чем свидетельствует глава 5 недавней книги «Advances in Financial Machine Learning». Я имел удовольствие разъяснить эти заблуждения некоторым участниками конференции The Rise Of Machine Learning in Asset Management в Йельском университете после конференции, но я пришел к выводу, что проблема настолько распространена, что заслуживает публичного обсуждения.

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

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

Технические выводы:

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

Вопреки тому, что утверждается в «Advances in Financial Machine Learning», не существует «дилеммы стационарности и памяти» (одно не имеет ничего общего с другим), а память не подразумевает асимметрии или чрезмерного эксцесса.

Итерированное дифференцирование временного ряда по типу Бокса-Дженкинса не делает временной ряд более стационарным, оно делает временной ряд рядом без памяти; временной ряд может быть как без памяти, так и нестационарным.

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

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

Практические выводы:

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

Для количественного управления инвестициями необходима стационарность, но не стационарность финансовых временных рядов, «стационарность» или постоянство торгуемых моделей или альф в течение (достаточно длительного) времени (горизонта).

Стационарность

Говоря простыми словами, стационарность - это свойство вещей, которые не меняются с течением времени.

Менеджеры по количественным инвестициям нуждаются в стационарности

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

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

Стационарность на финансовых рынках разрушительна

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

Эфемерность альфы хорошо задокументирована; см., например, последнюю книгу Игоря Тульчинского «The Unrules: Man, Machines and the Quest to Master Markets», которую я настоятельно рекомендую.

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

Стационарность временных рядов не может быть опровергнута с помощью одной конечной выборки

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

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

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

Это абсурдно по той простой причине, что стационарность (второго порядка) как свойство не может быть опровергнута с помощью единственного пути конечной выборки. Да, вы правильно прочитали! Читайте дальше, чтобы понять, почему.

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


Построение временного ряда на равномерной сетке 1000 раз между t = 0 и t = 1.

Рассмотрим график выше. Это график стационарного временного ряда? Если бы вы отвечали просто на основе этого графика, вы, вероятно, пришли бы к выводу, что это не так. Но я уверен, что вы чувствуете подвох, поэтому вы, вероятно, захотите провести так называемый «тест стационарности», возможно, один из наиболее широко используемых - расширенный тест Дики-Фуллера. Вот что вы получите, если сделаете это (исходный код в конце):

ADF Statistic: 4.264155
p-Value: 1.000000
Critical Values:
1%: -3.4370
5%: -2.8645
10%: -2.5683

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

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


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

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


Тот же график, что и выше, но в уменьшенном масштабе.

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

ADF Statistic: -4.2702
p-Value: 0.0005
Critical Values:
1%: -3.4440
5%: -2.8676
10%: -2.5700

В самом деле, мы можем отвергнуть нулевую гипотезу о нестационарности временного ряда при p-значении 0,05%, что дает нам сильную уверенность.

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

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

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

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

1. Неявное предположение

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

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

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

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

2. Явное предположение

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

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

Подразумевается, что такие тесты не имеют в качестве нулевой гипотезы предположения, что основной процесс нестационарен, но вместо этого основной процесс является нестационарным процессом AR!

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

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

Ищите стационарные альфы, а не стационарные временные ряды

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

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

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

Но хватит о стационарности, давайте перейдем к природе памяти на рынках.

Память

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

Чтобы проиллюстрировать распространенное заблуждение о памяти, давайте рассмотрим простой, но представительный пример. В «Advances in Financial Machine Learning» автор утверждает, что

«Большинство экономических анализов следует одной из двух парадигм:
  • Бокс-Дженкинс: доходности стационарные, но без памяти.
  • Энгл-Грейнджер: Логарифмические цены имеют память, однако они нестационарны, а коинтеграция - это трюк, который заставляет регрессию работать с нестационарными временными рядами […] »
Чтобы получить лучшее из обоих парадигм, автор предлагает построить процесс взвешенного скользящего среднего.


коэффициенты которого определяются на основе понятия дробного дифференцирования с фиксированным окном в качестве альтернативы логарифмической доходности (разность первого порядка по логарифмическим ценам). Автор рекомендует выбирать наименьшую степень дробного дифференцирования 0 <d <1, для которой временной ряд скользящего среднего проходит тест стационарности ADF (при заданном значении p).

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

Количественная оценка памяти

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

Качественный вопрос, которым руководствуется любой подход к измерению памяти во временных рядах, заключается в следующем. Сообщает ли нам прошлое о будущем? Иными словами, уменьшает ли знание всех прошлых значений до настоящего момента нашу неопределенность относительно следующего значения временного ряда?

Канонической мерой неопределенности случайной величины является ее энтропия, если она существует.


Энтропия распределения вероятностей с функцией плотности p относительно базовой меры dμ.

Энтропия случайной величины - это энтропия ее распределения вероятностей.

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


Условная энтропия y при x.

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


Мера памяти или авто-предсказуемости временного ряда.

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

В случае стационарных временных рядов PR ({X}) всегда существует и определяется разницей между энтропией любого наблюдения и скоростью энтропии временного ряда.

Мера авто-предсказуемости стационарного временного ряда.

В нашей Yellow Paper мы предлагаем подход на основе максимальной энтропии для оценки PR ({X}). На следующем графике показано, сколько памяти в акциях, фьючерсах и валютах.


Память в ежедневных доходностях по валютам, фьючерсам и акциям США.

Память не имеет ничего общего со стационарностью

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

Действительно, в случае стационарных гауссовских процессов можно показать, что мера автопредсказуемости имеет вид

Мера автопредсказуемости стационарного гауссовского временного ряда со спектром мощности g.

Стоит отметить, что PR({X}) = 0 тогда и только тогда, когда спектр мощности постоянен, то есть временной ряд представляет собой стационарный гауссовский белый шум, в противном случае PR({X})> 0. Стационарному белому шуму не хватает памяти, потому что он неподвижен, ему не хватает памяти, потому что это, ну […], белый шум!

Чем более неравномерен спектр мощности, тем больше памяти во временном ряду. Чем ровнее функция автоковариации, тем круче спектр мощности и, следовательно, выше показатель автопредсказуемости, и тем больше памяти имеет временной ряд. Примером такой плоской автоковариационной функции является квадратно-экспоненциальная ковариационная функция


в пределе, когда входной параметр масштаба длины l стремится к бесконечности.


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

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

Память не имеет ничего общего с ассиметрией/эксцессом

Другое заблуждение относительно памяти (см., например, главу 5, стр. 83 вышеупомянутой книги) состоит в том, что есть «асимметрия и избыточный эксцесс, который приходит с памятью». Это тоже неверно. Как обсуждалось ранее, можно генерировать временные ряды, которые являются гауссовскими (следовательно, не искаженными и не лептокуртическими), стационарными и имеют произвольно длительную память.

Повторяющиеся разности, стационарность и память

Итерированное взятие разности не делает временной ряд более стационарным, оно делает временной ряд более беспамятным!

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

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

Интуитивно, в том же духе, чем больше порядок разности временного ряда в смысле оператора обратного сдвига, тем большему количеству шоков (в стохастическом смысле) будет подвергаться временной ряд, и, следовательно, чем ближе будут его выборки к взаимной независимости, но не обязательно одинаково распределенными!

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

Пример временных рядов, которые нельзя сделать стационарными с помощью итеративного дифференцирования. {W} - стандартный винеровский процесс.

Его дифференцирование порядка 1 полностью без памяти, поскольку приращения винеровского процесса независимы.


Его функция дисперсии g(t) изменяется во времени, поэтому {y} нестационарна.

Точно так же дифференцирование {y} порядка (d + 1) является как рядом без памяти, так и нестационарным для любого d> 0. В частности, последующие повторные дифференцирования читаются как


и их зависящие от времени функции дисперсии читаются как


Это выражение явно взрывается по t для каждого d и не сходится по d ни для какого t. Другими словами, последовательные дифференцирования не выравнивают функцию дисперсии и, следовательно, не делают этот временной ряд более стационарным!

Случайное блуждание, стационарное или нет, обычно проходит большинство тестов на единичный корень!

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

Рассмотрим, например, тест ADF.

Модель регрессии, лежащая в основе расширенного теста Дики-Фуллера.

Если временной ряд {y} не имеет памяти, но не является стационарным, аппроксимация обычным методом наименьших квадратов (OLS), лежащая в основе теста ADF, не может привести к идеальному соответствию. Как это отклонение будет объяснено OLS с достаточно большой выборкой? Поскольку временной ряд не имеет памяти, OLS обычно находит свидетельство того, что γ близко к 1, так что тест ADF должен отклонить нулевую гипотезу о том, что γ = 0, чтобы сделать вывод о том, что временной ряд не имеет единичного корня (т. е. стационарная АР). Изменяющаяся во времени дисперсия {y} обычно наблюдается с помощью члена стационарного шума {e}.

Чтобы проиллюстрировать этот момент, мы генерируем 1000 случайных чисес, равномерно распределенных случайным образом от 0 до 1 и используем эти числа как стандартные отклонения 1000 независимо сгенерированных гауссиан со средним нулевым значением. Результат представлен ниже.


Нестационарный временной ряд без памяти (слева) и его изменяющееся во времени стандартное отклонение (справа).

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

ADF Statistic: -34.0381
p-Value: 0.0000
Critical Values:
1%: -3.4369
5%: -2.8644
10%: -2.5683

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

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

Заключительные мысли

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

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

Приложение: код

%matplotlib inline
import matplotlib
matplotlib.rcParams.update({'font.size': 22})
import numpy as np
import pylab as plt
from scipy.spatial.distance import pdist, squareform, cdist
from statsmodels.tsa.stattools import adfuller
def cov_matrix(ts, hypers):
"""
Auto-covariance matrix corresponding to the
Squared-Exponential auto-covariance function.
"""
cM = pdist(ts)
d = squareform(cM)
C = hypers[0]*hypers[0]*np.exp(-0.5*d*d*hypers[1]*hypers[1])
return C
# EXPERIMENT 1: Stationarity can't be tested from a single path.
# Step 1. Construct a path of a stationary Gaussian time series with mean 100
# and auto-covariance function
# \mathbb{C}\text{ov}(y_u, y_v) = # 100 \exp\left(-\frac{1}{2} \left(\frac{u-v}{5}\right)^2\right)
# + \frac{1}{25} \mathbb{1}\left(u==v\right)
np.random.seed(0) # Seed the random number generator for reproducibility
hypers = np.array([10.0, 1./5.0])
ts_1 = list(np.arange(0, 5., 1./200.))
ts_2 = list(np.arange(5, 500, 1))
ts = np.array([ts_1 + ts_2]).T
cov = cov_matrix(ts, hypers)
mean = 100.0
ys = mean + np.random.multivariate_normal(np.zeros(len(ts)), cov) + 0.2*np.random.randn((len(ts)))
ys_1 = ys[:len(ts_1)]
ys_2 = ys[len(ts_1):]
# Step 2. Plot the time series over the short time interval.
plt.plot(ts_1, ys_1, '.b')
plt.xlabel(r'''$t$''', {'fontsize': 20})
plt.ylabel(r'''$y_t$''', {'fontsize': 20})
plt.gcf().set_size_inches(18.5, 10.5)
plt.show()
# Step 3. Use the ADF test to test stationary based on the
# restricted path.
result = adfuller(ys_1)
print('ADF Statistic: %.4f' % result[0])
print('p-Value: %.4f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.4f' % (key, value))
# Step 4. Now, plot the time series over the full time interval.
plt.plot(ts_2, ys_2, '--r', ts_1, ys_1, '.b')
plt.xlabel(r'''$t$''', {'fontsize': 20})
plt.ylabel(r'''$y_t$''', {'fontsize': 20})
plt.gcf().set_size_inches(18.5, 10.5)
plt.show()
# Step 5. Use the ADF test to test stationary based on the
# longer path.
result = adfuller(ys_2)
print('ADF Statistic: %.4f' % result[0])
print('p-Value: %.4f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.4f' % (key, value))
# EXPERIMENT 2: Stationarity doesn't preclude memory.
# Generate 10 independent draws from a stationary
# Gaussian process with Squared-Exponential covariance function
# with unit input and output scales.
hypers_1 = np.array([1., 1.])
cov_1 = cov_matrix(np.array([ts_1]).T, hypers_1)
f, ax1, = plt.subplots(1, sharex=False, sharey=False)
f.set_size_inches(18.5, 10.5)
for i in range(10):
ys_1 = np.random.multivariate_normal(np.zeros(len(ts_1)), cov_1)
ax1.plot(ts_1, ys_1)
ax1.set_xlabel(r'''$t$''', {'fontsize': 20})
ax1.set_ylabel(r'''$y_t$''', {'fontsize': 20})
plt.show()
# EXPERIMENT 3: A memoryless process, stationary or not,
# would typicallyy pass the ADF test.
# Step 1: Generate a white noise with time-varying variances.
std = np.random.rand(1000)
ys = std*np.random.randn(1000)
# Step 2: Plot both the noise and its time-varying standard deviations.
f, (ax1, ax2) = plt.subplots(1, 2, sharex=False, sharey=False)
f.set_size_inches(18.5, 10.5)
ax1.plot(ys, '-b')
ax1.set_ylabel(r'''$y_t$''', {'fontsize': 20})
ax1.set_xlabel(r'''$t$''', {'fontsize': 20})
ax2.plot(std, '-r')
ax2.set_xlabel(r'''$t$''', {'fontsize': 20})
ax2.set_ylabel(r'''$\sigma_t$''', {'fontsize': 20})
plt.show()
# Step 3: Run the ADF test.
result = adfuller(ys)
print('ADF Statistic: %.4f' % result[0])
print('p-Value: %.4f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.4f' % (key, value))

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

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