Блог им. Kot_Begemot

Авторегрессия волатильности как задача для стохастического градиентного спуска.


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


В качестве показателя качества моделей нами была выбрана доля объяснённой дисперсии:


Авторегрессия волатильности как задача для стохастического градиентного спуска.


и промоделирована ошибка измерения волатильности заданного стационарного процесса на интересующем нас интервале: 


Авторегрессия волатильности как задача для стохастического градиентного спуска.
Рис.1. Измерение волатильности белого шума ~ N(0,1) на 5-и дневном интервале.

Среднеквадратичная ошибка измерения волатильности составила 0.3 = 30% от собственной волатильности шума. А прогностическая модель IV=1, то есть лучшая из всех возможных моделей, пользующаяся априорно известными данными, показала уровень качества  0.9.  Таким образом, мы получили оценку максимально возможной точности прогноза волатильности на период недельного интервала.


Для тестирования спектра моделей были выбраны акции ПАО Газпром и ПАО Сбербанк историей за 10 лет (Is выборка), в предположении покупки недельных опционов (5 дневная «OoS» выборка), по известной годовой предыстории (240 дневная выборка).

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


Авторегрессия волатильности как задача для стохастического градиентного спуска.
Рис.3. Сбербанк. Распределение измеренной волатильности внутри недельных интервалов.


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

  • Simple Moving Average 
  • SVD-SSA 
  • GARCH(1,0)    
                  Авторегрессия волатильности как задача для стохастического градиентного спуска. 
  • ARCH(240)
                Авторегрессия волатильности как задача для стохастического градиентного спуска.
  • +некоторые другие

Как ни странно, наилучшими результатами отличились стандартные ARCH и GARCH модели :

Авторегрессия волатильности как задача для стохастического градиентного спуска.
Рис. 4. Сбербанк. Обобщение данных GARCH(1,0) моделью. Доля объяснённой дисперсии = 0.8.

Авторегрессия волатильности как задача для стохастического градиентного спуска.
Рис. 5. Сбербанк. Обобщение данных АRCH(0,240) моделью. Доля объясненной дисперсии = 0.83;


Соответственно, с учётом предельной точности моделей 0.9, можно говорить о том, что ARCH и GARCH модели волатильности по отношению к рынку являются исчерпывающими, а их коэффициенты — стационарными, достаточными для того, чтобы можно было строить глобальные статистические модели, методом стохастического градиентного спуска.
★14
30 комментариев
Eugene Logunov, 

Из каких соображений выбран порядок модели? 

От винта! Подбирать порядок модели это уже отдельная задача. 240 — это достаточно много чтобы набрать статистику и мало-ли, вдруг там сезонность появится? Глазом-то она вроде бы и есть (из-за сглаживания линейным фильтром оценок дисперсии), но SSA её не ловит (точнее ловит, но в убыток). 


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

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

EWMA пробовали?

Нет. Но, быть может, попробую. Пока у меня есть сомнения на счёт EWMA и подобных взвешиваний ряда. Время от времени он угадывает, но чтобы по всем рядам и рынкам его гонять — тут проблема.
avatar
Теперь стало гораздо понятней, как торговать в плюс)
avatar

Eugene Logunov, нужно очень четко понимать почему используется та или иная формула. А то можно обмануться дорого. Да, СМА гавкает дважды, но зато она меряет то, что должна мерять — второй центральный момент распределения.

 

А что померяет ЕМА? Меряет ли она второй момент? Будет ли оценка смещенной? Какая у неё будет дисперсия?

avatar

Eugene Logunov, звучит уверенно, но не убедительно.

С уважением и благодарностью.

avatar
ch5oh, а чего вы боитесь? EMA это по сути такая разновидность бутстрэпа и подобных методов перевыборок выборки. Если у вас какой-то стационарный процесс, то сместить оценку это не должно, но разброс из-за меньшего эффективного количества наблюдений — увеличит.

А если у вас какой-то процесс с памятью, какой-нибудь switch процесс, вроде HMM и тому подобное, то смещением будет обладать уже обычная оценка, увязшая в уже «поломанных» статистиках. 

Если волатильность подчиняется трендам… (её АКФ(1)>0), переходит из состояния в состояние (АКФ(1)>0) или, например, представляет из себя некоторое броуновское движение (АКФ(1)>0), то ЕМА просто обязана обладать меньшим смещением.
avatar

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

 

Если ЕМА этим свойством не обладает (а вдруг?), то на мой взгляд это однозначное и недвусмысленное указание на то, что использовать её нельзя.

