Ідея коротко
Marc Malek (Conquest Capital Partners) на початку 2000-х будував дешеву заміну трендслідним CTA для фонду Колумбійського університету. Для правила входу він обрав найпростіший пробій. Позиція відкрита завжди. Лонг тримається, доки ціна не оновить мінімум останніх N днів. У цей момент позиція перевертається в шорт, і шорт живе до нового N-денного максимуму. Флету немає.
Параметр один: N. Malek прогнав усі значення від 1 до 200 на портфелі приблизно з 55 ф'ючерсних ринків. Найкраще співвідношення доходності й ризику вийшло близько 70 днів. За його ж правилом утримання в середньому 1.5 × N, тобто близько 105 днів. На одному ринку це два-три перевороти на рік.
Чому це може працювати
Malek пояснює доходність трендслідних фондів двома речами: якими ринками вони торгують і на якому горизонті ловлять тренд. Конкретна техніка (ковзні середні чи пробої) вторинна. Пробій він обрав за математичну простоту. Якщо це правда, 70-денний пробій на широкому наборі ринків повторює бету всієї індустрії CTA. Непрямий аргумент автора: індекси CTA і окремі фонди найсильніше корелюють саме з цією довжиною. Раз професіонали продають цю бету, вони хоча б обрали найкращу за ризиком версію.
Друга теза стосується криз. Malek написав статтю про те, що довгостроковий тренд не ставка на зростання волатильності, у кращому разі це long gamma: заробіток з'являється, коли тренд уже йде. Тренди бувають і в спокійному ринку, і в паніці, тому CTA майже байдужі до режиму. Дуже короткі пробої поводяться інакше. Їхня доходність схожа на довгу позицію з волатильності: у середньому вони гірші за ризиком, зате сильніше допомагають у різких обвалах.
Цифр результату у відео немає: ні доходності, ні Sharpe, ні періоду тесту. Ранжування довжин і кореляції переказано усно. Ми їх не перевіряли.
Правила
Основна система (автор)
// денні бари, кожен ринок рахується окремо
N = 70
Upper = максимум High за N останніх закритих барів
Lower = мінімум Low за N останніх закритих барів
// Finetiq: рівні перераховуються на закритті бару й діють на наступний бар
IF position = LONG
SELL SHORT STOP at Lower // новий N-денний мінімум: переворот у шорт
IF position = SHORT
BUY STOP at Upper // новий N-денний максимум: переворот у лонг
// старт, поки позиції ще немає
IF position = FLAT
BUY STOP at Upper
SELL SHORT STOP at Lower // Finetiq: який рівень пробито першим, туди й входимо
// окремого стоп-лоса й цілі немає:
// протилежний рівень водночас стоп і точка перевороту (автор)
Момент перевороту: два трактування
// Трактування 1: стоп-ордер, переворот у момент дотику до рівня всередині бару
SELL SHORT STOP at Lower
// Трактування 2: за закриттям
LowerPrev = мінімум Low за N барів до поточного
IF position = LONG AND Close < LowerPrev
SELL SHORT AT NEXT BAR OPEN
// Finetiq: автор каже «зробив N-денний мінімум» без уточнення. Перевірте обидва
Розмір позиції (Finetiq)
// автор метод сайзингу у випуску не назвав. Стартовий варіант для перевірки
ATR20 = ATR(20) // Вайлдер
Units = Equity * 0.2% / (ATR20 * PointValue) // Finetiq: 1 ATR руху = 0.2% капіталу
// 0.2% розраховано на портфель із 20–50 ринків. На одному ринку можна брати 0.5–1%
// розмір перераховується лише в момент перевороту
Варіант: ансамбль довжин (автор, вибір довжин Finetiq)
// автор узяв 20 довжин із 200, які саме, не розкрив
Lengths = 20 значень N рівномірно в логарифмічній шкалі від 5 до 200 // Finetiq
FOR EACH N IN Lengths
окрема система за правилами вище з розміром Units / 20
// підсумкова позиція на ринку = сума 20 позицій:
// від повного шорта до повного лонга, з проміжними значеннями
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| N (довжина каналу) | 70 днів | автор |
| Діапазон перебору | 1–200 | автор |
| Позиція | завжди лонг або шорт | автор |
| Вихід | лише переворот на протилежному пробої | автор |
| Ринки | близько 55 ф'ючерсів: товари, валюти, облігації, індекси | автор |
| Момент перевороту | дотик до рівня або закриття за ним | Finetiq, два трактування |
| Розмір позиції | 0.2% капіталу на 1 ATR(20) | Finetiq |
| Кількість довжин в ансамблі | 20 | автор |
| Які довжини в ансамблі | від 5 до 200, логарифмічна шкала | Finetiq |
Що перевірити
- Крива за N. Проженіть N = 10, 20, 40, 70, 100, 150, 200 на одному наборі ринків і побудуйте відношення доходності до просадки за N. Автор говорить про пік близько 70. Важливіша форма: широке плато від 50 до 100 говорить про стійкість, одиничний пік про випадковість.
- Правило 1.5 × N. Порахуйте середню тривалість угоди для кожного N. Якщо на ваших даних вона сильно відрізняється від 1.5 × N, ринки чи період поводяться не так, як у дослідженні автора.
- Один ринок проти портфеля. Порівняйте медіану результату за окремими ринками з портфелем із 20–50 ринків з рівним ризиком. Твердження автора стосуються портфеля. На одному ринку в 70-денного пробою будуть роки без тренду.
- Дотик проти закриття. Трактування 1 проти трактування 2 на тих самих даних. Різниця покаже, скільки коштують гепи, прослизання і хибні дотики до рівня.
- Кризові місяці. Порівняйте N = 5–10 і N = 70 у періоди різких обвалів: осінь 2008, березень 2020. Автор стверджує, що короткі пробої в такі періоди поводяться як long volatility.
- Кореляція з індексом CTA. Якщо у вас є місячні доходності індексу CTA (у випуску згадується індекс SocGen CTA), порахуйте кореляцію з портфелем для різних N. Так перевіряється головна теза про реплікацію.
- Витрати й перекладання. Для N менше 20 врахуйте комісію і прослизання на кожному перевороті. Для N = 70 врахуйте перекладання ф'ючерсів або своп за CFD: позиція живе місяцями.
Особливості платформ
TradingView (Pine Script)
ta.highest(high, 70), порахований на закритті бару, уже включає цей бар. Для стоп-ордера на наступний бар це правильний рівень. Зсув[1]потрібен у трактуванні 2, де закриття порівнюється з каналом до поточного бару:close < ta.lowest(low, 70)[1].strategy.entryу протилежний бік сам закриває поточну позицію й відкриває нову. Переворот робиться однією командою.- Стратегія торгує лише символ графіка. Портфель із десятків ринків з рівним ризиком у Pine не зібрати, а твердження автора стосуються саме портфеля. Ринки перевіряються по одному, зведення результатів робиться поза TradingView.
- Для N = 200 і угод завдовжки в сотні днів потрібна довга історія, вона обмежена тарифом. На безперервних ф'ючерсах перевірте коригування склейок: без нього стрибок ціни при зміні контракту дає хибний пробій.
MultiCharts і TradeStation (EasyLanguage)
Buy next bar at Highest(High, 70) stopживе один бар. Надсилайте ордер на кожному барі, доки позиція не зміниться.Buyпри відкритому шорті сам перевертає позицію.- Kevin Davey (The Algorithmic Advantage #036): у ф'ючерсів у TradeStation закриття денного бару це біржовий settlement, а в 1440-хвилинного бару остання угода. Пробій може спрацювати на одному виді бару й не спрацювати на іншому. Тестуйте й торгуйте на одному виді.
- Портфельний тест: Portfolio Trader у MultiCharts або Portfolio Maestro у TradeStation.
AvgTrueRangeце просте середнє TrueRange. Для сайзингу за ATR Вайлдера рахуйте його самі:ATRw = ATRw[1] + (TrueRange - ATRw[1]) / 20.
MetaTrader 5 (MQL5)
- Денний бар будується за часом сервера брокера. Короткі недільні бари вважаються повноцінними барами, і 70 барів перестають бути 70 торговими днями. Порівняйте денний графік брокера з біржовим.
- На неттинговому рахунку переворот це угода подвійним обсягом. На хеджинговому стару позицію треба закрити явно, інакше на рахунку опиняться лонг і шорт одночасно.
- Позиція на 70-денному пробої живе місяцями. У CFD щоночі нараховується своп. Перевірте, що тестер враховує своп зі специфікації символу, інакше результат завищений.
- Рівні беріть із закритих барів:
iHighest(_Symbol, PERIOD_D1, MODE_HIGH, 70, 1)іiHighза знайденим індексом. Сигнал перераховуйте один раз при появі нового денного бару.
Де ідея може зламатися
- У відео немає жодної цифри результату. Є усне ранжування довжин і кореляцій, без періоду, доходності й просадки.
- Довжину 70 обрано перебором 200 варіантів на тій самій історії, на якій її оцінювали. Дослідження зроблено під продукт 2004 року, відтоді горизонти індустрії CTA могли зміститися.
- Ідея портфельна. На одному ринку система завжди в позиції і в боковику перевертається туди й назад, віддаючи ширину каналу на кожному хибному пробої.
- Шорт увімкнено завжди. На фондових індексах із тривалим зростанням шортова половина може систематично втрачати.
- Розмір позиції автор не назвав. Від сайзингу підсумок портфеля залежить не менше, ніж від точного N.