Dolzhenkov_Mikhail

2,3K

подписчиков

9

подписок

Algonomics https://t.me/mdftrade - мой канал. 1️⃣ Инвестирую с 2020 года; 2️⃣ Автор стратегии в Т-Банке с 2024; 3️⃣ Магистр финансов и оценки бизнеса; 4️⃣ Занимаюсь созданием и тестированием торговых алгоритмов, периодически пишу интересное об этом.

Не является индивидуальной инвестиционной рекомендацией

Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

21 сентября в 22:12

🎲 Корреляция говорит «вместе». Но молчит о том, что будет на краю. Когда в портфеле несколько систем, главный вопрос не «сколько каждая зарабатывает», а «сложатся ли их убытки в один день». Обычный ответ — корреляция, одно число. Но она описывает середину, а платит счёт за края. Инструмент, который говорит про края отдельно, — копула. Разбираю его на валютных и индексных фьючерсах. Часть систем из &Трендовый спекулянт (Futures) и &Алго-Ритм . 🧩 «Раздень зависимость от масштаба» Возьмите доходности системы и замените каждый день не процентом, а МЕСТОМ в её собственном ряду: «худшие 5 % моей истории», «середина, 50 %». Число от 0 до 1. Так же со второй. Теперь у обеих одна шкала, и весь масштаб — хвосты, асимметрия, плечо — из картинки ушёл. Что осталось, то и есть копула: когда у первой выпадает 0.03, что обычно выпадает у второй. Распределение разбирается на маргиналы (какая нога сама по себе) и копулу (как они сцеплены). Значит, можно взять честные исторические хвосты своих систем и приклеить к ним ЛЮБУЮ связь. 🎛 Семейства спорят ровно об одном — о краях Гауссова. В середине связь есть, но на краю ноги расцепляются: вероятность «вторая тоже в катастрофе, раз первая уже там» стремится к нулю. Плюс — один параметр, прозрачно и быстро. Минус — обещает, что в кризис системы разойдутся, а они сходятся. t-Стьюдента. Хвосты степенные, углу не даёт опустеть. Плюс — честнее описывает совместные обвалы. Минус — второй параметр, который и управляет краями, приходится оценивать в самом хвосте, где данных меньше всего. Клейтона. Слипается только НИЗ: падают хором, растут врозь — на рынок похоже. Минус — асимметрия тихо съедает доходность модели, и легко принять «риск уменьшился» за «дрейф исчез». Я на этом обжёгся. Гумбеля — зеркальная. ⚠️ Мой приём: не оценивать связь, а назначить её руками Копулу можно оценить по истории. Я так не делаю — и это главная мысль поста. Оценка отвечает «как ноги ходили вместе раньше». Мне нужно другое: «а если слипнутся сильнее». Поэтому маргиналы беру из своей истории как есть, а корреляцию внутри копулы ВБИВАЮ: по валютным фьючерсам историческая выходила 0.38 и 0.62 — в стресс ставлю 0.70, в катастрофу 1.00. 📏 Три замера, а не рассуждения Первый. Сравнил грубую фиксированную 0.70 с тонкими: асимметричной и со случайно плавающей. CVaR95 просадки — 9.3 % против 7.5 % и 6.4–6.9 %. Грубое допущение оказалось КОНСЕРВАТИВНЕЕ изощрённых. Менять не на что. Второй. Одинаково ли строга вбитая 0.70 на разном числе систем? Мерил долю пути от независимости до полного слипания: 0.70–0.73 на четырёх составах, из двух и трёх ног, при исторической связи от 0.03 до 0.62. Число ног ручку не сдвигает. Третий. Во сколько раз связь 0.70 ухудшает CVaR против независимости: на паре ×1.47, на тройке ×1.84. На трёх ногах стресс бьёт сильнее — там больше диверсификации, которую он разрушает. Приём масштабируется сам. 🚪 Почему я так и не перешёл на t-копулу Собирался и не стал, после одного вопроса: если связь вбивается руками, что даст другое семейство? Ничего. При 1.00 гауссова копула вырождается в комонотонность: каждый день все ноги берут ОДИН И ТОТ ЖЕ процентиль своей истории. Сцепить сильнее не может ни одна. t-копула — другая дорога к тому же пределу, а не точка за ним. 💡 В сухом остатке Корреляция — это наклон. Копула — ещё и края, а края и есть риск. Оценивать копулу осмысленно, когда вы ей нормируете: так считали транши облигаций и в 2008 сгорели. Если вы ей себя пугаете, семейство почти не важно — важно, докуда готовы выкрутить ручку и помечено ли это как допущение. Вбитое число честнее оценённого ровно до тех пор, пока подписано вбитым. $SiZ6 $CRZ6 $MMZ6 #трейдинг #пульс_оцени  
Card image 1
2
3
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

20 сентября в 20:25

⚖️ Правило, которое дважды подряд дало мне ответ наоборот Проверял идею: вместо того чтобы выбирать один параметр стратегии, торговать сразу несколько её версий с разными настройками, разделив капитал поровну. Правило приёмки объявил заранее, до замеров — так, чтобы не подгонять его под результат. Три условия: профит-фактор не ниже худшей из версий, просадка ниже, чем у боевой, и версии должны быть достаточно независимы. Правило отработало. Дало ровно противоположный ответ. Дважды из двух. 🪤 Где ловушка Портфель из четырёх версий по четверти капитала несёт меньше риска, чем одна версия на полном размере. Не потому, что диверсификация работает, а просто потому, что размер меньше. Я замерил: 75–78% волатильности исходной системы. А раз риск меньше — просадка падает автоматически. Условие «просадка ниже базы» выполняется само собой, есть польза или нет её вовсе. То есть я поставил условием то, что выполняется механически. Всё равно что оценивать автомобиль по расходу топлива, разрешив ему ехать медленнее. 🔀 Как это выглядело на деле Первый случай, юань. Ансамбль показал просадку заметно ниже боевой версии, но не прошёл третье условие — версии оказались недостаточно независимы. Формально отклонён. Второй случай, доллар. Тот же ансамбль по той же схеме прошёл все три условия. Формально принят. Потом я привёл оба к равной просадке — и получил обратную картину. Юань: отклонённый вариант при равной просадке давал +1402% против +619% у боевой. Больше чем вдвое. Доллар: принятый вариант при равной просадке давал 14 709% против 26 987%. Почти вдвое хуже. Правило не просто ошиблось. Оно оказалось антикоррелировано с тем, что я хотел измерить. 📏 Что делать вместо Приводить всё к равной просадке и сравнивать только после этого. Механика простая. Берём ряд доходностей кандидата и умножаем на множитель — это ровно то же, что торговать его с другим плечом. Подбираем множитель делением пополам так, чтобы просадка совпала с базовой. Дальше сравниваем итоговую доходность. Просадка у обоих одинаковая по построению. Значит, разница в доходности — это и есть преимущество, а не разница в размере позиции. 🔎 Множитель сам по себе — информация Его нельзя выбрасывать после сравнения. Он показывает, какой ценой достаётся выигрыш. У юаня, чтобы догнать просадку боевой версии, ансамблю потребовался множитель 1,78 — то есть плечо 355% вместо 200%. И при этом ухудшился хвостовой риск: средний убыток в худших днях вырос с 2,35% до 3,01%. Читается так: да, при равной просадке доходность выше — но за это надо почти удвоить плечо и получить более тяжёлые отдельные дни. Бесплатного обеда не выдали. 🧪 Проверка, что метод работает Я не стал верить себе на слово и завёл три контрольные точки. Первая: беру систему и просто уменьшаю её размер вдвое. Просадка падает с 24,1% до 12,7% — «безопаснее» без всякого преимущества. Ловушка воспроизводится. Вторая: привожу разбавленный вариант к исходной просадке. Множитель выходит ровно 2,00, доходность совпадает с исходной до третьего знака. Разница исчезла — как и должна была, ведь это одна и та же система. Третья: беру систему с настоящим преимуществом. После приведения она по-прежнему впереди, 663% против 137%. Значит метод не «зануляет всё подряд», а различает разбавление и кромку. 💡 Итог Условия вида «просадка ниже» и «риск меньше» звучат осторожно и ответственно, а на деле пропускают что угодно, если сравниваемые варианты идут с разной экспозицией. Но тут есть что копать дальше. Я записал это себе в регламент рядом с другим правилом того же рода: сравнивать только на одинаковых окнах. Там приводят к общей длине истории, здесь — к общему уровню риска. Смысл один: пока обе стороны не поставлены в одинаковые условия, сравнивать нечего. $SiZ6 $CRZ6 #трейдинг
Card image 1
3
4
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