avatar
ch5oh, да, но давайте на секундочку представим, что волатильность подчиняется броуновскому закону и её АКФ(1)~=1.

Но, как показано в самом начале, измерение волатильности даже за 5 шагов даёт колоссальную ошибку в 30%! Поэтому, как и при подсчете МОЖ, нам приходится набирать наблюдения в выборку, чтобы повысить точность нашей оценки до каких-то приемлемых значений.

Но вот незадача — предсказательной силой обладает только последняя волатильность, а мы, как по проклятью Гейзенберга, не можем её измерить! Остаётся только идти на компромисс — набирать выборку в не предсказательную глубь, с одной стороны, но преимущественно из последних значений — с другой. ЕМА/АRCH, собственно, эту проблему как-то решают.

На этой балансировке между точностью измерений и точностью прогноза все эти фильтры и держаться. Например фильтр Калмана (он же ЕМА) — вводится для учёта последних изменений, в случае неточности их измерений.
avatar

Kot_Begemot, минуточку, коллега. Давайте сначала продемонстрируем, что волатильность имеет АКФ(1)~=1, тогда и будем ломать голову, что с этим делать.

 

Более того, не вполне очевидно что именно мы должны исследовать: волатильность, или приращения волатильностей? Или, может быть, приращения логарифмов волатильности?

 

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

avatar
А на основании чего сделан вывод о стационарности коэффициентов? Сравнивались распределения ошибок модели на разных временных участках? Если да, то по каким критериям? 

И что такое «измеренная волатильность внутри недельных интервалов»? Как строятся недельные интервалы приращений цен-с пересечением или без? 
avatar
А. Г., 

И что такое «измеренная волатильность внутри недельных интервалов»?

Очень просто — берём недельный интервал f э (t,t+5)  и считаем на нём

