Поиск по сайту:
Гость
Редакционная политика

Готовим ценовые данные правильно. Часть 1: ужасы гетероскедастичности.

18.03.2013 21:14 - mehanizator - Индикаторы, Стратегии
Когда вы пытаетесь построить некую модель, которая предсказывала бы будущее изменение цены, она обычно выглядит так: на вход подаются какие-то факторы, полученные из ценовых данных, например индикаторы какие-нибудь, а на выходе имеем оценку сдвига цены, ну, например, за день.

Обычно вашей первой мыслью на этом пути будет использовать изменения цен как есть, то есть (Close/Open - 1), например. Особо хитрые могут взять ln(Close/Open), и так правильнее, кстати. Скорее всего большинство входов модели будут представлять собой линейные комбинации вот этих самых изменений цен за прошлые бары.

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

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

Вроде все правильно и логично, да?

Нет!

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

Абсолютные значения дневных сдвигов SPY:


Если вы будете пытаться построить линейную модель на неоднородных по дисперсии данных, вы получите мусор!

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

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

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

Модель должна опираться на все данные в равной мере!

Как этого добиться? Мой вариант - нужно нормировать ценовые сдвиги на текущую волатильность. Ее можно оценивать по-разному:
1. средний диапазон бара ln(High/Low) за N баров
2. диапазон цены за N баров - фактически то же самое что 1, только с коэффициентом sqrt(N).
3. среднее абсолютное значение сдвига цены за N баров
4. СКО сдвига цены за N баров.

Я обычно использую первый способ.

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

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

Нормированные сдвиги цен SPY:


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

Нужно разобрать график цены на ценовые сдвиги, нормировать их на волатильность, и собрать обратно. На этом синтетическом инструменте уже можно что-то тестировать. Пример таких инструментов для S&P и MICEX.


Автор: Александр Кургузкин (aka mehanizator)


Другие статьи по теме:


Готовим ценовые данные правильно. Часть 2: в поисках лучшей нормировки
LowVol своими руками: делаем из SPY фонд низкой волатильности
CAPM и индикатор перетока рисков
Понравилась статья? Перепост приветствуется!

Ваш комментарий:

1 2

Комментарии (последние вверху):

21.01.2015 21:33 - Dserg:
Спасибо, интересная статья.
Попробовал нормировать на волатильность CAC и DAX. А потом торговать отношение D/C (Buy and Hold). Максимальная просадка для нормированных индексов снизилась на 40%, средняя - на 25%. Это впечатляет.
Вопрос такой: как торговать синтетическое отношение двух нормированных индексов? Не совсем понятно, как рассчитать размер позиции, что делать если по одному индексу изменится волатильность?
28.08.2014 13:15 - Kent:
Дам здесь простое правило без тонкостей.
При определении Размера капитала в сделке, закладывайтесь, что вы можете получить 5-10 лоссов подряд и такая ситуация должна вас оставить в игре.
28.08.2014 13:06 - Kent:
В таком ключе согласен.
Кому интересно, в таком ключе ММ - конкретный способ - можно найти в логах тут.
28.08.2014 12:47 - dobrachev:
По-моему, Kent, это слишком громкие фразы, про то что "весь манименеджмент в топку" :)
Понятно, что если у нас убыточная МТС никакой ей ММ не поможет. А вот если она и правда прибыльная, какой должен быть максимальный риск на сделку? Ведь всё равно понятно, что имея 1000000 глупо ставить 1 копейку, зная что мат. ожидание действительно положительное. Но точно также откровенное безумие идти вабанк. Значит нужно искать ответ где-то между этими вариантами. Вот ММ как раз про это. Он и говорит сколько следует ставить на кон.
Я не спорю, что разработать прибыльную мтс - это 95% успеха, а простые правила ММ - это просто про то как не слиться даже с прибыльной мтс. И про Бернулли, конечно, всё правильно Вы пишите.
Но ведь дело в том, что весь бизнес форекс-кухонь фактически построен на том, что "буратины" сроду не слышали ни про какие правила ММ, и радостно "инвестируют" 100$ с плечом 1 к 200. Вот это и есть самый яркий пример работы ММ.
А то что не строить вторую мтс по своей эквити, с этим я конечно согласен :)
28.08.2014 08:33 - Kent:
Если желаете подробнее, то ищите на пауке, там много копий сломано на эту тему. Мой диагноз однозначен - рыбы нет.
Весь манименеджмент в топку.
28.08.2014 08:32 - Kent:
Это невозможно.
1. Конечно фазы рынка будут накладывать на поведение мтс свой отпечаток и соответственно на эквити. Но желательно такие вещи выявлять и включать в качестве фильтра в мтс.
2. Торговля эквити годам избитая тема, копий сломано много. Мое имхо, тут рыбы нет.
3. Обоснование. Любая мтс генерит последовательность сделок аналогично кривой монете, т.е. последовательность сделок с распределением Бернулли. https://ru.wikipedia.org/wiki/Распределение_Бернулли
В этом случае эквити из себя представляет СБ со сносом. СБ со сносом эквивалентно обычному СБ (случайное блуждание) только повернутому относительно оси Х на угол некоторый.
Есть теорема в теории вероятности, что на СБ невозможны никакие системы игры, т.е. они бессмысленны.
26.08.2014 01:18 - dragonorkhon:
Замечательная статья. Буквы знакомые, а смысл не ясен.
Понятно, только, что люди здесь умные собираются. Попробую вбросить свой вопрос, может прокатит?
Возьмем для начала этот пост: "ysmolentsev: По последнему абзацу, если тестить на синтетическом инструменте, то события входа-выхода могут сместиться во времени, в результате нарушится вся логика системы, не лучше ли нормировать не график цены, а график эквити?"
Я бы сказал, что единственное, что нас должно волновать, это именно график эквити. Потому, что это именно он образует нашу прибыль, и именно потому, что мы только им можем управлять. А теперь идея которая меня беспокоит: Поскольку графиком эквити синтетика мы можем управлять, почему бы нам не сформировать из него нечто вроде периодической функции с заданными параметрами - периодом и амплитудой? Предполагаю, что таким синтетическим инструментом, в простейшем случае, может быть инструмент составленный из позиций BUY и SELL одного единственного инструмента, например одной валютной пары. Можно сказать иначе: с помощью балансировки открытых позиций исключить трендовую составляющую и торговать флет, управляя его амплитудой. Стратегии для флета имеются, но они не устойчивы к трендам. По моему, это логичный шаг в сторону от арбитража и парного трейдинга. А что скажут товарищи ученые?
11.06.2014 11:22 - mehanizator:
Статья про то, как готовить данные для последующей работы. ТС и ММ остаются за рамками статьи.
11.06.2014 11:11 - hrenfx:
Следующий логичный шаг не стали делать?