11 сентября в 10:00

📈 Фьючерс живёт квартал. А история нужна за годы. Любой фьючерс кончается: контракт умирает, торговля переезжает в следующий, и так по кругу. Проверять стратегию на одном контракте бессмысленно — три месяца это не история, это эпизод. Значит, контракты надо склеивать в один длинный ряд. И вот тут начинается интересное: склеить можно двумя способами, и на одном и том же алгоритме они дают разные деньги. Недавно мерил эту разницу в своём тестере на $CRU6 — вышла четверть результата. 🧩 Откуда вообще берётся шов Старый контракт на юань стоит, скажем, 12.80, новый на тот же юань — 12.95. Эти 15 копеек не движение рынка. Это плата за срок: в цене дальнего контракта сидит процентная ставка. Инструмент один, цены разные, и в день переезда ряд обязан как-то через это перешагнуть. 🩹 Способ первый: пересчитать прошлое Берём разницу на стыке и сдвигаем на неё всю предыдущую историю. Потом ещё раз, на следующем стыке. И ещё. Выходит идеально гладкая кривая без единого разрыва — ровно то, что показывает большинство терминалов, когда открываешь «юань» за десять лет. Чем хорош. Индикаторы не ломаются: средняя, ATR, канал считаются сквозь стык и не подпрыгивают на ровном месте. Глазами ряд читается как одна непрерывная бумага — для разметки уровней и сверки с чужим графиком это то, что нужно. Чем плох. Цены прошлого — не те, по которым тогда торговали. Уровень 12.80 из 2022 года после дюжины пересчётов превращается в 11.40 или в 14.20, смотря сколько было переездов и куда смотрел базис. Всё, что привязано к абсолютной цене, начинает врать: стоп в рублях, гарантийное обеспечение, размер позиции, издержки в шагах цены. На длинной истории такой ряд умеет уползти и в минус — цена, которой не бывает. А главное: размер сдвига известен только в день экспирации. Ряд, на котором мы проверяем 2022 год, собран из чисел, которых в 2022 году не знал никто. Это заглядывание в будущее. Не грубое, не «подсмотрел завтрашний бар», но самое настоящее: тест опирается на то, что случится позже. 📏 Замер, а не рассуждение Одна стратегия, те же параметры, то же окно, разница только в способе склейки: — на пересчитанном прошлом +502 тыс ₽ — на настоящих ценах +629 тыс ₽ Пересчёт занизил результат на четверть. Знак мог оказаться и обратным — важно, что расхождение крупное и угадать его заранее нельзя. 🧱 Способ второй: встык, по настоящим ценам Ничего не двигаем. До экспирации в ряду стоят цены старого контракта, после — нового. На стыке остаётся ступенька. Чем хорош. Каждая цена та самая, по которой в тот день действительно торговали. От неё честно считаются ГО, стоп, размер позиции и издержки. И заглядывать некуда: будущее в сборке ряда не участвует. Чем плох. Той самой ступенькой. Если в момент переезда у стратегии открыта позиция, движок видит скачок цены и записывает прибыль или убыток, которых не было: никто не переносил позицию по этой цене, она просто сменила контракт. Я называю это фантомом шва. 🧮 Фантом лечится не склейкой, а учётом Его не надо прятать — его надо вычесть. Движок знает, где стоят стыки, и вычёркивает ровно тот кусок результата, который родился из скачка, а не из движения рынка. На четырёх годах одной ноги таких сделок нашлось 11, и уносили они 155 тыс ₽ убытка, которого стратегия на самом деле не несла. Пока их не вычли, она выглядела хуже, чем есть: профит-фактор 1.72 против настоящих 1.94. У другой ноги знак был бы обратным, и она бы, наоборот, красовалась. Фантом одинаково умеет и портить, и приукрашивать — тем и опасен. ⚠️ Оговорка, без которой пост будет враньём Числа выше сняты с одного инструмента и одной системы. Это не «всегда четверть»: на другом ряду разрыв будет другим и вполне может смотреть в другую сторону. Утверждение тут одно — разница есть, она крупная, и посчитать её можно только на своих данных. И пересчитанное прошлое — не «плохая склейка». Это другой прибор. Плохо, когда им меряют деньги. #новичкам #пульс_оцени #трейдинг
Card image 1
1
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

10 сентября в 5:47