std = (f' * f / 5 )^0.5; 


Как строятся недельные интервалы приращений цен-с пересечением или без? 

Да. Если без пересечений, то точек мало получается. С «обучающей» выборкой не пересекаются.


Сравнивались распределения ошибок модели на разных временных участках?

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

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

А что такое f?

f — столбец длинной 5 строк логарифмических приращений цен. 

avatar
Kot_Begemot, стационарность модели может быть подтверждена только стационарностью распределения ошибки во времени. 
avatar
А. Г., когда вы строите любой фильтр, кроме, быть может, частотного подавления (Gate, SSA и т.п.), он начинает обладать эффектом запаздывания, выраженном в том, что его ошибка всегда смещена от сигнала к нулю или к среднему уровню сигнала. На положительных сигналах, соответственно, ошибка положительна, на отрицательных — отрицательна.





Это не означает, что ваш фильтр должен обладать какими-то нестационарными параметрами или работает неправильно, наоборот.

Если говорить о фильтрах, применяемых в технике, то они обычно все частотные  ( что не удивительно, так как работают с техническими сигналами), но для фильтрации статистических наблюдений, например контроля положения и скорости объекта в пространстве, используются фильтры с «запаздыванием».
avatar
Kot_Begemot, мы же говорим не о фильтре, а о модели, оценивающей некий показатель. А для такой модели ошибка должна несмещенной, т. е. среднее разности между показателем и модельным значением должно быть равно нулю. Это как минимум. А о стационарности модели можно говорить только в контексте стационарности временного ряда ошибок. Либо о стационарности в широком смысле, т. е., кроме нулевого среднего, у ошибки стационарны  дисперсия и АКФ, либо в узком, когда стационарны распределения любого вектора конечной размерности во временном ряде ошибок.

Я же спрашивал о более «слабой» проверке стационарности: проверке стационарности одномерных распределений во временном ряде ошибок.
avatar
А. Г., 

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

Среднее разности = 0 или очень близкое к нулю. Но вы спрашиваете о среднем разности во времени.


А о стационарности модели можно говорить только в контексте стационарности временного ряда ошибок.

Это несколько спорное утверждение. Если вы имете модель типа Line Trend, то да — нестационарность ошибки во времени говорит вам о том, что параметры модели должны изменяться во времени вместе с параметрами рынка.

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



Аналогично со смещением ошибки. Если вы рассмотрите связь BR и USD/RUB, например, или любую другую аналогичную связь (Unemployment-Inflation) то из-за особенностей задающего сигнала и, не меньше, из-за частоты измерений вы получите коррелированную ошибку, распределенную во времени нестационарно со смещением.

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


Я же спрашивал о более «слабой» проверке стационарности: проверке стационарности одномерных распределений во временном ряде ошибок.

Я так понимаю это t-test ошибок через каждые 10,20,100 отсчётов, так? Нет, такого я не проводил.
avatar
Kot_Begemot,   t-тест — это только проверка стационарности среднего, для дисперсий надо проводить F-тест, ну а для распределений это уже Колмогоров-Смирнов или Манн-Уитни.
Как добить на участки — это вопрос творческий, главное, чтобы были непересекающиеся.

Если Вы считаете, что дисперсия ошибки зависит от значения показателя, значит нужна предварительная нормировка.

Ведь это же просто: если  временной ряд ошибок модели  неким преобразованием не приводится к стационарному со средним нуль, то предикативная ценность такой модели нулевая. 
avatar
А. Г., 

Как добить на участки — это вопрос творческий, главное, чтобы были непересекающиеся.

В том- то и проблема, что стат тесты — дело очень «творческое» и ещё более «творческое» дело их интерпретация.


Ведь это же просто: если  временной ряд ошибок модели  неким преобразованием не приводится к стационарному со средним нуль, то предикативная ценность такой модели нулевая. 

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

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

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

Простая игра с выигрышами [-1,-1,-1,-1,-1,-1,-1,8] — генеральная совокупность — тоже не будет иметь стационарной ошибки, по крайней мере, вне зависимости от «творческого подхода» в нарезке ряда.  

Если вам заранее известно, что ряд стационарен и распределён каким-то симметричным образом, а вы, при этом, предсказываете приращения ряда, то, ваша «простота» в большинстве случаев будет оправдана.

avatar
Зачем «строить глобальные статистические модели методом стохастического градиентного спуска»?
avatar
SergeyJu, только так и делается. Локальная модель всегда пересчитывается полностью, глобальная — считается итерационно-поправочными методами. Если машинного времени не жалко, то можно каждый раз пересчитывать по всей Big Data.
avatar
Kot_Begemot, хорошо, модель чего Вы делаете и зачем она Вам нужна? 
avatar
SergeyJu, странный вопрос. Прогнозирую волатильность с различными целями. Мне, вообще, для ковариаций нужно и для учёта рисков, но кто его знает… с моими наработками впору уже опционами заниматься, а не акциями.
avatar
SergeyJu, у меня аналогичный вопрос про градиентный спуск возник. Так и не понял он тут причем? Он используется в методах оптимизации в основном в portfolio construction для минимизации целевой функции риска.
avatar
Kot_Begemot, аналогичный вопрос — какую целевую функцию Вы собрались минимизировать методом стохастического градиентного спуска?

Вот еще цитата: «можно было строить глобальные статистические модели». Но модели чего? Где, в каком месте будет непосредственный выход на портфели/трейдинг?
avatar
Манул Кот, в технике работы с Big Data или при расчете задач большой сложности, например при поиске оптимальной стратегии стохастической игры с неполной информацией  (моделирование военных сценариев, игра в покер и т.д.) только стохастическим градиентным спуском и пользуются, так как в лоб, в силу большого числа данных / предполагаемых данных (возможностей) такие задачи не решаются.  

В данном случае, оговаривается, что модель представляется стационарной и можно пользоваться поправочными методами. Это не означает, что мои решения были получены этим методом — нет, они получены в лоб, решением СЛАУ через обратные матрицы. Но, раз уж мы находим некоторое устойчивое решение, то можно его заменить на Real-Time методы оценки. (Для массивов акций по 3000 эмитентов, то есть для обработки индекса Russel 3000 как раз самое то) 

Но модели чего?

Волатильности. Следующий шаг, частично уже проделанный — ковариации.
Ковариация активов тоже не стационарная величина. Но пока что различными методами прогнозирования — SSA с учётом сезонности, Line Trend и т.п. её спрогнозировать не удаётся. С волатильностью, как оказывается, всё аналогично.

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

Где, в каком месте будет непосредственный выход на портфели/трейдинг?

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

Eugene Logunov, АКФ модулей returns — это ещё одна отдельная величина. Связана ли она с волатильностью? Безусловно. Но она не является сама по себе волатильностью. А топикстартер (насколько понял) указал мне именно на то обстоятельство, что «АКФ волатильности»достаточно высокое не первом лаге и поэтому усреднение формулой SMA является плохой идеей.

 

=) Ладно, уже какая-то казуистика пошла. Обменялись мнениями, летим дальше.

avatar
ch5oh, да, именно так. У волатильности (модуль, скв.) АКФ(1)~=0.18. 
avatar

теги блога Kot_Begemot

....все тэги



UPDONW
Новый дизайн