Допустим, взяли МАшку с какими-то фиксированными параметрами. Прогнали ТС по ней - получили результаты.

Затем взяли вектор значений волатильности, что посчитали. И сделали ММ пропорциональным ей.

Каков будет результат ТС с таким ММ?
11.06.2014 10:59 - mehanizator:
при нормировке получается больше смысла в модели, потому что данные становятся значительно однороднее, и их СКО тоже уменьшается.
11.06.2014 10:52 - hrenfx:
Впервые столкнулся с такой терминологией. Спасибо за терпение, теперь понял!

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

Видимо, это просто хотелка построить такую модель. Попробую порассуждать вслух.

В качестве решения мы получил вектора из значений a1, a2 и т.д. Решение, видимо, тем лучше, чем меньше СКО этих векторов.

Правильно ли я понимаю, что при нормировки по волатильности СКО соответствующих коэффициентных векторов значительно уменьшается?
11.06.2014 10:21 - mehanizator:
входы - значения индикаторов, описывающих текущее состояние. выход - будущее изменение цены.
11.06.2014 10:04 - hrenfx:
Совсем запутался. Что такое тогда "входы" и "выходы"?
11.06.2014 09:58 - mehanizator:
задача в том, чтобы найти линейную формулу, которая бы максимально точно описывала связь между входами и выходом.

а1 * вход1 + а2 * вход2 + ... = выход
11.06.2014 09:10 - hrenfx:
Раз никто не задал подобного вопроса, значит, это типа очевидно для всех.

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

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

И решение матрицы, составление которой так и не осознал, это как раз и есть решение задачи минимизации расхождений?
11.06.2014 09:00 - mehanizator:
для каждого дня из K дней у вас имеется N значений входов и 1 значение выхода. получается матрица K x (N + 1).
11.06.2014 08:49 - hrenfx:
Возможен ли пример с МАшкой?
11.06.2014 08:46 - hrenfx:
МНК и ЛР - это все понятно. Не понимаю, как получается матрица, чтобы потом начать ее решать.

Мы имеем вектор входов - индикаторный ВР. Имеем вектор ценовых изменений - returns цВР. Что за матрица входы x выходы? - здесь загвоздка у меня.
11.06.2014 08:40 - mehanizator:
я не совсем понимаю, какие там могут быть затруднения. линейная регрессия, метод наименьших квадратов.
11.06.2014 08:05 - hrenfx:
Можно на пальцах? Не въезжаю что-то.
11.06.2014 07:05 - mehanizator:
Строим линейную модель зависимости будущих изменений цены от входов (индикаторов). Модель получается решением матрицы входы х выход методом наименьших квадратов.
11.06.2014 06:56 - hrenfx:
Автор, могли бы вы раскрыть подробнее суть 3-4 абзацев? Не сумел разобраться, что имели в виду.

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

Раз вы используете одно значение цены, то, видимо, берете данные по ластам. Сам оцениваю два ценовых ряда: Bid и Ask.

