Ідея коротко
Rob Hanna понад двадцять років досліджує короткострокову поведінку американського ринку і веде розсилку Quantifiable Edges. Одна з його тем сезонність: дні тижня, свята, дні звіту про зайнятість і дні рішень ФРС.
За його дослідженнями, день публікації рішення FOMC у середньому бичачий. Найсильніший ефект, коли перед рішенням на ринку був страх: індекс закрився на 3-, 5- або 10-денному мінімумі чи біля самого низу денного діапазону. Якщо перед рішенням ринок розігнався і закрився на 20-денному максимумі, ефекту майже немає.
Друга частина знахідки стосується часу. Основний прибуток набирається від закриття напередодні до 14:00 ET, коли виходить рішення. Після публікації ринок може різко піти в будь-який бік, але на довгій історії в середньому стоїть на місці. Звідси правило: купівля на закритті напередодні і вихід до публікації.
Інструмента в цьому місці інтерв'ю Hanna не називає. Свої моделі він будує на дослідженнях S&P 500 і NASDAQ, тому нижче взято S&P 500: ф'ючерс ES, SPY або CFD.
Чому це може працювати
Пояснення автора пов'язане з поведінкою самої ФРС. Багато років вона вважала своїм завданням гасити паніку: заспокоювати ринок, обіцяти зниження ставок. І навпаки, охолоджувати надто сильний ринок. Частина учасників продає напередодні, бо не хоче тримати позицію через оголошення. Якщо ФРС схильна заспокоювати, ця знижка відіграється ще до публікації. Ведучий додає, що до моменту оголошення поінформовані учасники вже відторгувалися, і Hanna погоджується.
Цифр в інтерв'ю немає. Hanna каже, що кілька разів писав про це в блозі. Ми блог не перевіряли, тому сила ефекту та його стійкість тут не підтверджені.
Правила
Календар подій
Дати рішень FOMC не обчислюються за формулою, їх задають списком. Джерело: офіційний сайт ФРС, сторінка календаря засідань (federalreserve.gov/monetarypolicy/fomccalendars.htm) і архів матеріалів за роками (federalreserve.gov/monetarypolicy/fomc_historical_year.htm). Планових засідань вісім на рік, більшість дводенні, рішення публікується на другий день. Позапланові рішення в архіві теж є, їх треба позначити окремо.
FedDays = [дати публікації рішень за плановими засіданнями, з архіву ФРС]
// Finetiq: позапланові рішення виключаємо, перевірити окремо
PreFedDay = останній торговий день перед FedDay
AnnounceET = 14:00 ET // автор: «2 PM»
// Finetiq: для старих років час публікації звіряти за пресрелізом в архіві,
// за історію він змінювався
Фільтр страху
// денні бари S&P 500, розрахунок на закритті PreFedDay
Fear3 = Close <= Lowest(Close, 3) // автор: закриття на 3-денному мінімумі
Fear5 = Close <= Lowest(Close, 5) // автор: 5-денний
Fear10 = Close <= Lowest(Close, 10) // автор: 10-денний
// Finetiq: мінімум за закриттями, поточний бар входить у вікно.
// Варіант: Close < Lowest(Low, N)[1]
RangePos = (Close - Low) / (High - Low)
LowInRange = RangePos <= 0.25 // автор: «біля низу діапазону дня»; Finetiq: поріг 25%
Fear = Fear3 OR LowInRange
// Finetiq: закриття на 5- або 10-денному мінімумі завжди є і закриттям на 3-денному,
// тому Fear3 уже включає решту. Автор перелічує їх як різні
// способи розмітки, тестувати кожен окремо
RunUp = Close >= Highest(Close, 20) // автор: закриття на 20-денному максимумі, ефекту майже немає
Вхід і вихід
IF Date = PreFedDay AND Fear AND NOT RunUp
BUY AT CLOSE // автор: відлік від закриття дня напередодні
// Finetiq: на практиці ордер на закриття або купівля за 5 хвилин до кінця сесії
IF Date = FedDay AND Time >= 13:55 ET // Finetiq: початок останнього 5-хвилинного бару до публікації
EXIT AT MARKET // автор: вийти до 14:00
// стоп-лоса в автора немає, утримання менше доби
// Finetiq: варіант для перевірки, StopLoss = EntryPrice - 1.5 * ATR(14) денного
Контрольні групи (Finetiq)
Ці правила не для торгівлі. Вони показують, звідки береться результат.
AllFed = кожен PreFedDay без фільтрів, той самий вхід і вихід
RunUpFed = лише PreFedDay з RunUp
FearOnly = Fear AND NOT RunUp у звичайні дні без рішення ФРС,
вихід наступного дня о 13:55 ET
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Подія | рішення за плановими засіданнями FOMC | автор |
| Інструмент | S&P 500: ES, SPY, CFD | Finetiq (автор досліджує S&P 500 і NASDAQ) |
| Вхід | закриття останнього торгового дня перед рішенням | автор |
| Страх: мінімум закриттів | 3, 5 або 10 днів | автор |
| Страх: низ діапазону дня | нижні 25% | автор (поріг Finetiq) |
| Заборона входу | закриття на 20-денному максимумі | автор |
| Вихід | до 14:00 ET, бар 13:55 ET | автор (хвилина Finetiq) |
| Стоп | немає, варіант 1.5 × ATR(14) | Finetiq |
| Позапланові рішення | виключити | Finetiq |
Що перевірити
- Три групи днів ФРС. Усі рішення, рішення після страху і рішення після закриття на 20-денному максимумі. Hanna стверджує, що результат спадає саме в такому порядку: страх, усі дні, розгін. Якщо різниця між групами в межах розкиду, фільтр нічого не додає.
- Який страх. 3-, 5-, 10-денний мінімум і низ діапазону окремо. Дивіться не лише на середню угоду, а й на кількість подій: що суворіший фільтр, то менше дат.
- ФРС чи звичайний відкат. Той самий фільтр страху у звичайні дні з виходом наступного дня о 13:55 ET. Купівля короткострокового мінімуму S&P 500 сама по собі часто дає відскок. Ефект ФРС це різниця між днями рішень і звичайними днями, а не весь результат днів рішень.
- Час виходу. 13:55 ET проти закриття дня рішення. Якщо вихід о 16:00 не гірший, твердження про те, що після публікації ринок стоїть на місці, на ваших даних не підтверджується.
- Час входу. Закриття напередодні проти відкриття дня рішення. У ф'ючерса і CFD ніч торгується, і частина результату може припадати на нічний рух.
- Періоди. Окремо роки зниження і роки підвищення ставок, наприклад 2022. Пояснення автора спирається на те, як ФРС поводилася багато років. Якщо поведінка змінилася, ефект міг ослабнути.
Особливості платформ
TradingView (Pine Script)
- Календаря подій немає. Дати зберігайте масивом міток часу, по одній на рішення з архіву ФРС:
array.from(timestamp("America/New_York", рік, місяць, день, 14, 0), ...). - Правило потребує двох таймфреймів: фільтра за денним закриттям і виходу о 13:55 ET. На 5-хвилинному графіку закриття останнього бару сесії і є денним закриттям. Мінімуми закриттів за 3-20 днів зручніше накопичувати самим.
- Купівля на закритті потребує
process_orders_on_close = true. За замовчуванням ордер з останнього бару дня виконається на відкритті наступної сесії, тобто вже в день рішення. Це інший варіант правила. - Внутрішньоденна історія обмежена тарифом. На 5-хвилинних барах може вміститися кілька років, тобто пара десятків рішень.
- У ES сесія починається о 18:00 ET попереднього дня. Діапазон дня і закриття за ф'ючерсною та за кеш-сесією різні. Оберіть один варіант і тримайтеся його в усіх прогонах.
MultiCharts і TradeStation (EasyLanguage)
- Дати зберігайте масивом і порівнюйте з
Date. В EasyLanguage дата записана числом YYYMMDD з роком від 1900: 15 березня 2024 року це1240315. - Якщо рахувати фільтр за денним рядом
Data2, пам'ятайте: поки йде сесія, денний бар не закритий, іClose of Data2о 15:55 показує вчорашній день. Мінімум, максимум і закриття поточної сесії рахуйте за внутрішньоденними барами. Timeце час закриття бару. Бар 13:50-13:55 маєTime = 1355, іIf Date = FedDate and Time >= 1355 then Sell next bar at marketвиконається на відкритті о 13:55.- У TradeStation денний бар ф'ючерса закривається за settlement, а не за останньою угодою. Фільтр за денними закриттями і за закриттям внутрішньоденних барів може відібрати різні дати.
MetaTrader 5 (MQL5)
- Дати задавайте масивом
datetimeу часі ET і переводьте в серверний час брокера з урахуванням літнього часу обох сторін. У тестеріTimeGMT()дорівнює серверному часу і не допомагає. - Функції економічного календаря в MQL5 є, але для тесту на історії дати надійніше зашити масивом.
- Денний бар CFD на S&P 500 будується за серверним часом і включає години після 16:00 ET. Закриття на 5-денному мінімумі за таким баром і за кеш-індексом може не збігтися. Денні закриття на 16:00 ET рахуйте самі за внутрішньоденними барами.
- Позиція переноситься через ніч, у CFD це своп. Спред перевіряйте саме в хвилини входу і виходу.
Де ідея може зламатися
- Подій мало. Вісім планових рішень на рік, після фільтра страху в рази менше. Навіть за 20 років вибірка невелика, і один-два сильні дні можуть зробити весь результат.
- В інтерв'ю немає жодної цифри. Ефект описано словами, перевірити його можна лише самостійно.
- Пояснення спирається на звички ФРС. Зміна керівництва, цикл підвищення ставок або новий формат комунікації можуть змінити реакцію ринку.
- Фільтр страху сам по собі відбирає короткострокові відкати S&P 500, які часто відскакують і без ФРС. Без контрольної групи легко приписати ФРС звичайне повернення до середнього.
- Помилка в календарі ламає тест цілком. Переплутаний день дводенного засідання або неправильний час публікації для старих років зсувають вхід і вихід.