Блог им. Replikant_mih

Алго. О том, как важно задавать правильные вопросы и находить адекватные ответы).

Представим процесс создания и верификации стратегии как исследование, и сведём этот процесс к следующей упрощенной модели: цель исследования это вопрос, само исследование — процесс ответа на вопрос, результат исследования – ответ на вопрос.

 

Так вот часто, эти три компонента в модели А. Не согласованы, Б. Процесс согласования не проходит через сознательный уровень. Поясню:

(А) – Ну тут обычно всё просто: если ты задаёшь один вопрос, а отвечаешь как будто на другой вопрос, то и ответ в итоге не будет отвечать на поставленный вопрос. Или ближе к алго: если ты хочешь оценить робастность стратегии, а в процессе исследования делаешь что-то несусветное, твои выводы не скажут ничего про робастность. Например, я оцениваю робастность стратегии и хочу получить наилучшие параметры для торговли (вопрос), делаю оптимизацию на истории и отбираю ТОП1 прогонов, беру от него набор значений параметров (ответ).

(Б) – Многие тупо не отдают себе отчет что они делают, почему именно так, как процесс ответа на вопрос согласуется с вопросом, как ответ соответствует вопросу и т.д. Ну т.е. многие исследуют именно так, а не иначе потому «а вот я слышал, что это работает», «я пробовал, вроде сработало» или ещё почему-то. Не скажу, что более глубокий уровень осознанности в этом деле прям обязательный, если у тебя что-то работает (твой подход) – ну и отлично.


Но я люблю осознанность:

— На какой конкретно вопрос я хочу ответить в итоге? (Робастна ли стратегия-идея? Выбрать лучшие параметры? Лучшие с какой точки зрения? С точки зрения иметь шанс уцепиться за лучший результат из возможных или же максимизировать вероятность получить хороший стабильный?). А правильный ли я вопрос задаю? Почему именно такие приоритеты я поставил?

— А соответствует ли моё исследование задаваемому вопросу? Почему конкретно я решил, что такой алгоритм анализа позволяет ответить на мой вопрос? Какой алгоритм мог бы лучше ответить?

— Ответ является полным и соответствующим постановке вопроса? Или, может, он «уплыл» и живёт своей жизнью? Может быть, ты спрашивал «А или Б», а ответ получился «да».

 

 

Ну и для иллюстрации несколько примеров того, для какого «вопроса» какой процесс на мой взгляд адекватен:

 

  1. Взять стратегию захардкодить параметры и прогнать один раз. Адекватно для ответа на вопрос: а какой результат я получу в будущем если в будущем все графики повторятся один в один как в прошлом. На практике для реальной торговли такой вопрос бесполезен.
  2. Взять стратегию, прогнать на всей истории с разными наборами значений параметров, выбрать лучший прогон, взять от него значения параметров. Адекватно для ответа на вопрос: какие наилучшие выбросные значения были на фактической истории. На практике для реальной торговли такой вопрос бесполезен.
  3. Взять любой подход (например, какой-то из ранее описанных (например (2)) и пройтись скользящим окном по истории из прошлого в будущее делая на левой части окна то, что что предполагает исследование, а в правой части окна смотреть, какие в торговле это результаты даёт. В данном случае проходимся окном и смотрим, если мы отбираем лучший прогон по какой-то метрике и его на OSS в работу пускает и делаем это много раз, какие результаты на суммарной OOS это даёт. Адекватно для ответа на вопрос: а работает ли такой подход к созданию стратегии (в т.ч. к определению значений параметров). Ну вернее, конечно, а работал ли этот подход к созданию стратегий в прошлом, если быть точным. Полностью применимо на практике, поскольку является инструментом объективного метаанализа.
  4. Взять исторические данные, итерируясь, на каждой итерации смещать OOS окно по этим данным, и на каждой итерации все остальные данные использовать в качестве IS, обучающей выборки, выборки для оптимизации – кому как нравится. K-Fold валидация, короче. Адекватно для ответа на вопрос: что если оставить за скобками динамику развития закономерности (фактор времени), но при этом выжать максимум из имеющихся данных и посмотреть как работает какой-то подход (по сути речь о вариации на тему (3)). Применимо на практике, добавляет много объективности, позволяет выжимать многое из данных, с осторожностью, если фактором времени и динамики развития закономерности нельзя пренебрегать.

 

Ну и вывод: задавайте правильные и нужные именно вам вопросы, подыскивайте адекватные вопросам схемы и алгоритмы, убеждайтесь, что итоговый ответ отвечает на поставленный вопрос. И да прибудет с вами алго-сила!

 

 

★4
16 комментариев
Плюсанул, хотел у тебя спросить получилось что-нибудь в итоге найти «рабочее» по спросу-предложению?
avatar
Илья Нечаев, Оно как-то работает… временами. Короче все свелось как и в остальных стратегиях к вопросу, как понять, сейчас те времена когда это будет работать или те, когда не будет)).