🤖 ИИ внутри торгового терминала: что у него можно попросить. Про нейросети в трейдинге спорят об одном: предскажет цену или нет. Ответ давно известен — нет. Но за этим спором потерялось применение куда более скучное и куда более рабочее. ИИ не как аналитик, а как руки внутри терминала. Недавно собирал такую связку на #osengine — открытой платформе для торговых роботов. Подключил своего ИИ агента через mcp. Ниже то, что у неё реально можно попросить, обычными словами. 🔧 «Перенеси эту стратегию в робота» Самое ценное. Робот в OsEngine — обычный файл кода, который платформа собирает на лету: отдельная среда разработки не нужна, положил файл и перезапустил. Шесть моих стратегий на $SiU6 $CRU6 $MMU6 $SBER жили скриптами на графике и исполнялись руками. Пяти нужен робот — шестая, вечный портфель, ребалансируется четыре раза в год. Перенос занял один день: четыре файла покрыли эти пять, две канальные системы отличались одним числом и стали одним классом. Все собрались с первого раза. Оговорка, без которой пост будет враньём: стратегии не придуманы моделью. Они мои, отобранные заранее. ИИ сделал перевод с языка на язык — работу аккуратную, объёмную и совершенно механическую. Ровно на такой он и силён. 🎛 «Поставь всем режим „только закрытие“, я уезжаю» Дальше то, ради чего иначе открываешь десяток окон. Мост к терминалу — около полутора сотен команд. Сменить инструмент и таймфрейм. Переключить робота между боем и эмуляцией. Поменять порог входа. Снять конфиг и сказать, чем он отличается от вчерашнего. Открыть или закрыть позицию по рынку. Навесить сопровождение: трейлинг, перевод в безубыток, сетку заявок. Всё словами, без кликов и без шанса промахнуться мимо галочки. 🧪 «Прогони канал от 40 до 80, половину истории оставь на проверку» Тестер и оптимизатор доступны теми же командами: период, депозит, комиссия, проскальзывание, число потоков, разделение истории на подбор и проверку, фильтры по результату, выгрузка отчёта. Честно: этот кусок у меня пока не обкатан — история в свежей копии платформы пустая, её ещё качать. Но качается она тоже командой: создать набор, добавить бумаги, включить загрузку. 📊 «Сверь, что позиции набраны в нужной доле капитала» Журнал робота отдаёт эквити, просадку, статистику, открытые и закрытые сделки. Рядом — счета брокера: капитал, позиции, средняя цена. Отсюда арифметика, которую лень делать руками. Пример ловушки ценой в десять раз. Стратегия на графике считает объём так, будто пункт цены стоит рубль, а у мини-индекса он стоит десять. Тестер честно рисует 178 контрактов, на счёте их должно быть около двенадцати. Лечится тем, что стоимость пункта вычисляют из открытой позиции, а не вспоминают: нереализованный результат делят на сдвиг цены, умноженный на число контрактов. 🔍 «Почему вчера не было входа?» Сегодня три робота из пяти не сделали ни одной сделки. Раньше на такой вопрос уходил вечер — разбор занял минуты и дал три разных подробных ответа. ⚠️ Чем за это платишь Модель ошибается уверенно, поэтому проверять приходится всё. Новичкам нужно быть особенно осторожно. Фраза "сделай мне прибыльного торгового робота" может привести к тому, что робота со создаст, только вот логика его будет неисполнимой. ИИ может заниматься откровенной подгонкой параметров (если его не научить обратному). Да что говорить, даже иногда очевидные вещи может выдать из своих догадок и ошибиться. Недавно ИИ признал фьючерс $NGU6 неликвидным, хотя даже не видел его стакан. И кликать в интерфейсе osengine модель не умеет: подключение брокера каждый день делается руками. 💡 В сухом остатке ИИ здесь не торгует и не решает. Он пишет обвязку, переключает режимы, считает доли и находит строку в коде, из-за которой робот промолчал. Экономит не мышление, а часы механики вокруг него. #трейдинг #новичкам
Card image 1
3
4
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

5 сентября в 20:34

«Недвижимость — это лотерея с подкрученными кубиками. Почему "квадратные метры" не спасут ваши деньги». Почему то у наших людей в головах укоренилось мнение недвижимость = стабильность. «Квадраты не обесцениваются», — говорят все вокруг и сравнивают их по риску с депозитам и короткими ОФЗ. Чаще даже не в пользу вторых. Но статистика говорит другое. Мы собрали данные по ценам на недвижимость в РФ за 25 лет (2000–2024), пересчитали в доллары и построили график Ципфа. Результат заставил пересмотреть всё. 🔥 Что мы узнали 1. Цены на недвижимость подчиняются степенному закону (парету), а не нормальному, тут уже можно не продолжать читать тем кто знает, что это значит. Это не «колокол» с предсказуемыми колебаниями, тут жирнейшие хвосты. Параметр α = 0.78. И это меньше 1. Что это значит на практике? Дисперсия цен теоретически бесконечна. То есть отдельные экстремальные события (обвал 2014–2015, скачок 2020–2022) влияют на среднее так сильно, что «историческая средняя» теряет любой смысл. Никакой стабильности и тихой гавани не ждите. 2. Графики Ципфа для приростов цен не линейны. Когда смотришь на абсолютные цены — степенной закон работает. Но когда смотришь на еженедельные изменения — они распределены почти нормально. Без жирных хвостов. Без стабильного роста. Рынок недвижимости — не накопительная машина. Это последовательность случайных шагов с эпизодическими скачками. 3. Загиб графика. Это смесь 25 разных рынков. Каждые 5 лет — новая популяция с другим ценовым масштабом. Смешиваешь 14 тысяч долларов за квадратный метр (2000) с 67 тысячами (2024) — получаешь «излом», который выглядит как доказательство долгосрочного роста. Но это просто иллюзия, созданная смешением эпох. Если брать одну эпоху — линия на графике Ципфа прямее, но и потенциал роста — меньше. 🎰 Почему «квадраты» — плохой способ сохранить деньги. Средняя доходность в долларах за 25 лет: С 2000го года по 2008 был рост в 5.5 раза. Точка на сглаженном графике в 2015м году — это падение на 50% от пиков. 2024 год —снова рост на 70% от минимума. И это на горизонте 15 лет. А теперь посчитайте расходы: Коммуналка, налоги, ремонт, простои между арендаторами; Комиссия риелтору при покупке и продаже — 3–5% с каждой стороны; Транзакционные издержки — это 6–10% капитала, которые нужно просто перекрыть Чтобы просто «отбиться» от транзакционных издержек — цена должна вырасти на 8%. А это два года роста в лучшем случае. 🏠 А для жизни — норм? Для жизни — да. Вы получаете полезность: крыша над головой, стабильность, возможность обустраивать. Это потребление, а не инвестиция. И платить за эту полезность — нормально. Для сдачи в аренду — тоже ок, если считать денежный поток реально, а не на бумаге. 1–2% годовых в долларах от стоимости квартиры в год — это не «обгон инфляции», это «отставание от депозита». Но вы получаете денежный поток, на который можно даже жить. 💣 А для «сохранения денег»? Вот здесь — главная иллюзия. Степенной закон с α < 1 означает: вы не можете оценить «справедливую стоимость» актива. Средняя не сходится. Историческая доходность — не предсказатель будущей. Пик 2008-го не гарантирует, что 2027-й будет выше. Рынок с жирными хвостами — это рынок, где: 80% времени — тишина и скучный рост 20% времени — события, которые переписывают всё (обвал 2008, кризис 2014, пандемия 2020, девальвация 2022) И вы не знаете, какой из этих 20% наступит первым. 📊 Вывод Недвижимость — не плохой актив, но это актив с непредсказуемым распределением доходностей, где хвосты настолько жирные, что классическая финансовая математика перестаёт работать. «Квадраты не обесцениваются» — миф. Они обесцениваются в моменты, когда вы этого меньше всего ожидаете. И растут в моменты, когда все уже купили. Если ваша цель — просто сохранить деньги от обесценивания рубля — посмотрите на диверсификацию. Потому что ставка на один актив с α < 1 — это не инвестиция. Это ставка на то, что следующий «жирный хвост» пойдёт вверх. #пульс #пульс_оцени #новичкам #инвестиции
Card image 1
1
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

4 сентября в 19:13