Правильно ли понял, что под линейностью в контексте данной статьи имеется в виду ТС без ММ? Т.е. есть своего рода две альтернативы: строить линейную ТС на синтетическом цВР (без учета ребалансировок на реале) или же строить ТС с ММ (ребалансировки учитываются) на оригинальном цВР? Где ММ вычисляется через волатильность.

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

Сам использую синтетики, нормирую только цВР, а не их приращения. Ну и построение самих цВР делаю не по дням и квантую не по одинаковым временным интервалам астрономического времени. Тогда получается обойти некоторые неудобности толстохвостости. Короче, писал об этом.
19.03.2013 20:51 - mehanizator:
в технических универах могут запросто про такие вещи не говорить, потому что нестационарные модели кроме как в экономике мало где встречаются, обычно в технике временные ряды имеют более-менее постоянную дисперсию. а вот экономистам должны про гетероскедастичность рассказывать.
19.03.2013 20:48 - mehanizator:
так вся статья про то, зачем надо считать не по реальным ценам, а по синтетическому инструменту.

пример - скользящие средние и все, что на них базируется.
19.03.2013 19:37 - ysmolentsev:
Про уровни, это я для примера. Просто в начале вы пишете про факторы (индикаторы), подающиеся на вход. А в конце получается, что их надо считать не по реальным ценам, а по синтетическому инструменту. Зачем? И что это за индикаторы, можно пример?
19.03.2013 19:34 - Салимжан Бижанов:
albert.khamzin: А нас в универе этому не учили, когда рассказывали про всякие модели. Эти все полезные примочки, видимо, не относятся ни к какой формальной модели, описывающей движение цены, а происходят больше из практической плоскости?
__________________________________

про нормирование рассказывают в универе.
Z-преобразование например, когда из исходного ряда вычитают мат.ожидание и делят на среднеквадратическое отклонение.
19.03.2013 19:19 - mehanizator:
и марковиц и шарп предполагали гауссовое распределение сдвигов, а я тут намедни померял эксцесс (curtosis) у SPY, там 18 (у гаусса 0).
19.03.2013 19:17 - mehanizator:
а если б нормировали, может, и LTCM не случился бы :)
19.03.2013 19:13 - albert.khamzin:
Ну вот Марковиц ничего не нормировал, Шарп тоже. Я имею в виду в своих классических работах. Но звучит всё разумно, конечно, я не спорю, что это базовая вещь, просто в первый раз сталкиваюсь.
19.03.2013 18:36 - mehanizator:
Альберт, я не думаю, что это адвенсед левел, скорее наоборот. То, что любая линейная модель должна строиться на однородных по дисперсии данных это вроде как общее место. Для неоднородных данных есть GARCH модели, вот это уже да, адвенсед левел :)
19.03.2013 18:31 - mehanizator:
моя статья касается моделей построенных на временных рядах, а не вокруг уровней. если входы считаются от каких-то уровней, то входы вероятно не зависят от волатильности, тогда нормировать надо только выход, результат, т.е. как вы предложили, эквити.
19.03.2013 17:57 - ysmolentsev:
mehanizator: а откуда возникают события входа и выхода? относительно чего они сместятся?
-------
Из соотношений цен, из паттернов. Например, уровни поддержки-сопротивления на обычном и нормированном графиках могут не совпадать. Соответственно, могут не совпадать входы-выходы построенных на них систем. При этом если эти уровни на обычном графике, допустим, дают стат преимущество, то не факт, что оно обнаружится на синтетическом инструменте.
19.03.2013 17:45 - mehanizator:
не знаю, мне эконометрику в вузе не преподавали :)
19.03.2013 17:32 - albert.khamzin:
Я прослушал "Введение в эконометрику", твм не было. Наверное, это уже адвансед левел. Но идея интересная, надо будет ознакомиться.
А есть какая-нибудь толковая книга по эконометрике, основательная но без доказательств теорем?
19.03.2013 17:16 - mehanizator:
в эконометрике это должно рассказываться.
19.03.2013 17:09 - albert.khamzin:
А нас в универе этому не учили, когда рассказывали про всякие модели. Эти все полезные примочки, видимо, не относятся ни к какой формальной модели, описывающей движение цены, а происходят больше из практической плоскости?
19.03.2013 16:56 - mehanizator:
а откуда возникают события входа и выхода? относительно чего они сместятся?
19.03.2013 15:14 - ysmolentsev:
По последнему абзацу, если тестить на синтетическом инструменте, то события входа-выхода могут сместиться во времени, в результате нарушится вся логика системы, не лучше ли нормировать не график цены, а график эквити?
19.03.2013 08:37 - mehanizator:
но без предварительной нормировки ее тоже использовать нет смысла.
19.03.2013 08:37 - mehanizator:
про ранговую корреляцию будет во второй части.
19.03.2013 08:31 - thevlad:
еще можно использовать ранковую корреляцию
19.03.2013 06:32 - Салимжан Бижанов:
спасибо!
пусть остатки в ваших моделях будут гомоскедостичными!
1 2
X

Вход

Email:
Password:
 

Восстановить пароль

Email: