Блог им. fxsaber

Уменьшаем выборку - увеличиваем стат. значимость?

    • 28 января 2022, 01:22
    • |
    • fxsaber
  • Еще

Торговый робот должен (условно) удовлетворять следующим условиям:

 

  • Совершать достаточно много сделок на интервале настройки (оптимизации).
  • Показывать столь же стабильный результат вне интервала оптимизации.

 

Безусловно, эти требования ничего не гарантируют, хоть и несколько увеличивают доверие к потенциальным возможностям робота.

 

Критерий оптимизации.

 

По поводу важности количества сделок можно наблюдать единодушие. Вроде, чем больше, тем лучше (одна из причин, почему алготрейдинг и скальпинг ходят рядом).

Поэтому при настройке ТС стараются задавать либо абсолютное минимальное количество сделок, либо удельное (на единицу времени). Это позволяет сразу выкидывать из рассмотрения пусть и неплохие на неискушенный взгляд, но менее стат. значимые результаты. Заодно уводя эвристические алгоритмы оптимизации в нужном направлении.

 

Анализ сделок.

Казалось бы, много сделок — неплохо. Проходит OOS — хорошо. Запускать на реал? Большинство так и поступает.

 

Однако, можно наделить сделки некими свойствами (числовые значения) и посмотреть, сколь близки они друг к другу. Если окажется, что несущественная часть сделок сильно отличается по свойствам от остальных, то на такие сделки налагается ярлык неблагонадежности. И несмотря на их хороший положительный вклад в общий результат, ищется фильтр для их отсева.

 

Свойства.

Что же может служить свойством сделки? Это могут быть любые числовые показатели на момент открытия сделки. Любые — все, что можете придумать и посчитать. Да, это странно звучит, но при наличии только сделок другой подход исключен. Может быть заранее подготовленный набор таких свойств для создания на их основе проверки гипотезы стат. значимости.

 

Правда, авторам роботов, как правило, значительно легче, если робот основывается не на машинному обучении. Т.е. тогда, когда робот не представляет из себя BlackBox.

 

Индикаторы.

Сигнал на совершение сделки — это некая алгоритмическая комбинация значений индикаторов. Индикаторы — более общее понятие, чем нарисованные на графике линии. Главное, что автор торгового алгоритма в курсе, какие индикаторы он использует и какова логика их комбинирования для конечного решения.

 

Поэтому свойствами сделок могут выступать значения (с или без нормализации) самих этих индикаторов.

 

Пространство.

Каждая сделка обладает набором свойств, что геометрически представимо в виде точки многомерного пространства. Представьте сферу минимального радиуса, которая включает в себя все такие точки. Так вот сделки-изгои — это такие точки, при выбросе которых радиус такой сферы значительно уменьшается.

 

Пример.

500 сделок. Общая картина великолепна. Зададим каждой сделке свойство в виде значения средней — EMA. Получаем, что для 90% сделок EMA находится в интервале [5; 7], а для 10% — [12; 20]. Общая сфера [5; 20] — диаметр 15. Но если выкинуть 10%, то сфера сужается до [5; 7] — диаметр 2.

 

Это существенное изменение размера сферы, поэтому пытаемся избавляться от подобных сделок: если на момент принятия решения о совершении сделки EMA выходит за пределы узкой сферы, не совершаем сделку. Т.е. создаем фильтр.

 

Черный лебедь.

Именно отсутствие учета таких залетных сделок заметно увеличивает вероятность поймать существенные убытки в реальной торговле. Заметьте, что они могут показывать очень хорошие результаты на бэктестах, проходить OOS, но от этого их рисковая составляющая не уменьшается.

 

Кирпичи ТС.

Может оказаться, что сделки можно разделить на несколько узких сфер — задача классификации. В таком случае ТС представляется, как случайно получившийся портфель из более простых ТС. И каждый такой кирпич рассматривается далее отдельно.

Сделки-отщепенцы бэктестов — это не кирпичи ТС.

 

Оптимизация.

В критерий оптимизации желательно добавлять фильтр подобной стат. значимости сделок, который выдавал бы результат только на основе сделок после фильтра. Т.е. фильтрация встраивается в сам критерий, а не задается отдельно, как часть ТС.

 

Велосипед.

Безусловно, тема уменьшения выборки ради повышения стат. значимости должна быть давно изъезжена в статьях соответствующей тематики. Поэтому дефицита в алгоритмах отбора «близких по духу» точек в пространстве не должно наблюдаться.

★6
56 комментариев
Каким образом задать «бенчмарк» для сделок?
avatar
ICWiener, проводить кластерный анализ.


Должна получиться подобная картинка из сделок. Здесь видны сделки-изгои и кирпичи ТС.

Если начать анализировать сделки портфеля из разношерстных ТС, то при должной сноровке должны быть видны кластеры каждой из входящих ТС.

Но пост о том, что желательно выкидывать сделки-отщепенцы.
avatar
fxsaber, А это гипотеза пока или реально опыт показывает, что робастность это повышает?
avatar
Replikant_mih, гипотеза. Но основана на анализе черных лебедей, которых поймал во второй половине января, когда пытался поднять потолок ликвидности ТС. Было много сделок в бэктестах и отличные результаты на OOS. Рецепт оказался неполноценным.
avatar
fxsaber, Вообще OOS норм тема, если её правильно использовать. Неправильно использовать OOS это использовать в той же воронке что и IS.

А-ля н вход подали 1000 прогонов IS, выбрали 10% лучших, их прогнали на OOS, выбрали 10% лучших. В таком варианте IS+OOS будет не сильно лучше IS only.
avatar
Replikant_mih, согласен. Поэтому жестко обрываю эвристику и смотрю только несколько лучших получившихся проходов на OOS с обеих сторон от IS.
avatar
fxsaber, так по каким метрикам формируются эти кластеры?
avatar
ICWiener, не понял вопроса. Если про свойства сделок, то написал в посте — любые.
avatar
fxsaber, «Однако, можно наделить сделки некими свойствами (числовые значения) и посмотреть, сколь близки они друг к другу. Если окажется, что несущественная часть сделок сильно отличается по свойствам от остальных, то на такие сделки налагается ярлык неблагонадежности.»

Ну какие? PF ну так понятно, что для части сделок он будет отрицательным и хорошо бы их убрать. Сделки с большой просадкой, их тоже хотелось бы порезать, но когда их начнем фильтровать, то затронем и благонадежный кластер.

Имхо, интересным вариантом видится развитие сделки во времени. У нас есть некая ветвь, где критичные отклонения нам надо подрезать на ходу.
avatar
ICWiener, у сделки нет PF. Развитие сделки (белых и черных лебедей выкидывал) не подходит для алгоритма пропуска таких сделок в реальной торговле.

Поэтому желательно брать что-то, что было на момент открытия сделки. Да, это с огромной вероятностью заденет хорошие сделки, ошибочно указав на них. Но это research, а не готовый рецепт.
avatar
fxsaber, так ты лебедей фильтруешь, а надо их стопить.

Что касается research, то занимаюсь сейчас тем же самым. Идея: сделать бенчмарк сделки, остальные трейды оценивать относительно него. Если какие то сделки ушли ниже допуска, то их стопарить.


Типа ушла ветка, с течением времени, что ж надо ее остановить.
avatar
ICWiener, лебедей фильтровал для поиска закономерностей, не сетов. Да и было это когда...

«Алгоритмизированный SL» — интересная тема. Не занимался.
avatar
ICWiener, Типа в норме должна цена прирастать в сторону позы с таким-то темпом и такой-то дисперсией или типа того?
avatar
ICWiener, MFE/MAE вполне можно использовать в качестве свойств сделок. Тогда диаметр сферы позволит выработать не фильтр сделки, а условие ее принудительного закрытия — выход за сферу.
avatar
fxsaber, в яблочко, именно это сейчас и ресерчу
avatar
ICWiener, это не ровно то, что реализовано по ссылке?
avatar
fxsaber, а я еще не читал. Посмотрю, спасибо.
avatar
fxsaber, посмотрел — нет, у тебя не совсем такая идея. Ты фактически смотришь, что выдаст система, если вкрутить ей тейки и стопы в зависимости от  MFE/MAE и это просто подгонка. 

Моя же идея другая, что отношение MFE/MAE мы можем задать в качестве бенчмарка во времени для данного ряда сделок. И если сделка с течением времени выходит за определенную функцию (см. график — красная линия) мы такую сделку стопим.



avatar
ICWiener, в моем случае разница только в том, что функция (красная линия на графике) — горизонталь.

Привязка ко времени — это нужно запоминать ряд для каждой сделки. Дороговато по ресурсам, если оптить.
avatar
fxsaber, у тебя просто подход такой — все оптимизировать, не уверен, что это всегда правильно. Ну, а для экономии ресурсов я как раз предлагаю использовать функцию, которой резать сделки — например коренную с коэффициентом.
avatar
ICWiener, Ваще да, «любые» звучит вроде вполне конкретно)), но не понятно, что имеется в виду — как минимум речь о результатах сделки, или её предпосылках — типа да, например, соотношение тог сколько сделка максимум ходила в плюс к максимум ходила в минус за время жизни — как характеристика результата. Либо же, например, входя на пробой highest за n свечей мы вошли потому что пробился 5 свечной хай или 155 свечной. Тоже можно рассматривать как характеристика сделки. И под определение «любые» тоже вроде подпадает)).
avatar
Любопытная мысль, что-то в этом есть. Надо порисечить.

Кстати, тут ML упоминалось как минус в данном контексте (если на нем сама стратегия), но вот чтобы искать расстояния — по факту задача кластеризации и поиск аутлаеров — как раз для ML задача.
avatar
Replikant_mih, ML все же дороговато, т.к. алгоритм кластеризации должен быть быстрым — встраивается в критерий оптимизации.
avatar

fxsaber, Типа прогнали набор значений — выкинули аутлаеры — оценили?

На счет скорости не помню, вроде есть модели, которые при новой точки с нуля кластеризуют, а есть которые при новой точке её просто мапят на систему координат.

 

Вообще как выкидывание отличающихся можно рассматривать как вариант улучшить то что есть, можно так же, вероятно, рассматривать некоторую меру наличия и влияния аутлаеров как меру робастности. В общем ещё одна метрик оцени стратегии (ну как PF, RF и прочие).

avatar
Replikant_mih, как метрику робастности не вижу, а вот как метрику поиска закономерностей — вполне.

Уже готовый сет не очень интересно исследовать, хоть и полезно. Больше интересует встраивание в критерий оптимизации, тогда более красивые (высокий PF и т.д.) будут проигрывать менее красивым. Но у вторых изгоев будет меньше.
avatar
fxsaber, Ясн, я просто оптимизацию в привычном понимании не использую поэтому для этой задачи мне не интересно).
avatar
Replikant_mih, у меня основная задача оптимизации — поиск закономерностей. Поиск сетов — вторичная задача.
avatar
fxsaber, smart-lab.ru/blog/730827.php — это в этом посте и есть про поиск закономерностей? Там чуть сложно понять, о чем речь. Но, видимо, в том числе про выявление изюм среди разных стратегий, в том числе который находятся где-то в интернете в бесплатном доступе или типа того.
avatar
Replikant_mih, это один из инсрументариев поиска закономерностей и проверки ТС.

Может применяться на любых продающихся роботах (в Тестере работают бесплатно), но сам использую только на своих.
avatar
fxsaber, А, поиск закономерностей на основе параметризованной стратегии — речь о описке закономерностей взаимодействия параметров стратегии, влияния параметров на метрики качества стратегии — об этом речь?
avatar
Replikant_mih, это хорошее, но очень дорогое исследование. Сделал просто удобную числодробилку с упором на очень быстрое нахождение мозгом закономерностей в визуальных образах.
avatar
не будет ли проблемой не ясность по какому принципу совершались сделки?
либо в базисе этого принципа ошибка?
Олайвир Стокс, как минимум, не получится использовать индикаторы из ТС, т.к. о них ничего неизвестно. Придется придумывать свои, пусть и универсальные свойства сделок. Тогда исследовать можно и BlackBox-ТС.
avatar
fxsaber, 
кажись понял ответ 
имею в виду, вот выбрал индикаторы всё такое, а если в этом выборе ошибка, по какому принципу всё это выбирается?
Олайвир Стокс, нет готового рецепта. Поделился идеей, которую не встречал ранее. Надо исследовать.
avatar
fxsaber, 
спасибо, и за тему
здорово бы как нить упоминуть как проще найти инструменты для анализа данных, как задавать принцип отсева для сделок, как данные в этот анализ заливать — связанное с использованием этих инструментов, либо ссылку названий на них, документация должна же быть 

открытый код на эти инструменты?

Олайвир Стокс, записей в блоге прилично. Наверное, что-то пересекалось по интересующим темам. Во многих случаях исходники открыты.
avatar
fxsaber, 
понял, сразу не проверил, посмотрю
Надо учитывать, что «кирпичи» влияют друг на друга, и отдельно оптимизировать их не получится.
avatar
svgr, Речь о взаимодействии параметров стратегии между собой? Как это учитываете?
avatar
Replikant_mih, речь о подходе
Может оказаться, что сделки можно разделить на несколько узких сфер — задача классификации. В таком случае ТС представляется, как случайно получившийся портфель из более простых ТС. И каждый такой кирпич рассматривается далее отдельно.

Классификация есть, но нет разбиения на простые ТС. Их результаты зависят от общих параметров всей ТС.

Также, думаю, что в общем случае неверно выбрасывать:
Однако, можно наделить сделки некими свойствами (числовые значения) и посмотреть, сколь близки они друг к другу. Если окажется, что несущественная часть сделок сильно отличается по свойствам от остальных, то на такие сделки налагается ярлык неблагонадежности.

Представим вход по ЕМА и удержание до трейлинг-стопа, который ниже ЕМА на сколько-то. Часто он достигается быстро (например, намеренными шпильками) и сделки получаются кучные по исходам. Но иногда шпилек не делают, и трейд получается длинным и большим по результату. Выбрасывать его не стоит.
avatar
svgr, в вашем примере с трейлингом выброса длинного трейда не произойдет, т.к. свойства сделки формируются до ее открытия.
avatar
fxsaber, хорошо, не так понял, значит.
avatar
fxsaber, интересная тема, в том числе и в умных общедоступных книжках, например, у пардо, есть мысли по этому поводу, как и само обсуждение тоже интересное. Вот здесь момент не понял, почему считаете что данную сделку не надо выбросить если она будет формировать бОльшую часть результата и по сути будет являться не типичной среди всех остальных результатов. Буду признателен за раскрытие понятия «свойства сделки формируются до ее открытия» применительно к текущему контексту с длинной сделкой отстопившейся по EMA минус какое-то значение
Александр Ганов, хочется иметь фильтр, который в реал-тайме позволит ответить на вопрос, открывать сделку по сигналу или нет. Поэтому вычисление значения фильтра должно быть до открытия сделки.

Выброс нетипичных результатов сделок и их наборов рассматривал в блоге в нескольких записях. Лучше там смотреть на эту тему. Здесь о другом.
avatar
fxsaber, все понял. благодарю. ушел в блог
Какой странный подход к снаряду. Рынок ничего не знает о параметрах ВАШЕЙ отдельной сделки. Обычно сделкой называют комбинацию цена входа плюс цена выхода с фиксированными таймстемпами. Это похоже на попытку измерить диаметр атома водорода имея на руках только школьный транспортир без градуировки
avatar
wrmngr, речь не о рынке, а о математическом способе избавиться от случайных профитных попутчиков в виде сделок, отличающихся сильно по свойствам от большинства.
avatar
fxsaber, как это не о рынке? а где вы сделки делаете? на генераторе случайных чисел?
avatar
wrmngr, для математической идентификации сделок-изгоев не важна природа исходных данных. Тема касается алгоритмов, а не трактовок понимания, чем является рынок, а чем он не является.
avatar
так если страта прошла стандартный IS/OOS хотяб 70/30, то дальше ее можно попробовать нагнуть через WFO (я по крайней мере так делаю для себя) если она и его проходит более менее успешно, то уже уверенность куда больше может быть в стратегии
Михаил Табаков, WFO проходит. OOS_left/IS/OOS_right для 40/40/20 — аналогично. Речь в посте о намеренном отказе от совершения некоторых сделок, которые на бэктестах дают хороший профит, улучшая общую картину прибыльности ТС.
avatar
Если комиссия положительна (FX), то оптимальный торговый алгоритм не должен стремиться совершить максимальное количество сделок. Обратное верно только если у Вас средний профит со сделки (вдруг) значительно превышает комиссию (на пару порядков), но тогда Вы уже должны быть миллиардером )))

Если комиссия отрицательна (рибейт на крипте) — тогда да, оптимальный торговый алго должен колбасить, как не в себя...

С уважением
avatar
Мальчик Buybuy, не понял, почему решили написать этот комментарий к данному посту.
avatar
В моих исследованиях оптимум алго представляет из себя узкий шип. Ну т.е. шаг влево или шаг вправо — и вместо профита получается лосс. Так что

1. Для его нахождения требуется что-то вроде модели рынка и весьма сложная аналитика
2. Подобрать оптимум методом тыка — вообще без шанса...

С уважением
avatar
Мальчик Buybuy, торгую без модели. Нормально.
avatar

теги блога fxsaber

....все тэги



UPDONW
Новый дизайн