📅 Как я объявил одну систему втрое рискованнее другой. Обе были одинаковые. Сравнивал две свои канальные системы: одну на долларе, другую на юане. Код один и тот же, отличается только инструмент и длина канала. Получил: у юаня максимальная просадка 18,7%, у доллара 6,2%. Показатель жирнохвостости — 0,145 против 0,315. Вывод напрашивался сам: юань втрое рискованнее по просадке, зато у доллара тяжелее хвост. Записал. Оба утверждения оказались мусором. 🕳 Где дыра Долларовая система торгует с 2013 года, юаневая — с 2022-го. Тринадцать лет против четырёх. Я сравнивал их на разных окнах и приписал инструментам то, что было свойством нарезки. Механизм простой и обидный. Движок восстанавливает кривую капитала из списка сделок, начиная с исходного депозита. К 2022 году долларовая система уже выросла в десятки раз. Один и тот же убыток в рублях весит на выросшем счёте копейки в процентах, а на молодом — заметные проценты. То есть я мерил не риск систем. Я мерил, кто раньше начал. ✂️ Что вышло после обрезки Обрезал долларовую по границам юаневого окна — с 29 апреля 2022 по 21 июля 2026, 1016 позиций. Пересчитал всё заново: Просадка: 19,31% против 18,70% у юаня Доля прибыльных: 44% против 44% Жирнохвостость: 0,172 против 0,145 Концентрация топ-20 сделок: 21% против 21% Обе системы получили одинаковый вердикт. «Втрое рискованнее» превратилось в разницу в полпроцента. «Хвост жирнее» поменял направление на противоположное. Практический итог оказался важным: перевод юаня на эту систему не заводит меня в незнакомую зону риска. Это та же система с тем же профилем, что четыре года работает на долларе. Но узнал я это только после того, как выровнял окна. ⚠️ Вторая версия той же ошибки Есть более коварная форма. Когда считаешь связь между системами, хочется взять «последние N доходностей каждой» — так проще, длины совпадают. Так делать нельзя. Если истории разной длины, последние N дней одной системы соответствуют другим календарным датам, чем последние N дней другой. Ряды разъезжаются по времени, и связь между ними занижается — иногда до нуля. На этом я тоже обжёгся, отдельно от первого случая. Теперь во всех расчётах ряды выравниваются строго по датам: берётся пересечение календарей, недостающие дни заполняются нулём. Никаких «последних N». 🧮 Как это выглядит в правиле Я записал себе так: любое сравнение — только на одинаково нарезанных окнах. Общее окно определяется самой короткой историей, и точка. Побочный эффект неприятный, но с ним приходится жить. Когда я собирал портфель из четырёх своих фьючерсных систем, общее окно схлопнулось до 2022 года — по самой молодой ноге. Одиннадцать лет истории по индексной системе в расчёт не вошли: сравнивать её с юаневой можно только там, где они обе существуют. Это цена честности. Альтернатива — красивые числа ни о чём. 💡 Зачем об этом вообще помнить Ошибка такого рода не падает с ошибкой. Она выдаёт правдоподобную таблицу, где всё сходится и всё выглядит осмысленно. Именно поэтому её легко принять за находку — я и принял, и записал в выводы. Правило простое: прежде чем сравнивать два числа, спросите, на каких данных получено каждое. Если окна разные — вы сравниваете не системы, а даты их запуска. $CRU6 $SiU6 #трейдинг
Card image 1
2
3
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

30 августа в 13:14

⚖️ Спор о метриках, который можно не начинать. Две версии одной стратегии. У первой профит-фактор выше, у второй просадка меньше. Какая лучше? Обычно тут начинается выбор оружия. Кто-то верит в Шарпа, кто-то в фактор восстановления, кто-то в CVaR. И спор идёт не о стратегиях, а о том, чьей линейкой мерить. Причём линейку почти всегда выбирают после того, как увидели результаты. Есть способ ответить раньше, чем метрика выбрана. 📐 Предположение, которое всё меняет Формулировка Горчакова из заметки 2004 года звучит так. Возьмём выборочные функции распределения доходностей двух систем. Если у первой она поточечно не выше, чем у второй, то у первой «доходность» больше, а риск меньше - при ЛЮБЫХ разумных функциях доходности и риска. Это называется стохастическим доминированием первого порядка. На человеческом: выстройте доходности обеих систем по возрастанию и сравните по порядковым местам. Худший день первой не хуже худшего дня второй. Второй по плохости - не хуже второго. И так далее до самого лучшего. Если это выполняется, спорить не о чем. Не «по моей метрике лучше», а лучше по всем сразу - и по тем, которые вы ещё не придумали. Любая функция, которая считает больше лучше меньшего, поставит первую систему выше. Заметьте, насколько это сильнее обычного сравнения. «PF выше» - утверждение об одном числе. Доминирование - утверждение обо всём распределении. 🔬 Что вышло на моих данных Я вставил эту проверку в свой риск-движок и первым делом прогнал через неё одиннадцать вариантов канальной системы на долларе. Все на одной истории - 2366 общих торговых дней, тринадцать лет. Профит-факторы от 1,569 до 1,709. Результат: ни один вариант не доминирует ни один другой. Ни одной пары. Я посмотрел, насколько они вообще близки к доминированию. Для каждой пары считаю долю точек, где порядок нарушается: ноль означает чистое доминирование, половина - полную неразличимость. Медиана по всем парам вышла 48,9%. Сорок девять процентов. Распределения пересекаются ровно посередине. 🤔 Что это значит на самом деле Разница в профит-факторе между вариантами есть - от 1,57 до 1,71, почти девять процентов. А разницы в распределении нет. Значит, выбирая один вариант из этого набора, я выбираю не лучший. Я выбираю тот, который выиграл по конкретной метрике, - а метрика в такой ситуации не обнаруживает факт, а совершает выбор за меня. Это неприятный вывод, потому что именно так все и настраивают системы: сканируют параметр, берут максимум профит-фактора. Формально всё честно. Но данные не подтверждают, что найденная точка чем-то лучше соседних. Тот же результат я получил и на четырёх вариантах канала на юане, включая свою боевую. Ни одного доминирования, нарушения 45-58%. 🧹 Побочная польза Строгое доминирование на реальных данных почти никогда не срабатывает. Это не недостаток метода - это его сообщение: кандидаты действительно несравнимы. Зато у фильтра нашлось неожиданное применение. Две пары файлов дали ноль нарушений в обе стороны - то есть распределения совпали точно. Это оказались дубликаты выгрузок: одинаковое число сделок, одинаковый профит-фактор, я бы их не заметил, а фильтр показал сразу 😆. 💡 Как я это использую Не как селектор - он почти всегда молчит. Как дешёвый предохранитель перед сравнением метриками. Если доминирование есть - вопрос закрыт, метрику можно не выбирать. Если его нет - я знаю, что дальше начинается вкусовщина, и отношусь к результату соответственно: не «система А лучше», а «система А выигрывает по такой-то мере, и это выбор, а не факт». Стоит проверка одну функцию и три секунды счёта. А главное - она не даёт спорить о линейках там, где мерить нечего. $SiU6 $CRU6 #трейдинг #пульс_оцени
Card image 1
3
4
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

20 августа

