• strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Declaration of views_handler_field::query() should be compatible with views_handler::query($group_by = false) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_field.inc on line 1148.
  • strict warning: Declaration of content_handler_field::element_type() should be compatible with views_handler_field::element_type($none_supported = false, $default_empty = false, $inline = false) in /home/forex/sites/0-forex.ru/sites/all/modules/cck/includes/views/handlers/content_handler_field.inc on line 229.
  • strict warning: Declaration of views_handler_argument::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_argument.inc on line 917.
  • strict warning: Declaration of views_handler_argument::query() should be compatible with views_handler::query($group_by = false) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_argument.inc on line 917.
  • strict warning: Declaration of views_handler_sort::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_sort.inc on line 165.
  • strict warning: Declaration of views_handler_sort::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_sort.inc on line 165.
  • strict warning: Declaration of views_handler_sort::query() should be compatible with views_handler::query($group_by = false) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_sort.inc on line 165.
  • strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_filter.inc on line 599.
  • strict warning: Declaration of views_handler_filter::query() should be compatible with views_handler::query($group_by = false) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_filter.inc on line 599.
  • strict warning: Declaration of views_handler_relationship::query() should be compatible with views_handler::query($group_by = false) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_relationship.inc on line 149.
  • strict warning: Declaration of views_handler_area::query() should be compatible with views_handler::query($group_by = false) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_area.inc on line 81.
  • strict warning: Declaration of views_handler_area_text::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/handlers/views_handler_area_text.inc on line 121.
  • strict warning: Declaration of views_plugin_argument_validate::options_submit() should be compatible with views_plugin::options_submit($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/plugins/views_plugin_argument_validate.inc on line 87.
  • strict warning: Declaration of views_plugin_argument_validate_taxonomy_term::options_submit() should be compatible with views_plugin_argument_validate::options_submit(&$form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc on line 165.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Declaration of date_handler_field_multiple::pre_render() should be compatible with content_handler_field_multiple::pre_render($values) in /home/forex/sites/0-forex.ru/sites/all/modules/date/date/date_handler_field_multiple.inc on line 185.
  • strict warning: Declaration of views_plugin_query::options_submit() should be compatible with views_plugin::options_submit($form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/plugins/views_plugin_query.inc on line 181.
  • strict warning: Declaration of views_plugin_style_default::options() should be compatible with views_object::options() in /home/forex/sites/0-forex.ru/sites/all/modules/views/plugins/views_plugin_style_default.inc on line 24.
  • strict warning: Declaration of views_plugin_row::options_validate() should be compatible with views_plugin::options_validate(&$form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/plugins/views_plugin_row.inc on line 136.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Declaration of views_handler_field_user::init() should be compatible with views_handler_field::init(&$view, $options) in /home/forex/sites/0-forex.ru/sites/all/modules/views/modules/user/views_handler_field_user.inc on line 50.
  • strict warning: Non-static method view::load() should not be called statically in /home/forex/sites/0-forex.ru/sites/all/modules/views/views.module on line 1118.
  • strict warning: Declaration of views_handler_filter_node_status::operator_form() should be compatible with views_handler_filter::operator_form(&$form, &$form_state) in /home/forex/sites/0-forex.ru/sites/all/modules/views/modules/node/views_handler_filter_node_status.inc on line 15.

Оценка волатильности. Дмитрий Толстоногов. Лекция Форекс

Оценка волатильности. Дмитрий Толстоногов. Лекция Форекс

Хочу обсудить некоторые вопросы, связанные с волатильностью. Существует с десяток известных методов для определения волатильности, начиная с технических индикаторов типа средний чистый диапазон, или АТР, историческая волатильность, стохастическая волатильность разных видов, стандартное отклонение и т.д. В портфельных задачах используют, как правило, стандартное отклонение и подобные вещи, а трейдеры, как правило, используют АТР – средний чистый диапазон. И, соответственно, тесно связанная с этим задача измерения риска, как правило, измеряется при помощи АТР - в единицах АТР. Соответственно возникает сразу 2 параметра: длина окна усреднения чистого диапазона и сколько единиц волатильности взять в качестве меры риска. И потом тестируется, оптимизируется все это.

Посмотрим, что получается. Для простоты берем АТР в качестве меры волатильности. Известно, что волатильность возвращается к своему среднему значению, т.е. колеблется вокруг среднего значения, т.е. когда волатильность экстремально высокая, мы ее продаем, когда она экстремально низкая, мы ее покупаем. Что происходит, когда мы используем эту меру для измерения риска? Например, скользящие стопы подвигаем, отодвигаем, размер позиции определяем и т.д. Когда у нас волатильность экстремально высокая, у нас риск увеличивается, если мы используем в качестве меры риска именно волатильность. В то же время, если мы знаем, что если волатильность экстремально высокая, она будет стремиться к своему среднему значению, т.е. она будет уменьшаться. Т.е. мы ожидаем, что волатильность будет меньше, тем не менее, стопы отодвигаем. И тоже самое в другую сторону. Когда волатильность экстремально низкая, мы стопы подвигаем, считая, что риск маленький, в то же время зная о том, что волатильность будет возрастать к своему среднему значению, т.о. начинаем торговать шум, т.е. в этом случае нас постоянно выносит на стопы. Если с этой точки зрения посмотреть, то мы неправильно используем волатильность в качестве меры риска. Теперь рассмотрим, что такое риск или волатильность реально с точки зрения трейдера. Возьмем изменение цены за характерный промежуток времени - продолжительность бара, например. Что происходит? Если волатильность высокая, т.е. свеча реально длинная. Что в этом случае для нас риск. Возьмем для определенности длинную белую свечу, т.е. цена резко выросла вверх. И допустим, для определенности, что позиция в правильном направлении, т.е. на открытии бара мы в лонге, после чего длинная белая свеча. В таком случае за этот промежуток времени, как правило, цена проходит без значительных коррекций или практически без коррекций. Что в таком случае для нас риск? Риск для нас тогда - это дроудаун внутри высокочастотной траектории цены, тиковой, скажем, за время этого бара. Если мы возьмем бар, измерим дроудауны от достигнутого максимума цены в обратную сторону: просадка, опять достижение нового максимума, т.е. за промежуток времени в бар мы померим все дроудауны, выберем из них максимальный – это и будет наш реальный риск внутри позиции, а максимальный доход – это диапазон бара. Если мы находимся в короткой позиции, то наоборот – наш максимальный доход, это дроудаун внутри бара, а максимальный риск – это диапазон бара, если мы стоим против рынка.

Т.о. получается, что если мы используем традиционные меры риска, длинная белая свеча – коррекции маленькие, т.е. реальный наш риск очень маленький, а стопы мы, тем не менее, отодвигаем, и наоборот, если свеча короткая, за время бара цена может многократно туда-сюда сходить, т.е. риск реально увеличивается, тем не менее, стопы мы подвигаем. Как тут быть? Надо рассматривать в качестве риска именно внутрибаровые дроудауны. Можно собрать статистику, как баров, так и дроудаунов или отклонений, как их можно назвать, и пытаться их моделировать. Это идея американского трейдера Майка Лукаса, она показалась мне интересной и перспективной. Что получается при моделировании? Мы собираем статистику и получаем набор пар. Пара состоит из диапазона бара и максимальной коррекции внутри бара. Загоняем данные в матлаб, применяем стандартные процедуры и получаем, что логарифм диапазоны бара, т.е. логарифм Range, распределен по нормальному закону. Это, собственно, научные результаты тех парней, которые придумали ARCH-GARCH. Где-то пару лет назад у них были исследования в Wharton’е. Они получили, что статистически распределение логарифмов Range неотличимо от Гауссового. Но самое интересное, получается, что логарифмы коррекции внутри бара тоже статистически близки к Гауссовому распределению. И еще более интересно, что если строить модели типа авторегрессионных, т.е. там условно Гауссовское распределение, то, о чем Александр (Горчаков) говорил. То есть такими методами, мне кажется, целесообразно попробовать построить оптимальную модель. Но даже если «в лоб» затолкать матлабовский System Identification Toolbox, то получается, во-первых, что если рассматривать модель, где в качестве входов Range, а в качестве выхода – коррекция внутри бара, то выходная переменная очень слабо зависит от своих предыдущих значений. Т.е. последовательность Range определяет значение коррекции на следующем баре. Вот такая интересная картина. Не мудрствуя лукаво, эти стандартные матлабовские методы дают R2 порядка 0,3-0,35. Если какие-то оптимальные процедуры применять, то результаты будут гораздо качественнее. Но это уже вопрос к специалистам в данной предметной области.

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

Вопрос из зала:

Бар – это на каком таймфрейме?

Ответ:

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

На каких данных построена модель?

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

Как мы можем увидеть коррекцию бара?

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

То есть должны быть тиковые данные?

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

Но может быть несколько максимумов.

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

То есть вы не все экстремумы реально отслеживаете?

Да, не принципиально. Высокочастотную историю и там, соответственно, минимум, максимум даже на минутке определены однозначно.

Какая связь если рассматривать модели на разных интервалах, например, часовые и дневные?

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

А какой таймфрейм оптимальный?

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

Какие-то значения получались для таймфрейма, есть ли какая-то граница? Конкретно минимальный таймфрейм?

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

Я имею в виду объем в рублях.

Объем в рублях зависит от процентного отношения. Если я задаю, чтобы в среднем я вхожу в позицию таким сайзом, чтобы не залить цену, скажем, на 0,5%, ставлю предельную. Но тогда это считается однозначный размер позиции. Т.е. это уже другая задача – управление капиталом. Размер позиции прямо пропорционален ликвидности, а для ликвидности у меня индикаторы, о которых я говорил.

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

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

Исчерченность нас не интересует, нас интересует именно внутри бара максимальная коррекция.

Именно максимальная коррекция и движение внутри бара, они же могут иметь максимум открытия к закрытию?

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

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

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

Как это можно использовать?

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

Броуновское движение – у Ширяева модель.

Правильно ли я Вас понял, что вы не используете коррекции в процентах?

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

Вы прогнозируете только дроудаун внутри, а сам бар не интересен?

Да.

Как я понял, на основе этих данных вы проводите анализ и выдаете рекомендации, как поставить стоп?

Да, как поставить стоп на следующий бар.

И постоянно его корректируете?

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