Идея коротко
Обычно S&P 500 и VIX ходят в разные стороны. Индекс падает, спрос на путы растёт, VIX поднимается. Индекс растёт, страх уходит, VIX снижается. Dylan O'Neal, трейдер фьючерсов на S&P, предлагает следить за днями, когда эта связь нарушена.
Если за день фьючерс S&P вырос на 1% или больше и VIX тоже вырос на 1% или больше, автор считает, что давление на рынок слишком велико и рост скорее сломается. Он ищет сопротивление на S&P и продаёт от него. Зеркально: если оба упали на 1% и больше, отскок вероятнее, и автор покупает от поддержки. Изменение считается к вчерашнему закрытию.
Сам автор называет это подсказкой, а не системой. Сопротивление и поддержку он выбирает руками, стоп ставит за ближайший экстремум. Ниже дневная версия для проверки самой аномалии и внутридневная версия с уровнем, который можно посчитать.
Почему это может работать
Объяснение автора строится на опционах. VIX отражает ожидаемую волатильность S&P 500 на 30 дней, она выводится из цен опционов. Когда фонды покупают путы для страховки, VIX растёт. Если индекс при этом тоже растёт, значит, крупные участники страхуются на подъёме. По мнению автора, такой рост трудно удержать.
Вторая часть объяснения касается алгоритмов. По словам автора, почти весь объём фьючерсов на S&P идёт через алгоритмы, чьи программы покупок и продаж реагируют на VIX. Поэтому он считает VIX ведущим: если VIX упал на 1% вместе с индексом, отскока он ждёт из-за VIX, а не наоборот.
Долю алгоритмов и их привязку к VIX мы не проверяли. Статистики по правилу 1% автор не приводит, он только говорит, что такие дни бывают нечасто.
У правила есть оговорка от автора. Когда S&P стоит на исторических максимумах или на максимуме за год-два, VIX упирается в естественный пол. Путы дешёвые, фонды охотно покупают страховку, и VIX ползёт вверх вместе с рынком. Автор называет это ложным сигналом и в такой ситуации не продаёт.
Правила
Сигнал (автор)
// ES: фьючерс S&P 500 (или индекс SPX), VIX: индекс волатильности
// «вчерашнее закрытие» у каждого ряда берём по его официальному времени закрытия
ES_Prev = закрытие ES вчера в 16:00 ET // Finetiq: время закрытия кэш-индекса S&P 500; автор говорит «вчерашнее закрытие», час не уточняет
VIX_Prev = закрытие VIX вчера в 16:15 ET // Finetiq: дневное закрытие VIX; индекс считается до 16:15 ET, пока торгуются опционы SPX
ES_Chg = ES / ES_Prev - 1
VIX_Chg = VIX / VIX_Prev - 1
AnomalyUp = ES_Chg >= +1% AND VIX_Chg >= +1% // автор: давление, ждём отката вниз
AnomalyDown = ES_Chg <= -1% AND VIX_Chg <= -1% // автор: ждём отскока вверх
// фильтр автора: у максимумов VIX упирается в пол, продажа не торгуется
AtHigh = High(ES) сегодня >= Highest(High(ES), 252) // автор: ATH или максимум за год-два; Finetiq: 252 дня
IF AnomalyUp AND AtHigh THEN сигнал на продажу пропускаем
// у минимумов автор такой оговорки не делает
Вариант A. Дневная проверка аномалии (Finetiq)
Уровни в этой версии не нужны. Она отвечает на вопрос, несёт ли сама аномалия информацию.
// дневные бары, решение после закрытия VIX в 16:15 ET
IF AnomalyUp AND NOT AtHigh
SELL SHORT AT NEXT BAR OPEN // Finetiq
IF AnomalyDown
BUY AT NEXT BAR OPEN // Finetiq
StopLoss = EntryPrice ± 1.5 * ATR(14) // Finetiq: стартовое значение
IF BarsSinceEntry >= 3 THEN EXIT AT NEXT BAR OPEN
// Finetiq: автор говорит об отскоке «скорее раньше, чем позже», срок не называет
Вариант B. Внутри дня от уровня (правило автора, уровни Finetiq)
// 15-минутные бары ES, условия проверяются на закрытии каждого бара с 09:45 до 15:00 ET
// VIX в истории считается в основную сессию США, раньше 09:30 ET сигнала нет
IF AnomalyUp впервые за день AND NOT AtHigh
Level = максимум ES за сегодня на момент сигнала // Finetiq: замена сопротивления, которое автор рисует руками
SELL SHORT LIMIT at Level // автор: продавать от сопротивления
StopLoss = Level + 0.25 * ATR(14, D1) // Finetiq; автор ставит стоп за экстремум
Target = EntryPrice - 2 * (StopLoss - EntryPrice) // Finetiq: по примеру автора из другого сетапа
IF AnomalyDown впервые за день
Level = минимум ES за сегодня на момент сигнала // Finetiq
BUY LIMIT at Level // автор: покупать от поддержки
StopLoss = Level - 0.25 * ATR(14, D1) // Finetiq
Target = EntryPrice + 2 * (EntryPrice - StopLoss) // Finetiq
CANCEL LIMIT at 15:30 ET // Finetiq
EXIT at 15:55 ET // Finetiq
// автор допускает любой уровень: горизонтальный, Фибоначчи, средняя, VWAP, order flow
// вход по пересечению уровня, без ожидания закрытия свечи (автор, разбор сделки)
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Порог изменения S&P | 1% к вчерашнему закрытию | автор |
| Порог изменения VIX | 1% к вчерашнему закрытию | автор |
| Направление сделки | против движения S&P | автор |
| Фильтр максимумов | продажу у ATH или максимума за год-два не брать | автор |
| Окно максимума | 252 дня | Finetiq |
| Час «вчерашнего закрытия» | S&P 500 16:00 ET, VIX 16:15 ET | Finetiq |
| Вариант A: стоп | 1.5 × ATR(14) | Finetiq |
| Вариант A: удержание | 3 дня | Finetiq |
| Вариант B: уровень | максимум или минимум дня на момент сигнала | Finetiq |
| Вариант B: стоп | 0.25 × дневного ATR(14) за уровнем | Finetiq |
| Вариант B: цель | 2 расстояния до стопа | Finetiq |
| Вариант B: окно | сигнал 09:45-15:00 ET, выход 15:55 ET | Finetiq |
Что проверить
- Даёт ли VIX что-то сверх движения индекса. Возьмите все дни, когда S&P вырос на 1% и больше. Разделите их на дни, когда VIX тоже вырос на 1%, и дни, когда VIX упал. Сравните доходность S&P через 1, 3 и 5 дней. То же для падений. Если группы не отличаются, правило сводится к обычному возврату после сильного дня.
- Частота и кластеры. Посчитайте число сигналов по годам. Автор говорит, что такие дни редки. Если большая часть сигналов приходится на пару кризисных периодов, выборка меньше, чем кажется.
- Окрестность порога. 0.5%, 1%, 1.5% и 2% отдельно для S&P и для VIX. Дневные изменения VIX обычно в разы больше, чем у индекса, поэтому 1% для VIX может оказаться почти любым ростом. Отдельный прогон с порогом S&P в долях ожидаемого движения по правилу 16 автора:
VIX / 16. - Какой VIX. Спотовый индекс VIX против ближайшего фьючерса VX. На истории они расходятся, особенно в дни экспирации и перекатки. Отдельно сравните закрытие VIX в 16:15 ET со значением VIX в 16:00 ET: за эти 15 минут кэш-индекс уже закрыт, а VIX ещё меняется вместе с опционами SPX.
- Фильтр максимумов. Продажи с фильтром и без него, окно 252 и 504 дня. Проверяет оговорку автора про естественный пол VIX.
- Вход от уровня против входа на открытии. Вариант A против варианта B и против лимита на вчерашнем максимуме или минимуме. Если ожидание уровня не улучшает среднюю сделку, дискреционная часть правила ничего не добавляет.
- Издержки внутри дня. В варианте B стоп узкий, и проскальзывание на стопе в дни высокой волатильности съедает заметную часть результата. Прогоните тест с проскальзыванием в 1-2 тика.
Особенности платформ
TradingView (Pine Script)
- Стратегия торгует символ графика (ES или SPY), VIX читается как данные:
request.security("CBOE:VIX", "D", close). Вчерашнее закрытие без заглядывания вперёд:request.security("CBOE:VIX", "D", close[1], lookahead = barmerge.lookahead_on). - Дневной бар ES1! идёт по сессии CME с 18:00 ET и закрывается позже VIX. Изменение «за день» на таком баре не совпадает с изменением к 16:00 ET. Для точной версии считайте закрытие 16:00 ET по внутридневным барам с
time(timeframe.period, "0930-1600", "America/New_York"). Дневной барCBOE:VIXдолжен закрываться значением 16:15 ET. Сверьте его с опубликованным закрытием Cboe за несколько дней: время закрытия VIX у поставщиков данных может отличаться. - Лимит от уровня в варианте B и стоп могут исполниться на одной 15-минутной свече. Порядок тестер не знает:
use_bar_magnifier = true(платные планы) или тест на младшем таймфрейме.
MultiCharts и TradeStation (EasyLanguage)
- VIX подключается вторым потоком данных (
Close of Data2), ордера отправляются только по Data1. В TradeStation индекс обычно называется$VIX.X, в MultiCharts символ зависит от поставщика данных. - У ES почти круглосуточная сессия, у VIX основная. Если Data1 идёт по полной сессии, «вчерашнее закрытие» ES окажется в 17:00 ET. Задайте ES шаблон сессии 09:30-16:00 ET или запоминайте закрытие 16:00 ET сами. Для VIX (Data2) нужен шаблон сессии до 16:15 ET, иначе дневной бар закроется значением 16:00 ET. Время закрытия VIX у поставщика данных сверьте с опубликованным закрытием Cboe.
- Дневной бар фьючерса в TradeStation закрывается по settlement, а не по последней сделке. Для дневного варианта используйте один вид бара и в тесте, и в торговле.
Sell short next bar at Level limitживёт один бар. В варианте B лимит отправляется на каждом баре до 15:30 ET, пока позиции нет.
MetaTrader 5 (MQL5)
- Спотового индекса VIX у большинства брокеров нет. Если символ VIX есть, это обычно CFD на фьючерс VX с перекатками: другой уровень, скачки при смене контракта и другое дневное изменение. Сигнал на таком ряду нужно проверять заново.
- Для теста на истории VIX можно загрузить пользовательским символом (
CustomSymbolCreate,CustomRatesUpdate). Для живой торговли всё равно нужен внешний источник котировок. - Дневной бар CFD на S&P 500 закрывается в полночь сервера брокера (часто GMT+2/+3, это около 17:00 ET), а не в 16:00 ET. Изменение к вчерашнему закрытию считайте по барам M15, переведя 16:00 ET (S&P 500) и 16:15 ET (VIX) в серверное время с учётом летнего времени.
- Второй символ читается через
iClose(symbol, PERIOD_M15, 1), символ должен быть в Market Watch. Сигнал берите с закрытого бара.
Где идея может сломаться
- Статистики автор не показывает. Правило озвучено как рабочая подсказка на канале, где видео спонсирует проп-фирма, а в середине выпуска идёт реклама финансирования фьючерсных трейдеров.
- Уровни сопротивления и поддержки автор выбирает руками, из нескольких инструментов сразу. Наша автоматическая замена (экстремум дня) может отбирать другие сделки.
- Сигналы редкие и, скорее всего, скапливаются в периоды высокой волатильности. Несколько лет спокойного рынка могут не дать ни одного сигнала, а результат теста будет держаться на паре кризисов.
- Объяснение через долю алгоритмов и их привязку к VIX не подтверждено источником. Если связь слабее, чем говорит автор, аномалия может ничего не значить.
- Закрытие каждого ряда нужно брать в его время: S&P 500 в 16:00 ET, VIX в 16:15 ET. Фьючерс и CFD закрываются иначе, и порог 1% на разных рядах выделяет разные дни. Время дневного закрытия VIX у своего поставщика данных стоит сверить. У розничного трейдера в MetaTrader 5 спотового VIX обычно нет.