📈 Одна картинка вместо хвостовой модели. Только вчера рассказывал, как хвостовая модель обещала «раз в 722 года» за день до события. Продолжение: оказывается, есть картинка, которая ловит такое враньё на глаз. Называется график Ципфа. Талеб показывает его на заявках по безработице: ковидный скачок выглядел невозможным выбросом - а на этом графике лёг ровно на продолжение прямой. Кто смотрел на график, для того сюрприза не было. Построили такой же по нашим стратегиям. 🧭 Как он устроен Берём все убыточные дни стратегии. По горизонтали - размер дневного убытка, по вертикали - доля дней хуже этого размера. Обе оси логарифмические: деление - не «плюс один процент», а «в десять раз». Всё чтение сводится к одному правилу: если правый край облака точек ложится на прямую - убытки живут по степенному закону. У маленьких и огромных убытков один механизм, прямая продолжается вправо за пределы виденного, и предела у убытка НЕТ. Худший день истории - не аномалия, а очередная точка на той же линии. Следующая будет правее. Наклон прямой - скорость, с которой редеют большие дни: круче - большие убытки быстро становятся редкостью, положе - хвост жирный и «рекорды» будут обновляться регулярно. А вот если кривая в конце загибается вниз - хвост действительно обрезан: что-то физически мешает большим убыткам случаться. 🔍 Что видно на наших трёх ногах Стратегия на $CRU6 ( &Алго-Ритм ): день −5.82 %, тот самый «раз в 722 года», лежит прямо на прямой. Подгонка говорила «предел −3 %», картинка говорила «прямая, предела нет». Картинку можно было посмотреть за день ДО. Стратегия на $MMU6: худший день −25 % (25 февраля 2022) сидит у продолжения прямой. Под степенным взглядом это не чёрный лебедь, а ожидаемая точка. И наклон у этой прямой пологий - хвост честно жирный. Стратегия на $SiU6 (часть из &Трендовый спекулянт (Futures) ) единственная нога, где хвост в конце загибается вниз. Это след килсвитча на −2 % - он реально режет большие дни. Но точки до −4.77 % на графике тоже есть, и они показывают ровно то место, где защита не работает: гэп между сессиями проходит мимо любого внутридневного стопа. ⚙️ Практическая польза для алгоритмов 1. Секундная проверка любой риск-модели. Если на Ципфе прямая - запрещено верить модели, стопу или бэктесту, которые обещают предел убытка. Никакой математики, один взгляд. 2. Видно, работает ли защита. Загиб вниз в конце - стоп или килсвитч реально обрезает хвост. Нет загиба — защита декоративная и в худшие дни не участвует. 3. Устойчивость к новым данным. Прямая почти не меняется от свежих точек - поэтому вывод «предела нет» можно сделать до кризиса, а не после. Чем при этом НЕ пользуемся: наклоном как числом. Оценка наклона по этой картинке смещена (на MXI даёт 2.06 против 2.5-2.7 по аккуратному методу). Число для решений остаётся прежним, из утреннего поста: показатель хвоста не измеряем, а назначаем - пол α = 3. 🔧 Куда это вшито Панель Ципфа теперь рисуется автоматически при каждой генерации отчёта Монте-Карло: отдельным PNG и листом внутри Excel, по всем шести боевым контурам. Каждый вывод подгонки «хвост обрезан» будет очно встречаться с прямой на картинке. 🎯 Что унести Прежде чем верить любой цифре риска - положите убытки на дважды логарифмический график. Чем ровнее прямая, тем меньше прав у слова «беспрецедентный»: резерв обязан допускать день хуже виденного. А единственный законный способ обрезать хвост - механический, стопом всего алгоритма, и его работу видно на том же графике загибом вниз. #трейдинг #пульс_оцени
Card image 1
1
2
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

20 августа

