Ідея коротко
Eric Crittenden (Standpoint Asset Management) керує фондом, у якому тримає власні гроші: трендслідування на ф'ючерсах, світові акції та казначейські векселі. Наприкінці випуску він розповів, як улаштована трендова частина. Нововведення, за його словами, одне: з неї прибрано всю складність, за яку ринок не платить.
Вхід це простий пробій каналу. Лонг на максимумі за 6, 9 або 12 місяців, шорт на такому самому мінімумі. Стопи далеко: стоп у 2-3 ATR автор вважає занадто близьким. Підходять chandelier, вихід за стандартним відхиленням або відкат на третину річного діапазону, аби метод був однаковим для всіх ринків і йшов за ціною на відстані.
Згори стоїть бюджет ризику. Якщо всі позиції одночасно дійдуть до стопів, фонд втратить близько 10% капіталу. Автор наголошує, що це не ціль за волатильністю, а повний ризик портфеля (heat). Якщо всі стопи спрацювали разом і бюджет втрачено, спрацьовує «рубильник»: фонд не відіграється, нові угоди відкриваються лише на нових трендах.
Від turtle-4w-2w система відрізняється довжиною вікон і стопом. Черепахи входять на пробої 20 днів і виходять на пробої 10, тут вікна в 6-12 разів довші, а вихід задає окремий широкий стоп. У always-in-breakout позиція перевертається на протилежному пробої, а тут після стопа система чекає поза ринком. Від kill-switch-max-dd рубильник відрізняється тим, що не вимикає систему назавжди, а лише не пускає її назад у старі тренди.
Чому це може працювати
Автор пояснює доходність трендовиків тим, хто їм платить. Після комісій ф'ючерси для нього гра з від'ємною сумою, і прибуток спекулянта зрештою оплачує хеджер. У хеджерів глибокі кишені, і вони згодні втрачати на хеджі, бо позбуваються ризику, якого не хочуть нести. Сам автор називає це гіпотезою: ринок анонімний, і перевірити її не можна.
Широкі стопи випливають із того, як розподілено прибуток. За словами автора, на будь-якому вікні в 3-5 років 80% прибутку дають 20% ринків, причому ті, де рух здавався вичерпаним. Близький стоп вибиває з таких рухів до того, як вони сталися. З тієї самої причини він не скорочує позицію, що виросла: так недоважуються ринки, які роблять результат.
Швидкості він змішує заради шляху капіталу. Довгий тренд у його тестах зрештою кращий, але може відставати роками. За п'ять років фонду найсильніше відпрацювала коротка система, а довга була слабкою. Якщо не змішувати швидкості, довгострокове сподівання, за його словами, те саме, а ризик невдалої послідовності помітно вищий, і за нього ринок не доплачує. Як це поєднується з його ж словами, що довгий тренд у тестах працює краще, автор не пояснив.
Бюджет ризику відповідає на питання, скільки можна втратити, якщо все піде не так одразу. Рубильник не дає невеликому болісному епізоду перетворитися на смертельний.
Цифр доходності й просадки трендової частини у випуску немає. Логіка вище це позиція автора, нами не перевірена.
Правила
Вхід: три вікна пробою (автор, деталі Finetiq)
// денні бари, кожен ринок і кожне вікно рахуються окремо
Windows = {126, 189, 252} // автор: 6, 9 і 12 місяців; Finetiq: 21 торговий день у місяці
// Finetiq: автор називає і три вікна, і три системи (коротка, середня, довга),
// але прямо їх не пов'язує. Тут кожне вікно вважається своєю системою
FOR EACH N IN Windows
IF позиції системи N немає AND Close > Highest(High, N)[1] AND NOT BlockedLong(N)
BUY AT NEXT BAR OPEN // Finetiq: пробій за закриттям
IF позиції системи N немає AND Close < Lowest(Low, N)[1] AND NOT BlockedShort(N)
SELL SHORT AT NEXT BAR OPEN // автор: «те саме з мінімумами»
Стоп: один метод на всі ринки (автор, параметри Finetiq)
// автор: 2-3 ATR занадто близько. Годяться три види, аби однаково скрізь
// Варіант 1. Chandelier
LongStop = HighestHigh(від входу) - 5 * ATR(20) // Finetiq: 5 ATR за Вайлдером
// Варіант 2. Стандартне відхилення
LongStop = HighestClose(від входу) - 6 * StdDev(Close - Close[1], 100) // Finetiq: 6 денних відхилень
// Варіант 3. Третина річного діапазону
LongStop = HighestHigh(від входу) - (Highest(High, 252) - Lowest(Low, 252)) / 3 // автор
LongStop = MAX(LongStop, LongStop[1]) // Finetiq: стоп лише піднімається, для шорту дзеркально
SELL STOP at LongStop
// цілі немає, вихід лише за стопом
Розмір і бюджет ризику (автор, розподіл Finetiq)
// ризик позиції = відстань до стопа × обсяг × вартість пункту
Risk(i) = |Close - Stop(i)| * Units(i) * PointValue(i)
Heat = Σ Risk(i) / Equity // автор: близько 10%
// автор: частка ризику ринку за відкритим інтересом, знаменник завжди 10%
// Finetiq для роздрібу: рівні частки на кожну пару «ринок × вікно»
Slots = кількість ринків * 3
SlotRisk = 10% * Equity / Slots
Units(new) = SlotRisk / (|EntryPrice - Stop| * PointValue)
// Finetiq: розмір рахується лише на вході, позицію, що виросла, не скорочуємо
// (автор: не підлаштовувати позиції за волатильністю, не забирати в переможців).
// Якщо Heat плюс ризик нової позиції більше 10%, нова позиція зменшується до залишку
Рубильник (автор, формалізація Finetiq)
// автор: рубильник спрацьовує, коли всі позиції разом дійшли до стопів
// і фонд втратив близько 10% (весь бюджет ризику). Далі без відігравання:
// нові угоди лише на нових трендах, ризик рахується від поточного капіталу
StopLoss20 = збиток угод, закритих за стопом за останні 20 барів / Equity[20]
IF StopLoss20 >= 8% // Finetiq: «разом» = 20 барів, «близько 10%» = від 8%
FOR EACH система N, що вийшла з лонгу за стопом за ці 20 барів
BlockedLong(N) = TRUE
IF BlockedLong(N) AND High > максимум High закритої угоди
BlockedLong(N) = FALSE // Finetiq: новий тренд = новий максимум вище минулої угоди
// для шорту дзеркально
// Finetiq, суворіший варіант для перевірки: блокувати систему N після будь-якого одиночного стопа
Варіант B. Бюджет на змінну кількість позицій (автор, програма на акціях)
// автор: цільовий ризик 20% ділиться на поточну кількість позицій
TargetRisk(i) = 20% * Equity / кількість позицій з урахуванням нових сигналів
// три шляхи при нових сигналах: пропустити їх, взяти зайвий ризик, скоротити старі позиції.
// Автор вибирає третій і називає перші два поганою ідеєю
// Finetiq: для ф'ючерсів підставте 10%. Скорочення суперечить правилу
// не чіпати переможців, тому порівняйте обидва підходи
Набір ринків (автор, склад Finetiq)
// автор: 6-7 секторів, усередині кожного найліквідніші ринки,
// диверсифікація і між секторами, і всередині них
// Finetiq: 3-4 найліквідніші ф'ючерси на сектор, усього 20-25 ринків
// автор: у фонду індекси акцій недоважені, бо поруч портфель акцій,
// і частка S&P 500 обмежена. Окремій трендовій системі це не потрібно
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Вікна пробою | 6, 9 і 12 місяців | автор |
| Вікна в днях | 126, 189, 252 | Finetiq |
| Сторона | лонг і шорт | автор |
| Умова пробою | закриття за рівнем | Finetiq |
| Ширина стопа | ширше за 2-3 ATR | автор |
| Види стопа | chandelier, стандартне відхилення, третина річного діапазону | автор |
| Chandelier | 5 × ATR(20) | Finetiq |
| Стоп за відхиленням | 6 × StdDev денних змін за 100 днів | Finetiq |
| Бюджет ризику (heat) | близько 10% капіталу | автор |
| Розподіл бюджету | за відкритим інтересом | автор |
| Розподіл для роздрібу | рівні частки на ринок і вікно | Finetiq |
| Перерахунок розміру | лише на вході | Finetiq (автор: не підлаштовувати за волатильністю) |
| Спрацювання рубильника | збиток за стопами від 8% капіталу за 20 барів | Finetiq (автор: усі стопи разом, близько 10%) |
| Повернення після рубильника | новий екстремум за межами минулої угоди | Finetiq (автор: лише нові тренди) |
| Сектори | 6-7, усередині найліквідніші ринки | автор |
| Кількість ринків | 20-25 | Finetiq |
| B: цільовий ризик | 20% на всі позиції, скорочувати старі | автор (програма на акціях) |
Що перевірити
- Ширина стопа. Chandelier 2, 3, 4, 5, 6 і 8 ATR на тих самих входах. Автор вважає 2-3 ATR занадто близькими. Подивіться, де крива «ширина проти результату» виходить на плато.
- Вид стопа. Chandelier, відхилення і третина річного діапазону за порівнянної середньої ширини. Автор каже, що працюють усі. Якщо так і є, результат дають вхід і ширина, а не формула стопа.
- Три вікна проти одного. Кожне вікно окремо і всі три разом. Порівняйте доходність до максимальної просадки і найдовший період без нового максимуму капіталу. Окремо 2020-2024 роки: в автора коротка система там помітно обігнала довгу.
- Розмір бюджету. Heat 5, 10, 15 і 20%. Порівняйте найгірший місяць тесту із заявленим бюджетом: гепи й зупинки торгів дають збиток, більший за суму ризиків до стопів. Окремо рубильник: блокування після стопів разом проти блокування після будь-якого одиночного стопа і проти роботи без рубильника.
- Скорочувати чи ні. Розмір лише на вході проти приведення до бюджету при кожному новому сигналі (варіант B). Порахуйте частку прибутку 20% найкращих ринків у кожному вікні 3-5 років і те, як скорочення її змінює.
- Околиця вікон. 5, 6, 7 місяців; 8, 9, 10; 11, 12, 13. Вхід за закриттям проти стоп-ордера на рівні.
- Витрати утримання. Позиції живуть місяцями. Врахуйте перекладання ф'ючерсів, а на CFD своп.
Особливості платформ
TradingView (Pine Script)
- Стратегія торгує лише символ графіка. Спільний бюджет ризику на десятки ринків і правило «сума ризиків до стопів не більше 10%» у Pine не зібрати. Сигнал і стопи перевіряються на одному ринку, але це система без головного портфельного правила.
- Позиція в стратегії Pine одна, нетто. Якщо 6-місячне вікно дало шорт, а 12-місячна система ще в лонгу, вхід у шорт закриє лонг. Три вікна на одному символі потребують трьох окремих стратегій.
- Рівні без поточного бару:
ta.highest(high, 252)[1]. Для вікна 252 і розігріву індикаторів потрібна довга історія, вона обмежена тарифом. На безперервних ф'ючерсах перевірте коригування склейок. - Стоп зберігайте в змінній
var, яка лише піднімається, і передавайте вstrategy.exitчерезstop.trail_pointsзадається в тиках і відсотковий або ATR-стоп не повторює.
MultiCharts і TradeStation (EasyLanguage)
- Портфельний бюджет рахується лише в портфельному модулі: Portfolio Trader у MultiCharts, Portfolio Maestro у TradeStation. У момент визначення розміру потрібна сума ризиків за відкритими позиціями всіх ринків. Перевірте, чи вміє ваша версія модуля керувати розміром на рівні портфеля, перш ніж писати правила.
- Стратегія на символі тримає нетто-позицію. Лонг 12-місячної системи і шорт 6-місячної взаємно погасяться, як і в Pine.
- Kevin Davey (The Algorithmic Advantage #036): у ф'ючерсів у TradeStation закриття денного бару це settlement, у 1440-хвилинного бару остання угода. Пробій за закриттям на двох видах бару дає різні сигнали.
AvgTrueRangeце просте середнє TrueRange. Для chandelier за Вайлдером рахуйте ATR самі. Стоп ціною:Sell next bar at LongStop stop, ордер живе один бар.
MetaTrader 5 (MQL5)
- Мультисимвольний радник може рахувати heat сам: за кожною позицією відстань до SL, поділена на
SYMBOL_TRADE_TICK_SIZE, ×SYMBOL_TRADE_TICK_VALUE× обсяг. Для тесту потрібен мультисимвольний режим тестера. - На хеджинговому рахунку три вікна тримають окремі позиції на одному символі зі своїми SL, розрізняйте їх за magic number. На неттінговому рахунку позиції зіллються в одну.
- Ф'ючерси з довгою історією у брокерів MT5 рідкісні. CFD на товари зазвичай ідуть за найближчим контрактом або спотом, і 12-місячний максимум за ними інший, ніж за склеєним ф'ючерсом.
- Позиція живе місяцями, своп на CFD нараховується щоночі. Перевірте, що тестер його враховує.
Де ідея може зламатися
- Результатів трендової частини у випуску немає. У фонді вона працює поруч із портфелем акцій і векселями й відкалібрована під них, окремо цифри будуть іншими.
- Параметри стопів, розподіл бюджету, кількість ринків, поріг спрацювання рубильника і правило повернення після нього дописані нами. Автор назвав види стопа, вікна і бюджет 10%.
- Бюджет 10% передбачає виконання стопів за ціною. Автор розповідає, як LME зупинила торги нікелем і позицією не можна було торгувати, після чого він прибрав нікель зі всесвіту. Гепи й зупинки торгів дають збиток, більший за heat.
- Вікна 6-12 місяців дають мало угод на ринок. На одному ринку й короткому тесті висновок майже нічого не означає, а довгий тренд, за словами автора, може відставати роками.
- На маленькому рахунку мінімальний контракт робить ризик однієї позиції більшим за частку бюджету на слот. З 20-25 ринками і бюджетом 10% правило без мікроконтрактів або CFD не виконати.
- Відкритого інтересу для зважування на торгових платформах зазвичай немає. Заміна на обсяг або рівні частки дає інший портфель.