Представим процесс создания и верификации стратегии как исследование, и сведём этот процесс к следующей упрощенной модели: цель исследования это вопрос, само исследование — процесс ответа на вопрос, результат исследования – ответ на вопрос.
Так вот часто, эти три компонента в модели А. Не согласованы, Б. Процесс согласования не проходит через сознательный уровень. Поясню:
(А) – Ну тут обычно всё просто: если ты задаёшь один вопрос, а отвечаешь как будто на другой вопрос, то и ответ в итоге не будет отвечать на поставленный вопрос. Или ближе к алго: если ты хочешь оценить робастность стратегии, а в процессе исследования делаешь что-то несусветное, твои выводы не скажут ничего про робастность. Например, я оцениваю робастность стратегии и хочу получить наилучшие параметры для торговли (вопрос), делаю оптимизацию на истории и отбираю ТОП1 прогонов, беру от него набор значений параметров (ответ).
(Б) – Многие тупо не отдают себе отчет что они делают, почему именно так, как процесс ответа на вопрос согласуется с вопросом, как ответ соответствует вопросу и т.д. Ну т.е. многие исследуют именно так, а не иначе потому «а вот я слышал, что это работает», «я пробовал, вроде сработало» или ещё почему-то. Не скажу, что более глубокий уровень осознанности в этом деле прям обязательный, если у тебя что-то работает (твой подход) – ну и отлично.
Но я люблю осознанность:
IS – in sample (оно же обучающая выборка), OOS — out of sample (оно же тестовая выборка). Ну или ближе к обычным алго – IS – там, где оптимизируешь стратегию, OOS – данные, которые стратегия ещё не видела.
Какое соотношение выборок лучше. Просто сейчас накапливаю некоторые данные (которые иным способом не получить), а любопытство оно же такое, что нельзя просто так взять и подождать 3 месяца и только тогда начать с данными работать, поэтому начал работать с данными чуть когда их было ещё совсем мало, потом продолжил когда их было просто мало, продолжил когда стало чуть побольше и т.д., сейчас уже вполне достаточно.
Из-за того, что несколько раз к данным подступался при разных объёмах этих самых данных, несколько выпятился наружу вопрос достаточности данных в целом и в частности вопрос соотношения IS/OOS в целом.
Когда данных совсем мало – без разницы как делить – не хватит ни чтобы обучить (терминология у меня ML’ная, но, по сути, без разницы, ML или классические алгоритмы) ни чтобы оценить.
Активно использую в алго ML модели. При обучении моделей тоже есть свои фишки и с точки зрения защиты от оверфиттинга и в целом. Поэтому часто обучаю по несколько моделей в одном скрипте. Это и параметры разные и участки данных разные и т.д.
Когда скрипты уже отлажены ты просто их гоняешь, оцениваешь результаты, принимаешь решения. Часто при этом в голове всплывают неотвеченные вопросы, одни помечаешь себе, другие нет. Одними из таких вопросов были: это модель хреновая или OOS неудачный для модели, или в целом неудачный, а есть для него удачная модель, а для удачной модели есть неудачные участки данных тоже? В общем если убрать за скобки ML – классическая тема про переоптимизацию про то, что рынок может благоприятствовать стратегии (а скорее целому классу стратегий), а может нет. Но как с этим у моделей обстоит. В общем до этого момента только фантазировал на эту тему, закрыть вопрос через исследование было не сложно, но как-то руки не доходили, а теперь дошли.
Что делал: условно, взял много данных, единое признаковое пространство, по-всякому нарезал данные таким образом чтобы разные модели обучались на разных участках данных и было так же сопоставимое с кол-вом моделей кол-во OOS участков. Убедился, что OOS в конкретной паре модель-OOS не участвовал в обучении данной модели и погнал тестить разные модели на разных OOS кусках.
Текущее экспериментальное направление рисеча в алго – графические паттерны. Формализовал и алгоритмизировал выявление нескольких паттернов. Они в таком сыром виде работают, но не космос. Чтобы было космосее формализовал и алгоритмизировал выделение фичей (они же параметры, они же метрики, свойства – как хотите) паттерна. Ну т.е. паттерн-то он паттерн, но конкретные матчи (кейсы) они же все разные, а чем они разные? – Вот в частности значениями этих фичей. По сути, я ушел на следующий уровень абстракции (сам паттерн – первый уровень, его характеристики – второй). Ну и чтобы работать со свойствами паттерна было удобней традиционно поверх небольшим слоем размазал ML.
Текущие сложности в этом направлении:
— В моей формализации долго (относительно) ищутся паттерны на окне (зависит от размера окна), поэтому, в частности, насобирать большую выборку для ML долго, а на небольшой, например, много фичей паттерна сразу не оценишь на профпригодность. Для торговли скорости приемлемые если не слишком малые ТФ и не слишком много тикеров одновременно.
Часто тут пишу про Wealth-Lab. Сейчас это значимая часть моей алго-инфраструктуры. Но ни разу даже картинки Велс-Лаба не показал)). Пришло время все исправить. Покажу новый велс и немного приподниму вуаль, защищающую мой подход и мой алгоритмический флоу (как тэщщу, где беру идеи, как оптимизирую, как выбираю значения параметров и т.д.).
Базовый флоу на Wealth-Lab 7.
Кодим стратегию.
В начале Initialize видно, как удобно организована работа с таймсериями в векторном стиле.
Можно и без кода стратегию запилить.
Только русских русскоговорящих мало. Залетайте в чат для русскоговорящих и Россию торгующих пользователей Wealth-Lab 7, нас уже… 2 и будет ещё больше. Граали обсуждать не будем, стратегии тоже. Для этого есть отличный чат от Сергея Павлова. А вот перетереть более узкую инфраструктурную тематику для тех, кто юзает, ну или на крайняк собирается юзать Wealth-Lab 7 – самое то. Ничего не продаю. Так чисто релевантное общение.
P.S. Пиарщик от бога, чуть ссылку не забыл добавить)).
Наш WL7 Russian чат
Конечно, речь о процессе). Результат подтянется если с процессом все ок. Сейчас о процессе.
Алго-трейдинг что дышло… Будет таким каким ты захочешь чтобы он был. Захотел поиграть в исследователя. Понятно, копаясь в каждой новой стратегии, ты исследуешь, но тут захотелось более по-взрослому и не в разрезе стратегий.
Недавно задавался вопросом, какой таргет для ML выбрать, много интересного написали в комментариях. Собрал тестовый стенд, формализовал таргеты, написал на питоне обработчик (вплоть до интерпретатора) результатов и погнал.
Взял 5 стратегий. Не буду вдаваться в детали своего подхода, для простоты… — взял 5 дата-сетов, или 5 признаковых описаний. Прикрутил некоторое кол-во разных таргетов, разнообразил некоторыми другими различиями (читай, факторами) и все это основательно прогнал. Результаты замерял на OOS.
Ожидание:
1. Будет выраженное влияние используемого таргета на результат стратегии.
2. Возможно, получится заметить какую-то закономерность по поводу зависимости качества модели от используемого таргета в зависимости от типа стратегии/признакового описания.