тему прочитал. В вашем примере уже есть нормальный эмпирический эксперимент, и я бы не пытался заранее назначать абстрактный штраф за каждый дополнительный параметр.
Я бы столкнул лоб в лоб два полностью определённых процесса:
Три общих порога для всех 12 ETF.
Три отдельных порога для каждого ETF.
На каждом шаге оба варианта оптимизируются на одном и том же прошлом участке, после чего параметры фиксируются и проверяются на следующем OOS-отрезке. Затем окно сдвигается. В результате нас интересует не общий Sortino за 25 лет, а то, насколько преимущество раздельной настройки регулярно выживает на новых данных.
В качестве грубой, но понятной оценки можно взять:
прирост раздельной настройки на обучении минус её прирост на OOS.
Допустим, отдельные параметры дали относительно общих +1 к Sortino внутри выборки, а на последовательных OOS-участках осталось только +0,1. Значит, примерно 90% красивого преимущества испарилось после выхода на новые данные. Я бы называл это не универсальной мерой переподгонки, а эмпирической оценкой оптимизма конкретной процедуры.
Второй тест, на мой взгляд, ещё интереснее: построить матрицу переноса параметров. Параметры, подобранные на XLI, применить к остальным ETF, параметры XLK — тоже ко всем и так далее.
Если на OOS каждый инструмент устойчиво лучше работает именно со своими параметрами, чем с чужими или общими, значит индивидуальность инструментов реальна. Если красивая диагональ появляется только на обучении, а на новых данных исчезает, то мы просто дали оптимизатору 36 способов подстроиться под шум.
При этом 12 ETF нельзя считать двенадцатью полностью независимыми подтверждениями: они связаны общим рынком. Поэтому сравнивать лучше не только результаты отдельных систем, но и временной ряд всего портфеля, а доверительные интервалы строить блоками по датам.
Я бы ещё добавил промежуточный вариант: не один набор параметров на всех и не отдельный набор на каждый инструмент, а несколько групп похожих ETF. Возможно, реальный максимум устойчивости окажется именно посередине.
В общем, здесь согласен с вами: считать количество параметров недостаточно. Гораздо полезнее посмотреть, сколько преимущества раздельной настройки переживает перенос во времени и на соседние инструменты. Такой результат уже можно пощупать руками, а не только обсуждать на уровне степеней свободы.
хороший пример того, почему количество настраиваемых чисел само по себе ещё не определяет сложность системы.
В первом варианте есть четыре явно подбираемых параметра: два периода индикаторов и два порога. Во втором числовой параметр действительно один, но взаимодействие двух состояний индикатора с пятью днями недели делит выборку уже на десять режимов — если каждая «краска» используется как отдельное торговое состояние.
Где больше подгонки, по числу параметров или цветов заранее не определить. Важен весь класс проверенных гипотез:
— были ли индикаторы выбраны заранее или отобраны из десятков вариантов;
— был ли день недели включён до теста или после просмотра результатов;
— перебирались ли отдельные дни и их комбинации;
— назначались ли разные действия каждой из десяти ячеек;
— сколько независимых сделок осталось внутри каждого режима.
Например, у пяти дней недели всего один категориальный признак, но если разрешить выбирать любые комбинации дней, получаем уже 32 возможные маски включения и исключения — ещё до подбора параметра индикатора. Формально числовой параметр один, а фактический перебор уже немаленький.
Поэтому я бы говорил не просто о количестве параметров, а об эффективной сложности системы: сколько разных правил она способна породить и сколько вариантов фактически было просмотрено при выборе финального.
Проверять при этом нужно весь процесс целиком. Выбор индикатора, порога, дней недели и правил взаимодействия выполняется только на обучающем окне, после чего всё фиксируется и проверяется на следующем OOS-участке. Затем окна сдвигаются вперёд. Если день недели или схема раскраски выбирались с учётом результатов тестового периода, это такая же подгонка, как и оптимизация обычного коэффициента.
Поэтому во втором варианте подгонки вполне может оказаться больше, несмотря на один формально настраиваемый параметр. Само число коэффициентов — слишком грубая оценка сложности.
это показательный результат. Фильтрация и прогнозирование — всё-таки разные задачи. Баттерворт, преобразование Гильберта, вейвлеты или SSA могут красиво разложить либо сгладить уже наблюдаемый ряд, но сами по себе не создают информацию о следующем движении цены.
В реальном времени за сглаживание обычно приходится платить задержкой: уменьшаем лаг — возвращаем шум. Адаптивные AMA, KAMA и подобные методы дополнительно оценивают текущее состояние ряда, то есть добавляют параметры и ещё один источник нестабильности.
Поэтому EMA оказывается сильным базовым вариантом: один понятный параметр, прозрачный лаг и минимум возможностей для переоптимизации.
Сравнивать более сложные фильтры с EMA, на мой взгляд, нужно при сопоставимом эффективном лаге и степени сглаживания. Параметры каждого метода подбираются только на прошлом участке, затем фиксируются и проверяются на следующем, ранее не использованном отрезке. После этого обучающее и тестовое окна сдвигаются вперёд, а итог строится только из последовательных тестовых участков. То есть речь идёт о walk-forward OOS-проверке, а не об одном удачно выбранном тестовом периоде.
Если адаптивный метод предполагает периодическую перенастройку, в тесте нужно воспроизводить ровно тот же график перенастройки, который был бы доступен в реальной торговле. Иначе будущая информация незаметно попадёт в параметры.
Если после такой проверки и учёта издержек сложный фильтр не обыгрывает EMA, значит он просто более дорогим способом сгладил тот же ряд.
Полностью выбрасывать такие методы я бы всё же не стал. Они могут быть полезны как вспомогательные признаки режима, оценки отношения сигнал/шум или предварительного преобразования перед поиском аналогов. Но ожидать от них самостоятельного предсказателя направления, вероятно, не стоит.
Интересно, вы сравнивали методы при примерно одинаковом эффективном лаге и степени сглаживания? И параметры фиксировались один раз или перенастраивались последовательно по мере движения по истории?
по схеме с равным риском согласен: веса, обратные оценке риска, — хороший базовый benchmark именно потому, что такая схема почти ничего лишнего не пытается оценивать. Связи между системами она игнорирует, но это иногда меньшее зло, чем строить точную оптимизацию на шумной и нестабильной ковариационной матрице.
Для меня любая более сложная схема распределения капитала должна сначала обыграть такой baseline вне выборки — после учёта оборота, ограничений и издержек. Коммерческие детали вашего варианта раскрывать, конечно, не прошу.
По Фурье и SSA тоже согласен с основной оговоркой: математически разложить можно любой ряд, но красивый спектр или набор собственных компонент ещё не означает, что у рынка существует устойчивый физический базис.
На ценовых рядах выделенные компоненты часто зависят от выбранного окна и меняются вместе с рыночным режимом. Поэтому я рассматриваю подобные методы не как декодер «истинных рыночных циклов», а максимум как преобразование признаков, сжатие пространства или фильтрацию.
Дальше проверка одна: улучшился ли rolling out-of-sample результат после издержек. Если нет, SVD просто красиво переписал тот же шум.
Интересно, у вас всё развалилось уже на устойчивости выделенных компонент или компоненты выглядели убедительно, но не давали прогноза вне выборки?
лично с группой Голяндиной не пересекался, хотя сам метод «Гусеница»-SSA знаком. Насколько понимаю, там идея существенно интереснее обычного поиска корреляции: ряд укладывается в траекторную матрицу, затем через SVD выделяется низкоранговая структура — трендовые и колебательные компоненты, а остаток трактуется как шум. Для нескольких связанных рядов используется MSSA.
Для нашей задачи это может быть интересно как минимум в двух местах: как предварительное выделение структуры перед поиском похожих участков и как способ построения более содержательного признакового пространства вместо сравнения сырых цен.
Но к финансовым рядам я бы применял осторожно. Выбор длины окна и группировки компонент там сам становится набором параметров, а нестационарность рынка быстро превращает красивое разложение прошлого в слабый прогноз будущего. Плюс всё нужно считать строго rolling, иначе очень легко получить утечку через разложение полного ряда.
В любом случае направление интересное. Посмотрю их работы по многомерной SSA подробнее. А что именно вы называете «лобовым подходом» к портфельной задаче — равные лимиты риска, фиксированное число систем или собственная схема отбора?
Вагон Купонов, Код обычно пишется быстрее всего. Основное время уходит на попытки доказать, что полученный результат не является красиво автоматизированным самообманом.
Нет, обычно тоже снизу вверх, а не с комбайна из десятков индикаторов. Сначала проверяю максимально простую гипотезу и базовый сигнал. Затем добавляю по одному признаку или фильтру и смотрю не только прирост итогового Sharpe, но и устойчивость по периодам, соседним значениям параметров, инструментам и издержкам.
По портфельной задаче согласен: портфель умеренно хороших и слабо связанных систем часто лучше одной системы с красивым Sharpe. Мы смотрим не только корреляцию готовых equity, но и общие источники риска: одинаковые инструменты, направления, горизонты удержания, зависимость от волатильности и торговых сессий.
Простая корреляция доходностей может дать ложное ощущение диверсификации. Две системы способны иметь низкую обычную корреляцию, но одновременно разваливаться в одном кризисном режиме. Поэтому интереснее условные корреляции в хвостах, совместные просадки и вклад каждой системы в портфельный риск.
При распределении капитала я скорее за ограниченный risk budgeting с жёсткими лимитами, чем за «чистую» оптимизацию Марковица. На торговых данных ковариационная матрица нестабильна, и оптимизатор охотно превращает небольшую ошибку оценки в огромный вес.
В целом подход тот же: несколько понятных систем, разные источники преимущества, ограничение концентрации и минимум магии в оптимизаторе.
Я бы здесь разделил две вещи: длину выборки для проверки и срок жизни самого преимущества. Проверять стратегию действительно нужно на достаточно длинном участке, иначе легко принять случайность за закономерность. Но зарабатывать она при этом может только локально — пока сохраняется подходящий рыночный режим.
У меня хороший пример был в 2014 году. Весь год отлично работал простейший робот на стандартном MACD 12–26–9 без дополнительных условий. Стратегия была примитивной, но заработала очень хорошо. После этого рынок изменился — и преимущество исчезло. Больше в таком виде робот нормально не работал.
Было ли это случайным совпадением, конкретной фазой волатильности, структурой трендов или сочетанием нескольких факторов — задним числом можно придумать десяток убедительных объяснений. Для практической торговли важнее другое: вовремя заметить, что преимущество появилось, использовать его, пока оно сохраняется, и отключить систему, когда статистика начинает деградировать.
Поэтому я не ищу стратегию, которая обязана работать двадцать лет без изменений. Для меня более реалистичная модель — набор локальных преимуществ с ограниченным сроком жизни и постоянный контроль их состояния.
С первой частью согласен: у любой неэффективности есть ограниченная ёмкость и срок жизни. По мере того как в неё приходит капитал, растут market impact, проскальзывание и конкуренция, а доходность сжимается. Эд Торп прямо писал, что конкуренция снижает доходность, поэтому исследования и разработка должны идти постоянно. При этом обнаруженные им неэффективности исчезали не мгновенно, а постепенно, иногда в течение многих лет.
Но я бы не связывал издержки непосредственно с величиной статистического преимущества. Они зависят прежде всего от ликвидности, оборота, размера позиции, скорости исполнения и того, насколько стратегия стала переполненной. Небольшая система может годами использовать преимущество, которое просто неинтересно крупному капиталу из-за ограниченной ёмкости.
Не соглашусь и с тем, что прибыль возможна только на замедленной реакции рынка либо на прямом моделировании его реакции. Есть структурные потоки, ограничения участников, предоставление ликвидности, относительные перекосы, вынужденные сделки и различия во временных горизонтах. Всё это тоже может создавать локальное преимущество.
Цифра «менее 1%» звучит эффектно, но без методики подсчёта остаётся фигурой речи. Отдельные участники всегда будут лучше информированы, быстрее, дисциплинированнее или просто будут решать другую задачу, чем большинство.
У Торпа есть хороший пример с Мэдоффом: тысячи инвесторов и их консультантов не провели элементарную проверку, потому что каждый предполагал, что её уже сделал кто-то другой. Большое количество умных и богатых участников само по себе не гарантирует ни рациональности, ни эффективности.
Поэтому моя задача не найти вечный «грааль». Задача — обнаружить локальное преимущество, оценить его ёмкость и деградацию, использовать, пока оно существует, и отключить систему, когда статистика перестанет его подтверждать.
С ограниченностью выборки согласен. Любой вывод делается не о «рынке вообще», а о конкретном инструменте, периоде, микроструктуре и доступной истории. Именно поэтому результат нельзя считать вечным свойством рынка. Он требует последовательной проверки, контроля деградации и переоценки по мере поступления новых данных.
Я также не считаю паттерны самостоятельными объектами природы. В алгоритме паттерн — это операционное определение: класс участков, признанных похожими выбранной метрикой при заданном окне и контексте. Изменим метрику или масштаб — изменится и множество паттернов.
То, что потенциальных разбиений бесконечно много, не опровергает подход. Наоборот, именно поэтому нужны ограничения сложности, минимальное число параметров, out-of-sample-проверка и контроль множественного перебора гипотез.
Формально интерес представляет не существование «фигуры», а отличие:
P(будущее∣текущее состояние)
от безусловного распределения движения рынка. Если отличия нет или оно исчезает на новых данных, паттерн признаётся бесполезным.
Формулировка «рынок антиисторичен» мне кажется слишком сильной. Рынок нестационарен: в нём есть локальные повторения, смены режимов и структурные разрывы. Поэтому история не является готовым ответом, но остаётся единственными данными, на которых вообще можно проверять гипотезы.
В целом замечание правильное: я бы действительно уточнил в статье, что речь идёт о конечном историческом диапазоне, а не об универсальном законе рынка.
Таблицы решений — это способ представления набора правил. Они могут заменить лес вложенных if, но не уменьшают количество условий, не устраняют переоптимизацию и не доказывают статистическую состоятельность стратегии.
Можно перенести двести сомнительных правил из кода в красивую таблицу. Мусор от смены формата мусором быть не перестанет. Статья именно об этом: проблема находится не в синтаксисе реализации, а в формализации и проверке гипотезы.
Запрос на реальные результаты справедливый. Отдельная статья с walk-forward-тестированием, чувствительностью параметров и результатами работы системы будет полезна. Но публиковать внутреннюю логику коммерческой разработки целиком ради удовлетворения случайного комментатора мы, разумеется, не будем.
И ещё: назвать корреляцию «школьными задами» несложно. Сложнее корректно применить даже такой простой инструмент к нестационарным данным, не допустить утечку будущего и не обмануть себя бэктестом. Именно на этом обычно и заканчивается квалификация любителей громких формулировок.
Вы спорите с утверждением, которого в статье нет. Я не пытаюсь вычислить точную будущую цену и не считаю рынок детерминированным.
Задача значительно скромнее: оценить условное распределение исходов и проверить, существует ли после издержек статистическое преимущество. Для торговли не требуется знать будущее точно. Достаточно, чтобы вероятность и величина выигрыша в среднем компенсировали вероятность и величину убытка.
«Нельзя вычислить всё» не означает «нельзя оценить ничего».
Этот «простой путь» является базовой нормализацией по амплитуде и длительности, а не каким-то тайным знанием. Более того, корреляция Пирсона уже инвариантна к линейному сдвигу и масштабу цены. Проблема различной скорости формирования паттерна действительно существует, но она решается ресемплингом, Dynamic Time Warping и другими методами выравнивания временных рядов.
Главный вопрос вообще не в том, можно ли найти одинаковые пропорции. Найти их можно сколько угодно. Главный вопрос — дают ли они устойчивое условное распределение будущего на данных вне выборки, после комиссий, спреда и проскальзывания.
Ссылка на Ганна и бесплатные индикаторы MT4 этого не доказывает. Покажите формальные правила, независимый тест и статистику — тогда будет предметный разговор. Без этого «математические пропорции» остаются обычным рисованием по уже сформированному графику.
А аргумент «это написал Ганн сто лет назад» в техническом обсуждении весит примерно столько же, сколько возраст самого аргумента.
Спонсора не ищу. Цель статьи — показать подход, получить содержательную техническую критику и продемонстрировать уровень задач, которыми занимается наша команда.
Мы почти 15 лет работаем на стыке трейдинга и разработки торгового ПО. Поэтому да, публикации одновременно являются частью профессиональной репутации. Если после них приходят интересные проекты от трейдеров, управляющих или компаний — это нормальный результат, а не скрытая цель под видом благотворительности.
Спасибо. Полностью согласен: каждый новый параметр и каждый порог — это налог на устойчивость системы. Добавить условие легко, доказать его реальную пользу намного сложнее.
AIC и BIC полезны, когда есть внятная вероятностная модель и сопоставимые спецификации. В торговых алгоритмах с фильтрами и дискретными правилами я больше доверяю последовательному ablation-тестированию: убираем или добавляем один компонент, затем смотрим walk-forward, стабильность результата по соседним значениям параметров и деградацию на новых данных.
Доходность и риск действительно являются финальной проверкой. Но внутри разработки мы также смотрим оборот, хвостовые убытки, устойчивость по периодам и чувствительность к издержкам.
Судя по вашим комментариям, вы способны обсуждать только готовые сигналы и отдельные сделки. Как только речь заходит о более сложных вещах — алгоритмах, статистике и методиках проверки, вы начинаете демонстрировать удивительное непонимание. Разжёвывать статью до доступного вам уровня я не собираюсь. Поищите контент попроще — вероятно, на другой площадке. Здесь вам явно сложно.
Options Medlеy, Ежедневно выкладывать входы — развлечение для продавцов сигналов; без выборки, статистики и воспроизводимой методики это обычный шум. Я же как раз и написал о методике построения и проверки алгоритма. Есть замечания к математике или реализации — слушаю. Нет — оставьте дворовой фольклор тем, кому он заменяет аргументы.
тему прочитал. В вашем примере уже есть нормальный эмпирический эксперимент, и я бы не пытался заранее назначать абстрактный штраф за каждый дополнительный параметр.
Я бы столкнул лоб в лоб два полностью определённых процесса:
На каждом шаге оба варианта оптимизируются на одном и том же прошлом участке, после чего параметры фиксируются и проверяются на следующем OOS-отрезке. Затем окно сдвигается. В результате нас интересует не общий Sortino за 25 лет, а то, насколько преимущество раздельной настройки регулярно выживает на новых данных.
В качестве грубой, но понятной оценки можно взять:
прирост раздельной настройки на обучении минус её прирост на OOS.
Допустим, отдельные параметры дали относительно общих +1 к Sortino внутри выборки, а на последовательных OOS-участках осталось только +0,1. Значит, примерно 90% красивого преимущества испарилось после выхода на новые данные. Я бы называл это не универсальной мерой переподгонки, а эмпирической оценкой оптимизма конкретной процедуры.
Второй тест, на мой взгляд, ещё интереснее: построить матрицу переноса параметров. Параметры, подобранные на XLI, применить к остальным ETF, параметры XLK — тоже ко всем и так далее.
Если на OOS каждый инструмент устойчиво лучше работает именно со своими параметрами, чем с чужими или общими, значит индивидуальность инструментов реальна. Если красивая диагональ появляется только на обучении, а на новых данных исчезает, то мы просто дали оптимизатору 36 способов подстроиться под шум.
При этом 12 ETF нельзя считать двенадцатью полностью независимыми подтверждениями: они связаны общим рынком. Поэтому сравнивать лучше не только результаты отдельных систем, но и временной ряд всего портфеля, а доверительные интервалы строить блоками по датам.
Я бы ещё добавил промежуточный вариант: не один набор параметров на всех и не отдельный набор на каждый инструмент, а несколько групп похожих ETF. Возможно, реальный максимум устойчивости окажется именно посередине.
В общем, здесь согласен с вами: считать количество параметров недостаточно. Гораздо полезнее посмотреть, сколько преимущества раздельной настройки переживает перенос во времени и на соседние инструменты. Такой результат уже можно пощупать руками, а не только обсуждать на уровне степеней свободы.
хороший пример того, почему количество настраиваемых чисел само по себе ещё не определяет сложность системы.
В первом варианте есть четыре явно подбираемых параметра: два периода индикаторов и два порога. Во втором числовой параметр действительно один, но взаимодействие двух состояний индикатора с пятью днями недели делит выборку уже на десять режимов — если каждая «краска» используется как отдельное торговое состояние.
Где больше подгонки, по числу параметров или цветов заранее не определить. Важен весь класс проверенных гипотез:
— были ли индикаторы выбраны заранее или отобраны из десятков вариантов;
— был ли день недели включён до теста или после просмотра результатов;
— перебирались ли отдельные дни и их комбинации;
— назначались ли разные действия каждой из десяти ячеек;
— сколько независимых сделок осталось внутри каждого режима.
Например, у пяти дней недели всего один категориальный признак, но если разрешить выбирать любые комбинации дней, получаем уже 32 возможные маски включения и исключения — ещё до подбора параметра индикатора. Формально числовой параметр один, а фактический перебор уже немаленький.
Поэтому я бы говорил не просто о количестве параметров, а об эффективной сложности системы: сколько разных правил она способна породить и сколько вариантов фактически было просмотрено при выборе финального.
Проверять при этом нужно весь процесс целиком. Выбор индикатора, порога, дней недели и правил взаимодействия выполняется только на обучающем окне, после чего всё фиксируется и проверяется на следующем OOS-участке. Затем окна сдвигаются вперёд. Если день недели или схема раскраски выбирались с учётом результатов тестового периода, это такая же подгонка, как и оптимизация обычного коэффициента.
Поэтому во втором варианте подгонки вполне может оказаться больше, несмотря на один формально настраиваемый параметр. Само число коэффициентов — слишком грубая оценка сложности.
это показательный результат. Фильтрация и прогнозирование — всё-таки разные задачи. Баттерворт, преобразование Гильберта, вейвлеты или SSA могут красиво разложить либо сгладить уже наблюдаемый ряд, но сами по себе не создают информацию о следующем движении цены.
В реальном времени за сглаживание обычно приходится платить задержкой: уменьшаем лаг — возвращаем шум. Адаптивные AMA, KAMA и подобные методы дополнительно оценивают текущее состояние ряда, то есть добавляют параметры и ещё один источник нестабильности.
Поэтому EMA оказывается сильным базовым вариантом: один понятный параметр, прозрачный лаг и минимум возможностей для переоптимизации.
Сравнивать более сложные фильтры с EMA, на мой взгляд, нужно при сопоставимом эффективном лаге и степени сглаживания. Параметры каждого метода подбираются только на прошлом участке, затем фиксируются и проверяются на следующем, ранее не использованном отрезке. После этого обучающее и тестовое окна сдвигаются вперёд, а итог строится только из последовательных тестовых участков. То есть речь идёт о walk-forward OOS-проверке, а не об одном удачно выбранном тестовом периоде.
Если адаптивный метод предполагает периодическую перенастройку, в тесте нужно воспроизводить ровно тот же график перенастройки, который был бы доступен в реальной торговле. Иначе будущая информация незаметно попадёт в параметры.
Если после такой проверки и учёта издержек сложный фильтр не обыгрывает EMA, значит он просто более дорогим способом сгладил тот же ряд.
Полностью выбрасывать такие методы я бы всё же не стал. Они могут быть полезны как вспомогательные признаки режима, оценки отношения сигнал/шум или предварительного преобразования перед поиском аналогов. Но ожидать от них самостоятельного предсказателя направления, вероятно, не стоит.
Интересно, вы сравнивали методы при примерно одинаковом эффективном лаге и степени сглаживания? И параметры фиксировались один раз или перенастраивались последовательно по мере движения по истории?
по схеме с равным риском согласен: веса, обратные оценке риска, — хороший базовый benchmark именно потому, что такая схема почти ничего лишнего не пытается оценивать. Связи между системами она игнорирует, но это иногда меньшее зло, чем строить точную оптимизацию на шумной и нестабильной ковариационной матрице.
Для меня любая более сложная схема распределения капитала должна сначала обыграть такой baseline вне выборки — после учёта оборота, ограничений и издержек. Коммерческие детали вашего варианта раскрывать, конечно, не прошу.
По Фурье и SSA тоже согласен с основной оговоркой: математически разложить можно любой ряд, но красивый спектр или набор собственных компонент ещё не означает, что у рынка существует устойчивый физический базис.
На ценовых рядах выделенные компоненты часто зависят от выбранного окна и меняются вместе с рыночным режимом. Поэтому я рассматриваю подобные методы не как декодер «истинных рыночных циклов», а максимум как преобразование признаков, сжатие пространства или фильтрацию.
Дальше проверка одна: улучшился ли rolling out-of-sample результат после издержек. Если нет, SVD просто красиво переписал тот же шум.
Интересно, у вас всё развалилось уже на устойчивости выделенных компонент или компоненты выглядели убедительно, но не давали прогноза вне выборки?
лично с группой Голяндиной не пересекался, хотя сам метод «Гусеница»-SSA знаком. Насколько понимаю, там идея существенно интереснее обычного поиска корреляции: ряд укладывается в траекторную матрицу, затем через SVD выделяется низкоранговая структура — трендовые и колебательные компоненты, а остаток трактуется как шум. Для нескольких связанных рядов используется MSSA.
Для нашей задачи это может быть интересно как минимум в двух местах: как предварительное выделение структуры перед поиском похожих участков и как способ построения более содержательного признакового пространства вместо сравнения сырых цен.
Но к финансовым рядам я бы применял осторожно. Выбор длины окна и группировки компонент там сам становится набором параметров, а нестационарность рынка быстро превращает красивое разложение прошлого в слабый прогноз будущего. Плюс всё нужно считать строго rolling, иначе очень легко получить утечку через разложение полного ряда.
В любом случае направление интересное. Посмотрю их работы по многомерной SSA подробнее. А что именно вы называете «лобовым подходом» к портфельной задаче — равные лимиты риска, фиксированное число систем или собственная схема отбора?
Нет, обычно тоже снизу вверх, а не с комбайна из десятков индикаторов. Сначала проверяю максимально простую гипотезу и базовый сигнал. Затем добавляю по одному признаку или фильтру и смотрю не только прирост итогового Sharpe, но и устойчивость по периодам, соседним значениям параметров, инструментам и издержкам.
По портфельной задаче согласен: портфель умеренно хороших и слабо связанных систем часто лучше одной системы с красивым Sharpe. Мы смотрим не только корреляцию готовых equity, но и общие источники риска: одинаковые инструменты, направления, горизонты удержания, зависимость от волатильности и торговых сессий.
Простая корреляция доходностей может дать ложное ощущение диверсификации. Две системы способны иметь низкую обычную корреляцию, но одновременно разваливаться в одном кризисном режиме. Поэтому интереснее условные корреляции в хвостах, совместные просадки и вклад каждой системы в портфельный риск.
При распределении капитала я скорее за ограниченный risk budgeting с жёсткими лимитами, чем за «чистую» оптимизацию Марковица. На торговых данных ковариационная матрица нестабильна, и оптимизатор охотно превращает небольшую ошибку оценки в огромный вес.
В целом подход тот же: несколько понятных систем, разные источники преимущества, ограничение концентрации и минимум магии в оптимизаторе.
Я бы здесь разделил две вещи: длину выборки для проверки и срок жизни самого преимущества. Проверять стратегию действительно нужно на достаточно длинном участке, иначе легко принять случайность за закономерность. Но зарабатывать она при этом может только локально — пока сохраняется подходящий рыночный режим.
У меня хороший пример был в 2014 году. Весь год отлично работал простейший робот на стандартном MACD 12–26–9 без дополнительных условий. Стратегия была примитивной, но заработала очень хорошо. После этого рынок изменился — и преимущество исчезло. Больше в таком виде робот нормально не работал.
Было ли это случайным совпадением, конкретной фазой волатильности, структурой трендов или сочетанием нескольких факторов — задним числом можно придумать десяток убедительных объяснений. Для практической торговли важнее другое: вовремя заметить, что преимущество появилось, использовать его, пока оно сохраняется, и отключить систему, когда статистика начинает деградировать.
Поэтому я не ищу стратегию, которая обязана работать двадцать лет без изменений. Для меня более реалистичная модель — набор локальных преимуществ с ограниченным сроком жизни и постоянный контроль их состояния.
С первой частью согласен: у любой неэффективности есть ограниченная ёмкость и срок жизни. По мере того как в неё приходит капитал, растут market impact, проскальзывание и конкуренция, а доходность сжимается. Эд Торп прямо писал, что конкуренция снижает доходность, поэтому исследования и разработка должны идти постоянно. При этом обнаруженные им неэффективности исчезали не мгновенно, а постепенно, иногда в течение многих лет.
Но я бы не связывал издержки непосредственно с величиной статистического преимущества. Они зависят прежде всего от ликвидности, оборота, размера позиции, скорости исполнения и того, насколько стратегия стала переполненной. Небольшая система может годами использовать преимущество, которое просто неинтересно крупному капиталу из-за ограниченной ёмкости.
Не соглашусь и с тем, что прибыль возможна только на замедленной реакции рынка либо на прямом моделировании его реакции. Есть структурные потоки, ограничения участников, предоставление ликвидности, относительные перекосы, вынужденные сделки и различия во временных горизонтах. Всё это тоже может создавать локальное преимущество.
Цифра «менее 1%» звучит эффектно, но без методики подсчёта остаётся фигурой речи. Отдельные участники всегда будут лучше информированы, быстрее, дисциплинированнее или просто будут решать другую задачу, чем большинство.
У Торпа есть хороший пример с Мэдоффом: тысячи инвесторов и их консультантов не провели элементарную проверку, потому что каждый предполагал, что её уже сделал кто-то другой. Большое количество умных и богатых участников само по себе не гарантирует ни рациональности, ни эффективности.
Поэтому моя задача не найти вечный «грааль». Задача — обнаружить локальное преимущество, оценить его ёмкость и деградацию, использовать, пока оно существует, и отключить систему, когда статистика перестанет его подтверждать.
С ограниченностью выборки согласен. Любой вывод делается не о «рынке вообще», а о конкретном инструменте, периоде, микроструктуре и доступной истории. Именно поэтому результат нельзя считать вечным свойством рынка. Он требует последовательной проверки, контроля деградации и переоценки по мере поступления новых данных.
Я также не считаю паттерны самостоятельными объектами природы. В алгоритме паттерн — это операционное определение: класс участков, признанных похожими выбранной метрикой при заданном окне и контексте. Изменим метрику или масштаб — изменится и множество паттернов.
То, что потенциальных разбиений бесконечно много, не опровергает подход. Наоборот, именно поэтому нужны ограничения сложности, минимальное число параметров, out-of-sample-проверка и контроль множественного перебора гипотез.
Формально интерес представляет не существование «фигуры», а отличие:
P(будущее∣текущее состояние)от безусловного распределения движения рынка. Если отличия нет или оно исчезает на новых данных, паттерн признаётся бесполезным.
Формулировка «рынок антиисторичен» мне кажется слишком сильной. Рынок нестационарен: в нём есть локальные повторения, смены режимов и структурные разрывы. Поэтому история не является готовым ответом, но остаётся единственными данными, на которых вообще можно проверять гипотезы.
В целом замечание правильное: я бы действительно уточнил в статье, что речь идёт о конечном историческом диапазоне, а не об универсальном законе рынка.
Таблицы решений — это способ представления набора правил. Они могут заменить лес вложенных
if, но не уменьшают количество условий, не устраняют переоптимизацию и не доказывают статистическую состоятельность стратегии.Можно перенести двести сомнительных правил из кода в красивую таблицу. Мусор от смены формата мусором быть не перестанет. Статья именно об этом: проблема находится не в синтаксисе реализации, а в формализации и проверке гипотезы.
Запрос на реальные результаты справедливый. Отдельная статья с walk-forward-тестированием, чувствительностью параметров и результатами работы системы будет полезна. Но публиковать внутреннюю логику коммерческой разработки целиком ради удовлетворения случайного комментатора мы, разумеется, не будем.
И ещё: назвать корреляцию «школьными задами» несложно. Сложнее корректно применить даже такой простой инструмент к нестационарным данным, не допустить утечку будущего и не обмануть себя бэктестом. Именно на этом обычно и заканчивается квалификация любителей громких формулировок.
Вы спорите с утверждением, которого в статье нет. Я не пытаюсь вычислить точную будущую цену и не считаю рынок детерминированным.
Задача значительно скромнее: оценить условное распределение исходов и проверить, существует ли после издержек статистическое преимущество. Для торговли не требуется знать будущее точно. Достаточно, чтобы вероятность и величина выигрыша в среднем компенсировали вероятность и величину убытка.
«Нельзя вычислить всё» не означает «нельзя оценить ничего».
Этот «простой путь» является базовой нормализацией по амплитуде и длительности, а не каким-то тайным знанием. Более того, корреляция Пирсона уже инвариантна к линейному сдвигу и масштабу цены. Проблема различной скорости формирования паттерна действительно существует, но она решается ресемплингом, Dynamic Time Warping и другими методами выравнивания временных рядов.
Главный вопрос вообще не в том, можно ли найти одинаковые пропорции. Найти их можно сколько угодно. Главный вопрос — дают ли они устойчивое условное распределение будущего на данных вне выборки, после комиссий, спреда и проскальзывания.
Ссылка на Ганна и бесплатные индикаторы MT4 этого не доказывает. Покажите формальные правила, независимый тест и статистику — тогда будет предметный разговор. Без этого «математические пропорции» остаются обычным рисованием по уже сформированному графику.
А аргумент «это написал Ганн сто лет назад» в техническом обсуждении весит примерно столько же, сколько возраст самого аргумента.
Спонсора не ищу. Цель статьи — показать подход, получить содержательную техническую критику и продемонстрировать уровень задач, которыми занимается наша команда.
Мы почти 15 лет работаем на стыке трейдинга и разработки торгового ПО. Поэтому да, публикации одновременно являются частью профессиональной репутации. Если после них приходят интересные проекты от трейдеров, управляющих или компаний — это нормальный результат, а не скрытая цель под видом благотворительности.
Спасибо. Полностью согласен: каждый новый параметр и каждый порог — это налог на устойчивость системы. Добавить условие легко, доказать его реальную пользу намного сложнее.
AIC и BIC полезны, когда есть внятная вероятностная модель и сопоставимые спецификации. В торговых алгоритмах с фильтрами и дискретными правилами я больше доверяю последовательному ablation-тестированию: убираем или добавляем один компонент, затем смотрим walk-forward, стабильность результата по соседним значениям параметров и деградацию на новых данных.
Доходность и риск действительно являются финальной проверкой. Но внутри разработки мы также смотрим оборот, хвостовые убытки, устойчивость по периодам и чувствительность к издержкам.
Судя по вашим комментариям, вы способны обсуждать только готовые сигналы и отдельные сделки. Как только речь заходит о более сложных вещах — алгоритмах, статистике и методиках проверки, вы начинаете демонстрировать удивительное непонимание. Разжёвывать статью до доступного вам уровня я не собираюсь. Поищите контент попроще — вероятно, на другой площадке. Здесь вам явно сложно.