avatar
Replikant_mih, просто вопрос работает из-за случайности и просто низкой базы рынка (индекс) или это действительно преимущество которое ты смог получить при помощи алгоритма и тестовой выборки. А профит сколько на сделку в процентах закладываешь?
avatar

Илья Нечаев, «профит сколько на сделку закладываешь»

Профит — сколько дают)) — я издержки закладываю). По профиту ниже 0.2% не рассматриваю варианты. В идеале от 0.5%. Я пока не добился чтобы «управляемо» получать 0.5%+. Впрочем, я не сильно уже и пытаюсь). Больше другими стратегиями занимаюсь.

avatar
Replikant_mih, Можете более подробно объяснить: «все остальные данные использовать в качестве IS» ?
avatar

Astronomer, Ну это я своими словами объяснял K-Fold кросс-валидацию). IS в данном случае синоним обучающей выборки, train (если в категориях ML), или выборка, где проводим оптимизацию (если в категориях обычного алго). Если этого не хватит — готов ещё дообъяснить), главное понять что именно).



 

avatar
Replikant_mih, Меня интересует вопрос следующего характера. Количество Iteration 1,2,3… и количество вот этих блоков Train и Test влияет на качество оптимизации? Существуют какие либо методы определения интервала InSample (белая линия) и OutOfSample (Зеленая). Спасибо за ответ. 




avatar
Astronomer, Я для себя так на этот вопрос смотрю: я не допускаю склеивание из пересекающихся OOS, т.е. когда я тест смещаю, шаг смещения у меня равен размеру теста, не меньше (иначе пересечения), не больше (иначе тест не всю выборку покроет). А дальше на что смотрим — по сути, не важно на какие размеры кусков (и соответственно, сколько итераций) ты нарезал, в итоге у тебя склеивается тест (OOS) одного и того же размера. А на что мы тогда смотрим — профит от маленького числа итераций — экономия времени вычислений (в каких-то случаях это важно, например, если вопрос стоит в считать 30 минут или 5 дней, в каких-то не важнен если речь о том, чтобы считать 7 секунд или пару минут). Дает уменьшение шага смещения и размера каждого отдельного OOS куска, вернее увеличение числа итераций, какой-то профит — по идее да — ты же типа фитишься под некий участок, если там есть закономерность, ты её транслируешь на OOS, если ты берешь большой OOS в отдельной итерации, закономерность, может, уже ушла, затухла, а ты её используешь на протяжении всего большого OOS куска. Аргумент про то, что OOS должен быть большой для того чтобы посмотреть закономернсть на разных состояниях и т.д. здесь не катит, потому что как выше написал, не важно какого размера у тебя OOS в итерации, склеивается в итоге в большой OOS одинакового размера. + Больше кл-во итераций раздувает выборку и делает результат более репрезентативным. Да, в нескокольких соседних трейнах у тебя будет много пересекающих участков данных, но ты же наверняка наблюдал, что в одни данные чуть добавить шума или чуть сместить и т.д. и уже совсем другие результаты, поэтому такое увеличение кол-ва прогонов (размера выборок) по мне — во благо. Ну и в итоге имеем, что это некий trade-off между временем на выполнение и профитами от роста числа прогонов (и уменьшения размера отдельного OOS куска). Сила этих плюсов на мой взгляд не такая большая и явная, так что бы не стал слишком увлекаться увеличением числа прогонов (и уменьшением размера отдельного OOS).
avatar
Replikant_mih, Спасибо вам за развернутый ответ.
avatar
Replikant_mih, но ведь в итоге вы выберете вариант который
А. Показывает лучший результат на всех пяти квадратиках
Б. Показывает лучший результат на последнем
А если так — не проще ли подобрать параметры на всем интервале сразу?
avatar
MoscowTrades, 
но ведь в итоге вы выберете вариант который
А. Показывает лучший результат на всех пяти квадратиках
Б. Показывает лучший результат на последнем

Нннет, я так делать не буду, поэтому и «не проще ли подобрать параметры на всем интервале сразу?» — тоже нет).
avatar
Сленг у тебя специфический. Слова типа «верификация» знаешь )
avatar
Андрей К, Ну сленг он да, как отголоски нашего опыта).
avatar
Прочитав сей опус, у меня зародился правильный вопрос. Где!?
В смысле где «взять стратегию», как описано у автора в «нескольких примерах».
avatar
Ну и вывод: задавайте правильные и нужные именно вам вопросы

Навеяло....

Каждый интеллигентный человек должен постоянно задавать себе три вопроса:
-Кто я такой?
-С какого я района?
-Почему я такой дерзкий?

как говорил Кирилл Николаевич, ответ — число ) он что-то знал про правильные вопросы, как пить дать )
avatar

теги блога Replikant_mih

....все тэги



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