В этом примере показано, как использовать вейвлеты для анализа финансовых данных.
Разделение совокупных данных на различные временные шкалы является мощным инструментом для анализа финансовых данных. Различные рыночные силы влияют на экономические отношения в течение различных периодов времени. Экономические потрясения локализуются во времени и в течение этого периода времени проявляют колебания различной частоты.
Некоторые экономические индикаторы задерживаются, лидируют или совпадают с другими переменными. Различные участники финансовых рынков рассматривают рыночную механику в более коротких и длинных шкалах. Такие термины, как «краткосрочный» и «долгосрочный», являются центральными в моделировании сложных отношений между финансовыми переменными.
Вейвлеты разлагают данные временных рядов на различные шкалы и могут выявить отношения, не очевидные в совокупных данных. Кроме того, часто можно использовать свойства коэффициентов вейвлета, чтобы вывести основанные на шкале оценки для отклонения и корреляции и проверить на значительные различия.
Существуют несколько различных изменений вейвлет. Этот пример фокусируется на максимальном перекрывании дискретного вейвлет (MODWT). MODWT является неопределенным вейвлет по диадическим (степеням двойки) шкалам, которое часто используется с финансовыми данными. Одной из приятных функций MODWT для анализа временных рядов является то, что он разделяет отклонение данных по шкалам. Чтобы проиллюстрировать это, рассмотрим ежеквартальные взвешенные по цепочке данные о реальном ВВП США для 1947Q1 к 2011Q4. Данные были преобразованы путем сначала взятия естественного логарифма, а затем вычисления различия за год. Получите MODWT реальных данных ВВП до шестого уровня с вейвлет 'db2'. Исследуйте дисперсию данных и сравните ее с отклонениями по шкале, полученной с помощью MODWT.
load GDPExampleData; realgdpwt = modwt(realgdp,'db2',6); vardata = var(realgdp,1); varwt = var(realgdpwt,1,2);
В vardata
у вас есть отклонение для совокупных временных рядов ВВП. В varwt
у вас есть отклонение по шкале для MODWT. В varwt
семь элементов поскольку вы получили MODWT до шестого уровня, что привело к шести дисперсиям вейвлет-коэффициентов и одной дисперсии масштабирующего коэффициента. Суммируйте отклонения по шкале, чтобы увидеть, что отклонение сохранено. Постройте график отклонений вейвлета с помощью шкалы, игнорирующей дисперсию коэффициента масштабирования.
totalMODWTvar = sum(varwt); bar(varwt(1:end-1,:)) AX = gca; AX.XTickLabels = {'[2 4)','[4 8)','[8 16)','[16 32)','[32 64)','[64 128)'}; xlabel('Quarters') ylabel('Variance') title('Wavelet Variance by Scale')
Поскольку эти данные являются ежеквартальными, первая шкала захватывает изменения между двумя и четырьмя четвертями, вторая шкала между четырьмя и восемью, третья между 8 и 16 и так далее.
Из MODWT и простой столбиковой диаграммы видно, что циклы в данных от 8 до 32 кварталов составляют наибольшее отклонение в данных ВВП. Если учесть отклонения вейвлет на этих шкалах, они составляют 57% изменчивости в данных ВВП. Это означает, что колебания в ВВП в течение периода от 2 до 8 лет составляют большую часть изменчивости, наблюдаемой во временных рядах.
Вейвлет часто может выявить изменения волатильности, не заметные в совокупных данных. Начнем с графика данных ВВП.
helperFinancialDataExample1(realgdp,year,'Year over Year Real U.S. GDP')
Затенённая область упоминается как «Великая умеренность», означающая период пониженной макроэкономической волатильности в США, начиная с середины 1980-х годов.
Исследуя совокупные данные, неясно, что на самом деле в этот период снижается волатильность. Используйте вейвлеты, чтобы исследовать это, сначала получив мультирезолюционный анализ реальных данных ВВП с помощью вейвлета 'db2' до уровня 6.
realgdpwt = modwt(realgdp,'db2',6,'reflection'); gdpmra = modwtmra(realgdpwt,'db2','reflection');
Постройте график деталей уровня 1, D1. Эти детали захватывают колебания в данных между двумя и четырьмя четвертями в длительности.
helperFinancialDataExample1(gdpmra(1,:),year,... 'Year over Year Real U.S. GDP - D1')
Исследуя детали уровня один, появляется уменьшение отклонения в период Великой Модерации.
Протестируйте вейвлет первого уровня для значительных точек изменения отклонения.
[pts_Opt,kopt,t_est] = wvarchg(realgdpwt(1,1:numel(realgdp)),2); years(pts_Opt)
ans = duration 142 yrs
Существует точка изменения отклонения, идентифицированная в 1982 году. Этот пример не исправляет задержку, введенную вейвлетом 'db2' на первом уровне. Однако эта задержка составляет только две выборки, поэтому она не оказывает заметного влияния на результаты.
Чтобы оценить изменения в волатильности данных ВВП до и после 1982 года, разделите исходные данные на серии до и после изменений. Получите вейвлет набора наборов данных до и после. В этом случае ряд относительно короток, поэтому используйте wavelet Haar, чтобы минимизировать количество граничных коэффициентов. Вычислите объективные оценки отклонения вейвлета по шкале и постройте график результата.
tspre = realgdp(1:pts_Opt); tspost = realgdp(pts_Opt+1:end); wtpre = modwt(tspre,'haar',5); wtpost = modwt(tspost,'haar',5); prevar = modwtvar(wtpre,'haar','table'); postvar = modwtvar(wtpost,'haar','table'); xlab = {'[2Q,4Q)','[4Q,8Q)','[8Q,16Q)','[16Q,32Q)','[32Q,64Q)'}; helperFinancialDataExampleVariancePlot(prevar,postvar,'table',xlab) title('Wavelet Variance By Scale'); legend('Pre 1982 Q2','Post 1982 Q2','Location','NorthWest');
Из предыдущего графика видно, что существуют значительные различия между pre-1982Q2 и post-1982Q2 отклонениями в шкалах от 2 до 16 четвертей.
Поскольку временные ряды в этом примере настолько коротки, может быть полезно использовать смещенные оценки отклонения. Смещенные оценки не удаляют граничные коэффициенты. Используйте вейвлет 'db2' с четырьмя коэффициентами.
wtpre = modwt(tspre,'db2',5,'reflection'); wtpost = modwt(tspost,'db2',5,'reflection'); prevar = modwtvar(wtpre,'db2',0.95,'EstimatorType','biased','table'); postvar = modwtvar(wtpost,'db2',0.95,'EstimatorType','biased','table'); xlab = {'[2Q,4Q)','[4Q,8Q)','[8Q,16Q)','[16Q,32Q)','[32Q,64Q)'}; figure; helperFinancialDataExampleVariancePlot(prevar,postvar,'table',xlab) title('Wavelet Variance By Scale'); legend('Pre 1982 Q2','Post 1982 Q2','Location','NorthWest');
Результаты подтверждают наш первоначальный вывод о том, что Великая Умеренность проявляется в снижении волатильности по шкалам от 2 до 16 четвертей.
Можно также использовать вейвлеты для анализа корреляции между двумя наборами данных по шкале. Изучить корреляцию между совокупными данными о государственных расходах и частных инвестициях. Данные охватывают тот же период, что и реальные данные по ВВП, и преобразуются точно так же.
[rho,pval] = corrcoef(privateinvest,govtexp);
Государственные расходы и личные инвестиции демонстрируют слабую, но статистически значимую отрицательную корреляцию -0,215. Повторите этот анализ с помощью MODWT.
wtPI = modwt(privateinvest,'db2',5,'reflection'); wtGE = modwt(govtexp,'db2',5,'reflection'); wcorrtable = modwtcorr(wtPI,wtGE,'db2',0.95,'reflection','table'); display(wcorrtable)
wcorrtable = 6x6 table NJ Lower Rho Upper Pvalue AdjustedPvalue ___ ________ ________ __________ _________ ______________ D1 257 -0.29187 -0.12602 0.047192 0.1531 0.7502 D2 251 -0.54836 -0.35147 -0.11766 0.0040933 0.060171 D3 239 -0.62443 -0.35248 -0.0043207 0.047857 0.35175 D4 215 -0.70466 -0.32112 0.20764 0.22523 0.82773 D5 167 -0.63284 0.12965 0.76448 0.75962 1 S5 167 -0.63428 0.12728 0.76347 0.76392 1
Многомасштабная корреляция, доступная с MODWT, показывает значительную отрицательную корреляцию только в шкале 2, которая соответствует циклам в данных между 4 и 8 кварталами. Даже эта корреляция незначительно значима при корректировке для нескольких сравнений.
Многомасштабный корреляционный анализ показывает, что легкая отрицательная корреляция в совокупных данных определяется поведением данных по шкалам от четырех до восьми четвертей. Когда вы рассматриваете данные за различные периоды времени (шкалы), нет значительной корреляции.
С финансовыми данными часто существует ведущая или отстающая связь между переменными. В этих случаях полезно изучить последовательность перекрестной корреляции, чтобы определить, максимизирует ли отставание одной переменной по отношению к другой их перекрестную корреляцию. Для того чтобы проиллюстрировать это, рассмотрим взаимосвязь между двумя компонентами ВВП -- личными расходами на потребление и валовыми частными внутренними инвестициями.
piwt = modwt(privateinvest,'fk8',5); pcwt = modwt(pc,'fk8',5); figure; modwtcorr(piwt,pcwt,'fk8')
Личные расходы и личные инвестиции отрицательно коррелируют в течение 2-4 кварталов. В более длительных шкалах наблюдается сильная положительная корреляция между личными расходами и личными инвестициями. Исследуйте вейвлет последовательность в шкале, представляющей 2-4 квартальных цикла.
[xcseq,xcseqci,lags] = modwtxcorr(piwt,pcwt,'fk8'); zerolag = floor(numel(xcseq{1})/2)+1; plot(lags{1}(zerolag:zerolag+20),xcseq{1}(zerolag:zerolag+20)); hold on; plot(lags{1}(zerolag:zerolag+20),xcseqci{1}(zerolag:zerolag+20,:),'r--'); xlabel('Lag (Quarters)'); grid on; title('Wavelet Cross-Correlation Sequence -- [2Q,4Q)');
Самая мелкая вейвлет корреляционная последовательность показывает пиковую положительную корреляцию с задержкой в одну четверть. Это указывает на то, что личные инвестиции отстают от личных расходов на один квартал.
Используя дискретный вейвлет, вы ограничены диадическими шкалами. Это ограничение снимается при использовании непрерывного вейвлет.
Загрузка данных по темпам инфляции в США за период с мая 1961 года по ноябрь 2011 года.
load CPIInflation; figure plot(yr,inflation) AX = gca; AX.XTick = 1962:10:2011; title('CPI Inflation -- 1961 to 2011') axis tight; grid on; xlabel('Year')
В данных о времени медленное колебание появляется в начале 1970-х годов и, похоже, рассеивается к концу 1980-х годов.
Чтобы охарактеризовать периоды повышенной летучести, получите непрерывное вейвлет-преобразование (CWT) данных с помощью аналитического вейвлета Морле.
cwt(inflation,'amor',years(1/12));
AX = gca;
AX.XTick = 8/12:10:596/12;
AX.XTickLabels = yr(round(AX.XTick*12));
CWT обнаруживает самые сильные колебания в данных по уровню инфляции в приблизительной области значений 4-6 лет. Эта волатильность начинает рассеиваться к середине 1980-х годов и характеризуется как постепенным снижением инфляции, так и сдвигом волатильности к более длительным периодам. Сильные циклы волатильности в 1970-х годах и в начале 1980-х годов являются результатом энергетического кризиса 1970-х годов (нефтяные потрясения), который привел к стагфляции (стагнация роста и инфляция) в основных промышленно развитых странах. Подробный анализ этих и других макроэкономических данных на основе CWT см. в разделе [1]. Этот пример воспроизводит небольшую часть более широкого и подробного анализа в этой статье.
В этом примере вы научились использовать MODWT для анализа многомасштабной волатильности и корреляции в данных финансовых временных рядов. Пример также продемонстрировал, как вейвлеты могут использоваться для обнаружения изменений летучести процесса с течением времени. Наконец, пример показал, как CWT может использоваться для характеристики периодов повышенной волатильности в финансовых временных рядах. Ссылки предоставляют более подробную информацию о вейвлетах для финансовых данных и анализа временных рядов.
В этом примере используются следующие вспомогательные функции.
[1] Aguiar-Conraria, L., M. M. F. Martins, and M. J. Soares. Кривая выражения и макроэкономика по времени и частотам. Журнал экономической динамики и контроля. Том 36, № 12, 2012, стр. 1950-1970.
[2] Crowley, P. M. «A Guide to Wavelets for Economists». Журнал экономических обследований. Том 21, № 2, 2007, стр. 207-267.
[3] Gallegati, M., and W. Semmler (Eds.). Вейвлет в экономике и финансах. Гейдельберг, Германия: Springer International Publishing, 2014.
[4] Персиваль, Д. Б., и А. Т. Уолден. Вейвлет для анализа временных рядов. Кембридж, Великобритания: Cambridge University Press, 2000.