Комментарии пользователя oreshkinalexey
тему прочитал. В вашем примере уже есть нормальный эмпирический эксперимент, и я бы не пытался заранее назначать абстрактный штраф за каждый дополнительный параметр.
Я бы столкнул лоб в лоб два полностью определённых процесса:
На каждом шаге оба варианта оптимизируются на одном и том же прошлом участке, после чего параметры фиксируются и проверяются на следующем 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, стабильность результата по соседним значениям параметров и деградацию на новых данных.
Доходность и риск действительно являются финальной проверкой. Но внутри разработки мы также смотрим оборот, хвостовые убытки, устойчивость по периодам и чувствительность к издержкам.
Судя по вашим комментариям, вы способны обсуждать только готовые сигналы и отдельные сделки. Как только речь заходит о более сложных вещах — алгоритмах, статистике и методиках проверки, вы начинаете демонстрировать удивительное непонимание. Разжёвывать статью до доступного вам уровня я не собираюсь. Поищите контент попроще — вероятно, на другой площадке. Здесь вам явно сложно.