🎲 Модель сказала «хуже не бывает». Проверил - бывает. В нашем Монте-Карло есть отдельный прогон, где хвостовые дни рисуются не из истории, а из обобщённого распределения Парето. Смысл в том, чтобы дать модели право нарисовать день хуже виденного. Форму хвоста задаёт один параметр - ξ. Если он больше нуля, хвост степенной и предела нет. Если меньше - модель утверждает, что предел есть и хуже не бывает. Сегодня выяснилось, что она это утверждала. И зря. 🦃 Проверка на индюке Беру ногу юаня и подгоняю хвост по данным ДО 19 сентября 2024 года. Выходит ξ = −0.24: хуже примерно −3 % не бывает. Спрашиваю ту же модель про день −5.82 %. Ответ: раз в 722 года. Но он случился. Для сравнения, обычная нормалка, которую все ругают за недооценку хвостов, давала для этого дня 3.9 сигмы - то есть оказалась ближе к правде, чем «правильная» хвостовая модель. По второй ноге картина та же. Килсвитч в стратегии стоит на −2 %, а пять худших дней: −4.77, −4.76, −4.64, −4.10, −3.87 %. Килсвитч режет убыток внутри дня и не работает, когда цена уходит между сессиями - тогда позиция открывается уже за порогом. Модель приняла защиту от одного риска за отсутствие другого. 📉 Почему так вышло Причина не в коде. У Талеба это сказано прямым текстом: по данным выборки хвост рисуется тоньше, чем он есть. Данных в хвосте всегда мало по определению, и подгонка систематически ошибается в сторону «всё спокойно». Насколько мало - видно на стратегии на $MMU6 , единственной нашей ноге с честным степенным хвостом. Показатель α = 2.7, каппа 0.307. Убираю из выборки ОДИН день, 25 февраля 2022: α = 2.70 → 13.3 Один день из 1367. Вся оценка хвоста держится на нём. 🔍 Что при этом всё-таки работает Одна вещь из степенного закона на наших данных держится твёрдо. Если убыток пробил порог, его средний размер составляет примерно 1.6 порога - и это отношение почти не меняется: порог 2.25 % → 1.76 порог 2.83 % → 1.65 порог 3.79 % → 1.63 порог 5.11 % → 1.53 То есть предсказать МОМЕНТ нельзя, оценить МАСШТАБ уже начавшегося - можно. 🐛 Что нашли попутно Пока чинили одно, вылезло другое. Модель изредка рисовала день −350 %. Это не убыток, это отрицательный счёт: при таком числе путь эквити переворачивает знак, и просадка после этого считается мусорной. Таких дней было 23 из 249 666 - сотая доля процента. Они одни раздували CVaR99 с 93 % до 243 %. 🔧 Метод, к которому пришли - Пол вместо оценки. Если подгонка даёт ξ ниже 1/3, берём 1/3. Модели просто запрещено обещать предел, средний избыток при этом остаётся тем, что в данных - выдумывается не хвост, а только скорость его затухания. - Потолок −100 % на день. Дальше маржин-колл и ноль на счёте, а не отрицательный счёт. Прогон честно засчитывается как разорение. - В отчёте публикуются обе цифры - и подогнанная, и рабочая, видно, где сработал пол. Перегнали все шесть боевых контуров. Пол сработал на всех алгоритмах, которые "обещали меньше" на всех пяти строках. Требуемый резерв вырос: - Стратегия на $SiU6 (частично из &Трендовый спекулянт (Futures) при 200 %: 23.9 % → 33.8 %; - Стратегия на $CRU6 (из &Алго-Ритм ) при 200 %: 28.4 % → 32.4 % А по стрвтегии на MXI цифра наоборот УПАЛА: 91.0 % → 65.1 %. Те самые 0.01 % дней. 91 % было ошибкой счёта, а не оценкой риска - и мы бы приняли решение по плечу, глядя на неё. 🎯 Что стоит унести Оценка хвоста по своим данным почти всегда врёт в спокойную сторону, и чем меньше кризисов вы пережили, тем спокойнее выглядит картинка. Поэтому показатель хвоста разумнее не измерять, а назначать сверху. #трейдинг #пульс_оцени
Card image 1
4
5
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

11 августа

📉 «Максимальная просадка −19,55%». Что это число обещает на самом деле. В карточке любой стратегии есть строка «максимальная просадка». Её читают как границу: вот настолько плохо бывало, значит примерно настолько плохо и будет. На неё считают плечо, под неё подбирают депозит. Я годами писал это число в своих отчётах, не погружаясь глубоко, хоть и понимал интуитивно кое-что. Недавно наткнулся на заметку Александра Горчакова 2003 года. Максимальная просадка не потолок. Это самая глубокая яма из тех, что уже попались. И вопрос не в том, насколько она глубока, а в том, сколько вы шли, прежде чем в неё угодить. 🎲 Формула на две строки Превратим кривую доходности в последовательность нулей и единиц: единица - просадка не глубже прежнего максимума. По определению максимума весь прошлый ряд состоит из одних единиц. Дальше обычная байесовская арифметика: вероятность «удержаться» считаем изначально любой от 0 до 1 и смотрим, что сообщила история. P = (T + 1) / (T + N + 1) T - сколько дней система отторговала, N - горизонт, на который нужна гарантия. Всё. Никакого Монте-Карло и других сложных метрик. Отсюда главное: если горизонт составляет долю c от прожитой истории, вероятность падает примерно как 1/(1+c). Гарантия на срок в половину истории - это уже 2/3. На срок, равный всей истории, - ровно половина. 🧮 Мои системы (с учётом бектеста): Год - примерно 250 торговых дней. - Индексная, торгует с 2015 года, T = 2899: на год 2900/3150 = 0,921, на три года 2900/3650 = 0,795 - Юаневая канальная в &Алго-Ритм и частично в &Трендовый спекулянт (Futures) с 2022 года, T = 1055: на год 1056/1306 = 0,809, на три года 1056/1806 = 0,585 Разница не в качестве систем - она вся в длине истории. У юаневой четыре года бэктеста, поэтому примерно один шанс из пяти увидеть новый рекорд просадки уже в первом году и почти один из двух за три. (Числа сняты с бэктеста, плечо 200%) ❗️❗️❗️Вывод получился конкретный: на короткой истории планировать надо от просадки глубже той, что видел. 📌 Два примера автора оригинальной статьи Трейдер с неизменной стратегией и четырьмя годами за плечами: T = 1000, N = 250, выходит 1001/1251 = 0,80 (шанс увидеть новую просадку а след. год = 20%) Трейдер, который каждый год меняет систему: T = 250, N = 250, выходит 251/501 = 0,50. Ровно монетка. Второй случай стоит перечитать. Человек честно посчитал просадку и честно её опубликовал - а число не значит ничего. Не потому, что он ошибся, а потому, что за ним нет наблюдений: он сам себе каждый год обнуляет T. ⚡️ Проверка, которую я не заказывал Я посчитал эти числа вечером. Для индексной системы вышло 0,921 - примерно один шанс из тринадцати, что рекорд будет пробит в течение года. Через два часа, разбирая свежую выгрузку, я обнаружил, что он уже пробит. Прежний максимум был снят 6 июля, новый - 28-го. Событие с вероятностью 8% случилось в первые 3% отведённого срока. Это не опровержение метода: восьмипроцентные события на то и восьмипроцентные. Скорее ответ на вопрос, зачем такая строка нужна. Без неё я бы сказал «просадка выросла, странно» - с ней «выпало то, чему была назначена вероятность». 🚩 Где это ломается в публичном доступе Откройте любую витрину автоследования: там рядом стоят «максимальная просадка» или «прогнозируемая просадка». Первые попавшиеся карточки. Одна: максимальная −37,5%, прогноз −11%. Другая: максимальная −94,7%, прогноз −56% (Либо без второго). Прогноз в разы меньше того, что уже случилось. Это не осторожная оценка будущего, а утверждение, что впредь будет заметно лучше, чем было. Из модели такое не выводится: если уровень уже пробивали, вероятность удержаться под ним считается - и она низкая. Вряд ли кто-то жульничает, но подписчик читает его как обещание. ⚠️ Ограничения Метод отвечает только на вопрос «пробьёт или нет» и молчит о том, насколько глубже будет новая яма, и он предполагает, что рынок не менялся. Смена режима биржи или др. обнуляют накопленный запас наблюдений. $MMU6 $CRU6 #новичкам #трейдинг #пульс_оцени
Card image 1
2
3
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

8 августа

📈 Ровная кривая доходности: почему по ней нельзя судить о стратегии. Кривая эквити - главный аргумент в любой продаже торговой системы. Растёт слева направо, почти без провалов, красиво. Кажется, что дальше остаётся только измерить, насколько она ровная, - и получить объективную оценку качества. Так и делают. Проводят через кривую регрессию по времени и смотрят R² («насколько точно кривая ложится на прямую»), значимость наклона, K-ratio. Чем ровнее - тем якобы надёжнее система. Я проверил, что эти числа на самом деле показывают. 🔬 Эксперимент Беру реальную кривую своей канальной системы на $SiU6 : 2325 торговых дней, 13 лет. Строю МНК логарифма эквити по времени. Получаю R² 0,946 и t-статистику наклона 201. Теперь генерирую 2000 случайных блужданий - просто случайные доходности с тем же средним и той же волатильностью. Никакой стратегии, никакого преимущества, только дрейф и шум. И считаю на них то же самое. Медиана по случайным: R² 0,988 и t наклона 444. То есть выдуманные ряды дают и более гладкую картинку, и «значимость» вдвое выше. Реальная кривая проигрывает случайной по обоим показателям. На двух других моих системах - та же история: R² 0,947 при случайных 0,987; R² 0,981 при случайных 0,973. 🧨 Почему так выходит ? Причина в том, что кривая эквити - накопленный ряд. Каждая её точка почти равна предыдущей, соседние значения не независимы. Независимых наблюдений там на порядки меньше, чем точек на графике, и любой тест значимости на таком ряде выдаёт числа, которые нечего интерпретировать. Отдельно замечу, почему у настоящих кривых R² даже ниже. У реального рынка волатильность идёт кластерами: спокойные месяцы, потом резкий период. Кривая колеблется вокруг тренда сильнее, чем гладкая случайность. Ровность наказывается за честность. ⚠️⛔️ ❗️И самое неприятное Гладкая кривая - это не признак качества, а признак того, что риск ещё не проявился. Стратегия, которая годами собирает по копейке, выглядит идеальной прямой ровно до того дня, когда собирает весь накопленный убыток разом. У меня это подтвердилось буквально. Самая гладкая кривая из трёх - R² 0,981, выше 70% случайных - принадлежит той системе, которую я на днях решил менять (на личном счёте, на $CRU6 ). Причина замены: её преимущество затухает по годам. Кривая при этом самая красивая из всех. 📉 Что я проверял раньше Идея «управлять по кривой эквити» - снижать объём после просадки, отключаться при пробое средней - стоит на предположении, что результаты идут полосами. Я это мерил: по 539 сделкам фактических серий 263 при ожидаемых 267. Никакой зависимости. И отдельно - защитный выключатель по просадке в одной из систем сработал 1 раз за 1022 сделки, то есть не работал вовсе. 💡 Что с кривой можно делать Две вещи, и обе - без всякой модели: максимальная просадка и время под водой (сколько дней счёт был ниже прежнего пика). Это прямые свойства кривой, их не нужно ни оценивать. Скорость роста берётся как среднее логарифмических доходностей, а не как наклон регрессии - то же число, но без ложной точности вокруг него. А всё остальное - просадочные квантили, хвосты, оценка риска - считается на доходностях, а не на накопленной кривой. Разница не косметическая: когда я однажды посчитал просадки по накопленной кривой вместо доходностей, оценка риска завысилась ровно вдвое. Ровная линия на картинке - это про то, как прошлое сложилось в сумму. О том, повторится ли оно, она не сообщает ничего. #трейдинг #пульс_оцени #аналитика
Card image 1
1
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

2 августа

📊 Сколько сделок нужно, чтобы поверить своей стратегии? Кто-то скажет: 100 наблюдений - и среднее уже надёжно. Для роста людей это правда. Для доходности - нет. Разница в «жирных хвостах»: на рынке одно наблюдение способно перевесить всю остальную выборку. Пример из моей истории стратегии на юань: за 12 лет лучшая сделка дала +14.21% , а типичная - 0.29%. Одна сделка стоит полусотни обычных. Пока такое возможно, усреднение работает медленно, и все формулы, которые опираются на нормальное распределение, врут. Как это измерить Есть метрика - каппа (κ). Она показывает, насколько медленно накопление данных снижает неопределённость. По сути, это метрика "жирнохвостости". Только измеряет она не форму распределения, а скорость сходимости суммы к своему пределу. Каппа - это мера того, насколько медленно новые сделки уточняют оценку дрходности стратегии. - κ = 0 - идеальный случай; - κ ≈ 0.2 - уровень фондового индекса; - κ ≈ 0.5 - данных нужно кратно больше, чем кажется; - κ → 1 - среднее не работает вовсе, примером служит распределение Коши. Тут нет ни мат ожидания, ни дисперсии, только случайность. Мы посчитали κ по всем боевым стратегиям (по доходности сделки к счёту): SBER из личного портфеля: 0.140 (2013-2026, 1770 сделок); Юань из личного портфеля: 0.172 (2022-2026, 509); MXI из личного портфеля: 0.172 (2015-2026, 1462); Юань из автоследа &Алго-Ритм : 0.180 (2022-2026, 1003); SI из автоследа: 0.305 &Трендовый спекулянт (Futures) : (2013-2026, 2829). ⚠️ Ловушка, в которую мы сами попались: Сначала считали κ по прибыли в рублях - получили 0.42-0.57 и решили, что данных нужно втрое больше. Ошибка: при торговле процентом от счёта поздние сделки крупнее в рублях просто потому, что счёт вырос. Метрика приняла рост депозита за рыночный риск. Пересчёт в процентах от счёта уронил цифры вдвое и перевернул порядок стратегий: та, что казалась самой опасной, оказалась одной из самых спокойных. 🧐Что важнее самой цифры Одна и та же стратегия на разных окнах даёт разное: SI, вся история 2013-2026 → κ 0.305 SI, только с 2022 года → κ 0.188 Объём выборки тут ни при чём - случайные подвыборки любого размера дают те же 0.30. Решает период: в длинной истории есть девальвация 2014-2015 и февраль 2022, а в коротком окне их нет. Отсюда вывод, который стоит держать в голове всем: низкая волатильность стратегии часто означает не устойчивость, а то, что кризиса ещё не было. Стратегия, запущенная в 2023-м, покажет красивые цифры - просто потому, что не встретила настоящего шторма. ❓Зачем это нужно на практике Из каппы следует, какой профит-фактор можно считать доказанным, а какой - шумом: 400 сделок → PF ниже 1.75 = шум 600 сделок → ниже 1.56 = шум 1000 сделок → ниже 1.42 = шум 3400 сделок → ниже 1.20 = шум Поэтому «PF 1.9 на 60 сделках» - это не результат, а совпадение. А PF 1.65 на трёх тысячах сделок - уже разговор. ❗️Проверяйте не только доходность, но и на скольких данных она получена. И на каком периоде - прошла ли стратегия хоть один кризис. $SiU6 $CRU6 $SBER $MMU6 #пульс_оцени #трейдинг
Card image 1
4
5
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

31 июля

Как заставить ИИ прочитать книгу с пользой. Обычный сценарий: просишь ИИ прочитать книгу - получаешь пересказ. Красивый, структурированный и бесполезный. Пересказ не меняет ни одного вашего решения. Мы попробовали иначе. Задача звучала так: «Вот книга. Вот наши работающие системы и данные за четыре года. Найди, где книга противоречит тому, что мы делаем, и проверь это на наших цифрах». Книга - «Статистические последствия жирных хвостов» Талеба. Дальше - что из этого вышло за один вечер. 1. Нашёлся сломанный критерий отбора. Мы отбирали бумаги для торговой системы по фактору прибыли: порог 1.4, ниже - не рассматриваем. Перебрали 133 бумаги. Талеб посвящает целую главу тому, почему так нельзя: когда перебираешь сотню кандидатов и берёшь лучших, часть «лучших» - просто удачный шум. Посчитали, какой фактор прибыли способен нарисовать чистый шум. Оказалось, всё зависит от числа сделок: при 400 сделках шум сам выдаёт 1.75, при 3400 - всего 1.20. Наш единый порог 1.4 был слишком строгим для одних бумаг и слишком мягким для других. 2. Две бумаги вылетели из системы. Проверили заново по правильному порогу и заодно посмотрели, на чём держится прибыль. У одной бумаги двадцать лучших сделок давали 48% всей валовой прибыли - без них стратегия глубоко убыточна. Это не край рынка, это везение. Обе выведены. 3. Часть наших страхов не подтвердилась. Проверка работает в обе стороны. Оказалось, у самого индекса МосБиржи $IMOEXF хвосты чудовищные - одно наблюдение даёт 92% суммы четвёртых степеней, то есть привычные метрики риска на индексе просто не имеют смысла. А у наших стратегий такого нет: выход по времени обрезает хвост, мы не сидим в позиции через событие. Значит осторожность нужна к плечу и к удержанию, а не к дневной статистике. Это сэкономило нам переделку того, что и так работает. 4. Самое важное: ИИ ошибается, и это ловится. За вечер модель трижды выдала цифру, которая оказалась артефактом метода. Один раз просадка была посчитана не тем способом - и сравнение двух вариантов портфеля перевернулось на противоположное. Другой раз стресс-тест выдал катастрофу, а при проверке выяснилось, что он незаметно обнулил доходность: мерили исчезнувшую прибыль, а не риск. Каждый раз ошибку ловило одно правило: новая цифра ничего не значит, пока тем же способом не воспроизведён уже известный ориентир. Если новый метод не может повторить то, что вы уже знаете, - он считает не то. Рецепт, если захотите повторить Дайте ИИ книгу вместе со своими данными, а не отдельно. Просите не пересказ, а список мест, где вы противоречите книге. Требуйте, чтобы каждый вывод был посчитан на ваших цифрах. И заставляйте проверять новый метод на старом известном результате. Тогда книга перестаёт быть чтением и становится инструментом. У нас - минус две бумаги из системы, переделанный критерий отбора и три новых метода оценки риска. За вечер. #пульс #пульс_оцени #инвестиции
Card image 1
4
5
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

29 июля

⚙️ Как мы считаем риск: принципы, к которым я пришёл за годы тестов. Бэктест отвечает на вопрос «сколько бы я заработал». На вопрос «что я готов потерять» он не отвечает в принципе - история одна, а рисковать предстоит в тысячах ненаступивших сценариев. Ниже - рабочий конвейер оценки риска, который я применяю к любому портфелю: хоть системному на фьючерсах, хоть пассивному. 1️⃣ Правильные единицы. Дневные результаты нормируем на текущую эквити, а не на стартовый капитал. Стратегии реинвестируют: рублёвый P&L растёт вместе со счётом, и если мешать «рубли», симуляция подкладывает большие поздние дни под маленький ранний капитал - просадка завышается вдвое. Проверка корректности одна: медиана симуляций должна сходиться с реализованной просадкой. 2️⃣ Монте-Карло блочным бутстрапом. 5000 альтернативных историй: дневные доходности перемешиваются блоками по 10 дней (волатильность кластеризуется - рвать кластеры нельзя), ноги портфеля сэмплируются синхронно, чтобы сохранить их взаимосвязь. На выходе - распределение просадок вместо одной цифры. 3️⃣ CVaR вместо VaR. Квантиль (p99) говорит, где начинается плохой хвост. CVaR говорит, что внутри него: средний убыток худших сценариев. Для толстохвостых распределений просадок разница материальна и всегда не в вашу пользу. Правило: пороги и триггеры в регламентах - по квантилям (просто и проверяемо), а размер плеча - по CVaR. 4️⃣ Стресс корреляций - главный тест. Диверсификация умирает именно тогда, когда нужна: в панике корреляции активов взлетают к 0.5-0.7, и «независимые» ноги падают хором. Моделируем гауссовой копулой: каждой ноге сохраняем её фактическое распределение, но навязываем общий шок. Эмпирическое правило по всем нашим портфелям: поломка корреляций удваивает просадку. 5️⃣ Плечо - статическое, под кризис. Мы проверяли «умный» вариант: динамически резать объёмы при росте скользящей корреляции. Не работает - корреляция считается по окну в 30-90 дней и всегда опаздывает: шок происходит при ещё «спокойных» показаниях. Вывод: запас на кризис зашивается в размер позиции постоянно, а не включается по сигналу, который приходит после удара. 📐 Пример на живом портфеле (три тренд-системы на $SiU6 $MMU6 $CRU6 . суммарное плечо 300%): • реализованная просадка за 4 года: 5.8% • Монте-Карло: медиана 7%, p99 ≈ 13% - обычный мир • копула, корреляция 0.7: медиана 15%, p90 ≈ 21% • CVaR95 кризисного сценария: ~26% Пять цифр вместо одной. Красивые 5.8% из бэктеста и «готовься терпеть четверть счёта» - это один и тот же портфель, просто первый ответ - про прошлое, а последний - про обязательства перед будущим. Плечо выбрано так, чтобы пережить последнюю цифру, а не первую: вероятность разорения во всех 60 000 прогонов - ноль. Итог в одну строку: риск - это не волатильность и не просадка бэктеста, а ущерб худших сценариев при сломанной диверсификации. Всё остальное - приятные новости, которые не требуют планирования. #трейдинг #пульс_оцени
Card image 1
2
3
Dolzhenkov_Mikhail
Dolzhenkov_Mikhail

27 июля

🎲 Z-счёт: как проверить, что «после двух убытков надо пропустить сделку». Почти у каждого трейдера есть такое правило. Три убытка подряд - снижаю объём. Серия прибылей - добавляю. Логика кажется железной: рынок ведь ходит полосами. Проблема в том, что полосы есть и у честной монеты. Подбросьте её сто раз -увидите и пять орлов подряд, и семь решек. Это не память монеты, а обычная случайность. И прежде чем строить на серии правило, стоит проверить: ваши полосы длиннее случайных или нет? Ровно на этот вопрос отвечает Z-счёт (runs test). 📐 Как считается Берём список сделок и считаем «серии» - непрерывные полосы одинаковых исходов. Пример из десяти сделок: + + − − + − + + + − Серий здесь шесть: (++)(−−)(+)(−)(+++)(−). Прибыльных сделок W = 6, убыточных L = 4, всего N = 10. Сколько серий должно быть у честной монеты при таком раскладе? Формула простая: ожидаемые серии = 2·W·L/N + 1 = 2·6·4/10 + 1 = 5,8 Фактически у нас 6 - почти ровно столько же. Теперь переводим в стандартные отклонения. Обозначим X = 2·W·L = 48: Z = (N·(R − 0,5) − X) / √(X·(X − N)/(N − 1)) Z = (10·5,5 − 48) / √(48·38/9) = 7 / 14,2 = +0,49 Читается так: • Z < −1,96 - серий меньше ожидаемого, исходы слипаются в полосы. Правила вида «после убытка сокращаюсь» осмысленны. • Z > +1,96 - серий больше ожидаемого, исходы чередуются. После убытка вероятнее прибыль, и пропускать сделку - вред. • |Z| < 1,96 - полос ровно столько, сколько у монеты. Прошлая сделка не говорит о следующей ничего. Наши +0,49 - третий случай. 🔍 Живой пример У одной из моих систем на валютном фьючерсе годами стоял фильтр: после двух убытков подряд пропускаем следующий вход. И он работал - на истории поднимал профит-фактор с 1,77 до 1,91, а просадку срезал на два пункта. Считаю Z-счёт по 539 сделкам: фактических серий 263 при ожидаемых 267. Z = −0,33. Никакой зависимости. Но метрики-то улучшались. Значит, надо смотреть не на метрики, а на то, что фильтр выбрасывает. И вот тут всё встало на места. Ужесточаю правило до «пропускаем после одного убытка» - фильтр отсекает 95 сделок со средним результатом +2 561 ₽. А средний по всем 539 сделкам - +2 384 ₽. Он выбрасывает сделки ЛУЧШЕ средних. Суммарно - четверть миллиона рублей выброшенной прибыли. Правило гласило: после серии убытков сделки слабее. Данные говорят: не слабее. ⚠️ Почему профит-фактор обманул При том же ужесточении профит-фактор вырос до 1,81 - а доходность рухнула с +642% до +423%. Фильтр отрезал прибыльный хвост и улучшил соотношение прибыль/убыток. Профит-фактор - это отношение, и его легко поднять, выкинув часть сделок. Деньги при этом уменьшаются. Отбирая подмножество сделок, смотрите на итог в деньгах, а не на красивое отношение. 💡 Что с этим делать Правило, выведенное из серий, стоит гонять по трём проверкам: значимый Z-счёт, поведение соседних настроек и - главное - состав того, что правило выбрасывает. Если отсекаемые сделки не хуже остальных, никакой закономерности вы не нашли. Оговорюсь честно: соседние настройки - слабая проверка, и я сам на этом попался. У моего фильтра варианты «после 4» и «после 5» трогают всего пять и три сделки из 539. Разумеется, они ничем не отличаются от базы - они почти ничего не делают. Судить по ним всё равно что испытывать лекарство на трёх пациентах. Улучшение метрики на истории само по себе не доказывает ничего. Лучший из полусотни перебранных вариантов красив случайно - просто потому, что их было полсотни. $SiU6 $CRU6 #трейдинг #пульс_оцени
Card image 1
3
4