Идея коротко
ADR% это средний дневной диапазон бумаги в процентах за 20 дней: насколько акция обычно проходит от минимума до максимума за день. Jack Corsellis использует это число для двух решений.
Первое решение: что вообще торговать. Средний ADR% индексов S&P 500 и NASDAQ около 1-1.5%. Джек рассуждает так: бумага с ADR% в несколько раз выше индекса в тренде проходит заметно больше него. В его примерах соотношение не пропорциональное: у NVDA ADR% в 2.4 раза выше индекса, а рост 56% против 15%; у AIRM ADR% примерно в 8 раз выше, а рост 76% против 32%. Бумага с ADR% как у индекса даже из идеального паттерна почти не обгоняет рынок. Джек ищет бумаги с ADR% хотя бы в 1.5-2 раза выше QQQ, на практике от 3%. Порог 3% у него мягкий: сам Джек купил NVDA при ADR% 2.84, и строгая версия блока ниже эту сделку пропустила бы.
Второе решение: годится ли стоп. Начальный стоп в процентах должен быть меньше ADR% бумаги. У лучших входов с узкой свечой он занимает от половины до двух третей ADR%, у Qullamaggie от трети до половины. К этому добавляется фильтр Qullamaggie против погони: не покупать, если за день бумага уже прошла больше своего ATR.
Это блок, а не система. Вход, стоп и выход берутся из стратегии-хозяина, блок решает, пропускать ли сделку. Ниже пример на карточке new-high-breakout-ma10-exit.
Почему это может работать
Объяснение автора: у бумаг разный характер. Медленная бумага физически не может дать +50% за несколько недель, как бы хорошо ни выглядел график. Быстрая бумага работает как рычаг к индексу: если рынок растёт на 10%, бумага с ADR% вдвое выше индекса может вырасти на 20%, втрое на 30%. Джек сам оговаривается, что рычаг работает и вниз.
Стоп в долях ADR% делает риск сравнимым между бумагами. Стоп шире ADR% означает, что риск больше обычного дневного хода бумаги: тот же ход цены даёт меньше начальных рисков, и соотношение риска и потенциала «разъезжается». Убытки работают против счёта геометрически, поэтому автор предпочитает пропустить сделку, а не расширить стоп.
Цифры NVDA, AIRM и Foot Locker взяты из примеров, отобранных после факта. Проверки на всех бумагах подряд в видео нет.
Правила
Скорость бумаги (автор)
// дневные бары, значения на закрытии дня перед входом
ADRpct = 100 * (Average(High / Low, 20) - 1)
// автор: 20 дней, диапазон от минимума до максимума, гэп между закрытием и открытием не учитывается
// формула индикатора ADR% в TradingView, которым пользуется автор
IndexADR = 100 * (Average(IndexHigh / IndexLow, 20) - 1)
// автор: «применимый» индекс: NASDAQ для технологической бумаги, иначе SPY или Dow
Speed = ADRpct / IndexADR
SpeedOK = Speed >= 2 // автор: минимум 1.5-2 раза, лучше 2 и больше
FastOK = ADRpct >= 3 // автор: «в идеале» от 3-4%, самые сильные 5-10% и выше
// Finetiq: базово требуем оба условия, порог Speed 1.5 оставляем как вариант
// порог 3% у автора мягкий: его покупка NVDA с ADR% 2.84 проходит только по Speed,
// базовая версия блока её пропустила бы. Вариант без FastOK в «Что проверить», п. 3
Допустимый стоп (автор)
// EntryPrice и StopLoss берутся из стратегии-хозяина
RiskPct = (EntryPrice - StopLoss) / EntryPrice * 100
Ratio = RiskPct / ADRpct
IF Ratio > 1 THEN пропустить сделку // автор: стоп меньше ADR%
IF RiskPct > 5 THEN пропустить сделку // автор: больше 5% только для исключительного сетапа
// Finetiq: трактуем как запрет
// зона качества по типу входа (автор)
// узкий триггер-бар или inside bar: Ratio от 1/2 до 2/3 (Джек)
// Qullamaggie: Ratio от 1/3 до 1/2, стоп обычно около половины, редко полный ATR
// хвост выбивания или разворот после гэпа вниз: Ratio около 1, допустимо до 1.5 (Джек)
// Finetiq: для этих двух входов порог Ratio 1.5 вместо 1
Фильтр погони (Qullamaggie в пересказе автора)
DayMove = EntryPrice - Close[1]
IF DayMove > ATR(20) THEN пропустить сделку
// автор: не покупать, если за день бумага прошла больше своего ATR
// автор: лучше входить, пока пройдено 1/3, 1/2 или 2/3 ATR
// период 20 из примера Джека; сглаживание ATR автор не назвал
// ход считается в день входа: от вчерашнего закрытия до цены входа; ATR(20) на закрытии прошлого дня
Размер позиции после фильтра (Finetiq)
Shares = Equity * 0.5% / (EntryPrice - StopLoss) // Finetiq: стартовый риск на сделку
Shares = MIN(Shares, Equity * 25% / EntryPrice) // Finetiq: потолок доли, как у Qullamaggie
// с узким стопом размер быстро растёт, без потолка одна бумага займёт весь счёт
Пример: пробой 100-дневного максимума
Карточка new-high-breakout-ma10-exit: покупка на открытии после закрытия выше 100-дневного максимума, выход по закрытию ниже MA10, отдельного стопа нет. Добавляем блок.
IndexADR = ADR% индекса за 20 дней // Finetiq: QQQ для NASDAQ, SPY для NYSE
Signal = Close > Highest(High, 100)[1] // из карточки
StopLoss = Low - 0.01 // Finetiq: минимум сигнального дня как начальный стоп
EstRisk = (Close - StopLoss) / Close * 100 // Finetiq: оценка до открытия
IF Signal AND SpeedOK AND FastOK
AND EstRisk <= ADRpct AND EstRisk <= 5 // блок: допустимый стоп, оценка по закрытию
BUY AT NEXT BAR OPEN
SELL STOP at StopLoss
// Finetiq: в день входа блок пересчитывается от цены исполнения
DayMove = EntryPrice - Close[1] // блок: фильтр погони; Close[1] это закрытие сигнального дня
RiskPct = (EntryPrice - StopLoss) / EntryPrice * 100
IF DayMove > ATR(20) OR RiskPct > ADRpct OR RiskPct > 5
EXIT AT CLOSE of this bar // исполнение на том же баре, позиция закрывается в день входа
// при входе на открытии DayMove равен гэпу; ADRpct и ATR(20) на закрытии сигнального дня
IF Close < SMA(Close, 10) THEN EXIT AT NEXT BAR OPEN // из карточки
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Период ADR% | 20 дней | автор |
| Формула ADR% | 100 × (среднее High / Low − 1) | автор (индикатор TradingView) |
| Индекс | применимый: NASDAQ, SPY или Dow | автор |
| ADR% индексов | около 1-1.5% | автор |
| Минимальная скорость | 2 × индекс (вариант 1.5) | автор |
| Минимальный ADR% | 3% | автор («в идеале» 3-4%), обязательность Finetiq |
| Стоп против ADR% | меньше 1 ADR% | автор |
| Абсолютный стоп | до 5% | автор, запрет Finetiq |
| Зона для узкой свечи | 1/2-2/3 ADR% (Qullamaggie 1/3-1/2) | автор |
| Разворотные свечи | до 1.5 ADR% | автор |
| Фильтр погони | ход дня входа не больше ATR(20) | автор, период из примера |
| Риск на сделку | 0.5% | Finetiq |
| Потолок доли | 25% счёта | Finetiq (по qullamaggie-breakout) |
| Пример: стоп | минимум сигнального дня | Finetiq |
Что проверить
- Даёт ли скорость что-то. Возьмите одну стратегию-хозяина на широкой вселенной и разбейте сделки по Speed: до 1.5, 1.5-2, 2-4, больше 4. Сравните среднюю сделку в процентах и в R, долю прибыльных и максимальную просадку. Рычаг работает в обе стороны, поэтому смотрите на результат с учётом убытков.
- Порог стопа. Разбейте сделки по Ratio: до 1/3, 1/3-1/2, 1/2-2/3, 2/3-1, больше 1. Если сделки со стопом шире ADR% не хуже остальных, фильтр только сокращает выборку.
- Окрестность параметров. Период ADR% 10, 20 и 50 дней. Speed 1.5, 2 и 3. Минимальный ADR% 2, 3 и 4% и без порога (только Speed). Порог Ratio 0.75, 1 и 1.5.
- Фильтр погони. С ним и без, порог 0.5, 1 и 1.5 ATR. У пробойных стратегий сильный день и есть сигнал, фильтр может срезать лучшие сделки.
- Абсолютный и относительный порог. У бумаг с ADR% от 10% половина ADR% уже больше 5%. Сравните правило «только Ratio» с правилом «Ratio и не больше 5%».
- ADR% против ATR%. Формула High / Low не видит гэпов, ATR их учитывает. Сравните оба варианта на бумагах с частыми гэпами на отчётах.
- Издержки. У быстрых бумаг шире спред и больше проскальзывание на стоп-ордерах. Проскальзывание на гэпе через стоп фильтр не ловит, заложите его отдельно.
Особенности платформ
TradingView (Pine Script)
- ADR% в одну строку:
100 * (ta.sma(high / low, 20) - 1). Для индекса то же выражение внутриrequest.securityс символом индекса на дневном таймфрейме. - Если на графике включены расширенные часы, High и Low дня берутся с учётом премаркета, и ADR% получится больше. Считайте на основной сессии.
ta.atrсглаживает по Уайлдеру. Для фильтра погони разница с простым средним невелика, но день на границе порога может попасть в разные стороны.- Отбор по Speed по всей вселенной в стратегии не повторить: она торгует только символ графика.
MultiCharts и TradeStation (EasyLanguage)
- ADR%:
100 * (Average(High / Low, 20) - 1). Индекс вторым потоком:100 * (Average(High of Data2 / Low of Data2, 20) - 1). AvgTrueRange(20)это простое среднее TrueRange, а не Уайлдер. Если сравниваете с Pine, фильтр погони даст немного другие дни.- Проверку блока ставьте перед
Buy next bar at market, стоп задавайте ценой:Sell next bar at StopLoss stop.SetStopLossработает в деньгах. - Отбор по скорости среди многих бумаг делается в Portfolio Maestro или Portfolio Trader. Индекс в портфельном тесте нужно подключить к каждой бумаге.
MetaTrader 5 (MQL5)
- Дневной бар CFD на акцию строится по времени сервера и может включать расширенные часы. ADR% получится другим, чем у биржевой бумаги, и пороги 3% и 2× сдвинутся.
- Считайте Speed по бумаге и индексу у одного брокера: CFD на индекс (US500, USTEC) тоже имеет свой дневной диапазон.
iATRэто простое среднее TR, как в EasyLanguage. Значения берите с закрытого бара (индекс 1).- У брокеров с сервером не в GMT+2/+3 бывают короткие воскресные бары. Они занижают 20-дневное среднее диапазона.
Где идея может сломаться
- Все примеры отобраны после факта. Джек показывает быстрые бумаги, которые выросли, и одну медленную, которая отстала. Быстрых бумаг, давших серию убытков, в видео нет.
- Порог относительно индекса зависит от режима рынка. В панику ADR% индекса вырастает до 2-3%, и фильтр почти никого не пропускает. В тихом рынке его проходит больше бумаг.
- Стоп меньше ADR% на дневных барах не защищает от ночного гэпа. Реальный убыток на части сделок будет больше RiskPct.
- Формула High / Low игнорирует гэпы. Бумага, которая много двигается ночью на новостях, выглядит спокойнее, чем есть.
- Фильтр режет сделки с широким стопом. На гэпах после отчётов (карточка
episodic-pivot) стоп часто шире ADR%, и блок может убрать как раз самые сильные события. - Пороги 3% и 1-1.5% у индекса названы для американских акций роста. На фьючерсах, валютах и облигациях числа другие, блок нужно калибровать заново.