Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2424

 
Igor Makanu:

глупость то какая, есть пользователи, есть производители продуктов/товаров/услуг

Вы ж не создали свой автомобиль? а купили готовый у автопроизводителя

ЗЫ: можно и с научной точки зрения...теорему Пифагора слышали? а Ваша где?   )))


это на профильных ресурсах юмор, вот из только что прочитанного: " сошлись 3 стихии, фиговый фотограф, фиговая модель и фиговый косплей "


по сабжу... ну как бы Маркет позволяет выкладывать новые версии продукта, и не важно, что некоторые авторы продуктов просто переоптимизируют своих советников на новых исторических данных...... "в общем сошлись стихии" - тут, кстати, одна из "стихий" - имхо, низкая подготовка покупателей, мало кто способен качественно проверить продукт, но так везде - включая покупателей упомянутых выше автомобилей - так сказать маркетинг 

Где глупость увидели? В том сообщении написано же, во-первых подразумевался интеллектуальный труд, а во-вторых - то что "НЕ научился использовать". 

Чтобы критиковать текстовые публикации, нужно быть на ОДНОМ уровне с автором. Какое-то нелепое сравнение привели с Пифагором. К чему это вообще? 

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

Надеюсь, понимаете в чем принципиальная разница.

 
Горячие чилийские парни - Вы ветку случайно не попутали? 
 
Уровень виден сразу по восприятию тех или иных тем (ссылок) и прочего. 2-3 человека в теме, остальные так, пофлудить, как обычно 
 
mytarmailS:

В чем приниыпиальная разница  -    между "игра  \ стоп игра"   и    "открыть \  не открывать"  или "купить  \ не покупать"

По моему ни вчем, обычная классификация..


старт/стоп другого робота - по идее должен быть проще чем собственный buy/sell...

меньше рыночного шума (шум фильтруется управляемым роботом), решение ищется проще - потому что инвариантов меньше

 
Maxim Kuznetsov:

старт/стоп другого робота - по идее должен быть проще чем собственный buy/sell...

меньше рыночного шума (шум фильтруется управляемым роботом), решение ищется проще - потому что инвариантов меньше

Нет никакой разницы, старт-стоп будет управляться другими признаками, в которых будет шум 
 
Maxim Kuznetsov:

старт/стоп другого робота - по идее должен быть проще чем собственный buy/sell...

меньше рыночного шума (шум фильтруется управляемым роботом), решение ищется проще - потому что инвариантов меньше

хз..

покажи что сделал, а то я пока скептик .  Я сеть фильтровал другой сетью и так себе, а ты какую то  ТСшку фильтруешь и норм?

 

Итак, провел я первую фазу исследований, о которых анонсировал ранее, попробуем разобраться, что получается по факту. Писать и думать буду сходу, пока сам до конца результат не знаю, информации получилось много, и как её правильно проанализировать - то же вопрос.

Начну по порядку, я взял выборку с 2014 по первое полугодие 2021 года (60% - train, 20% - test, 20% - exam), предикторов 5336 штук, зафиксировал все параметры - дерево глубиной 6 и random-seed 100 установил, темп обучения 0,03 и 1000 итераций (деревьев) с автоматической остановкой в случае не улучшения результатов после новых 100 деревьев на контрольной выборке, остальные настройки не существенны, а вот изменяемые параметры это тип квантования и число квантовых границ. Число квантовых границ увеличивается в прогрессии от 8 до 512 и тип квантования - 6 разных вариантов, таблицы квантования при этом сохраняем в отдельный файл.

Обучив все модели получаем таблицу по 42-ум моделям, которую упорядочиваем по столбу "Balans_Exam" - независимой выборке.

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



В итоге отобраны две модели - выделил салатовым цветом, они отличаются по числу квантов - 8 и 128 соответственно и по типу квантования - Median и UniformAndQuantiles.

Далее я разбил выборку в пределах test на 8 частей, так, что бы в каждой части было по 6 месяцев, и провел обучение моделей с первой и второй фиксированной квантовой таблицей отдельно, при этом для каждого, назовем, проекта, использовалось 5 вариантов настроек для обучения, в которых перебирался параметр random-seed - 100 вариантов от 8 до 800 с шагом 8:

  1. Обучаем 1000 деревьев без контроля остановки на подвыборке test;
  2. Обучаем 1000 деревьев на подвыборке с контролем остановке на  подвыборке test спустя 100 итераций без улучшения;
  3. Обучаем 100 деревьев без контроля остановки на подвыборке test;
  4. Обучаем 50 деревьев без контроля остановки на подвыборке test;
  5. Обучаем 5 деревьев без контроля остановки на подвыборке test.

После окончания обучения были проанализированы полученные модели по следующим вариантам получения статистики о предикторах CatBoost:

  1. PredictionValuesChange;
  2. LossFunctionChange;
  3. InternalFeatureImportance.

Далее я усреднил отдельно результаты по Seed каждой 1/8 части выборки, и свел их в общую таблицу, которая была упорядочена по среднему значению показатель значимости предикторов на каждом отрезке, при этом отдельно проводилась проверка на наличие значимого предиктора на каждом участке и использовалось упорядочение таблицы и по этому показателю. Описанная процедура была сделана для каждой проекта и каждого типа статистики модели.

Ниже выписка из таблицы для 5 варианта обучения и первого варианта анализа модели

Далее я создал настройки для исключения из обучения предикторов, не вошедших в n первых предикторов, если предикторов отвечающих критериям не хватало, то файла настройки не создавалось. Настройки сделаны для каждого варианта статистики и проекта. Использовались следующие ограничения по числу предикторов, используемых для обучения: 5/25/50/100/300/500/1000/2000/3000. Таким образом получился набор настроек.

Далее мной было проведено обучение с фиксированной настройкой квантовой таблицы на выборке train - 60% test - 20% exam - 20% с максимальным числом деревьев 1000 и остановкой обучения по выборке test, обучение было произведено для всех настроек и двух вариантов квантовых таблиц, по 100 моделей с перебором random-seed - 100 вариантов от 8 до 800 с шагом 8 . Кроме того, было проведено отдельно обучения для двух квантовых таблиц без исключения предикторов но с перебором random-seed - 100 вариантов от 8 до 800 с шагом 8.

Ниже приведена таблица с настройкой разбивкой на 8 границ по методу Median - первые и последние 5 лучших варианта.

Ниже приведена таблица с настройкой разбивкой на 128 границ по методу UniformAndQuantiles  - первые и последние 5 лучших варианта.


Первый вывод, который можно сделать - у модели есть потенциал, который зависит от используемых предикторов, на использование которых влияет random-seed. И размышляя вслух, предположу, что целью отбора настроек/метода должен являться не лучший результат, а средний результат прибыли, либо иных показателей. Отмечу, что среднее значение финансового результата на выборке вне обучения (столбец Balans_Exam) в первом варианте составляет 2222,39 и во втором варианте 1999,13.

Далее составляем таблицу из средних значений метрических показателей моделей с разбивкой на настройки для их обучения.

Ниже приведена таблица с настройкой разбивкой на 8 границ по методу Median для разных настроек отвечающих за исключение предикторов - первые 10 лучших варианта - средние значения.


Ниже приведена таблица с настройкой разбивкой на 128 границ по методу UniformAndQuantiles  для разных настроек отвечающих за исключение предикторов - первые 10 лучших варианта - средние значения.


Для расшифровки того, что мы тут имеем по столбцу "File_Name" предлагаю воспользоваться следующей таблицей



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

На таблице ниже подсчитаны какие "Проекты" попали в десятку по двум квантовым таблицам.

И тут видим, что в обоих таблицах имеются хорошие представители из первого проекта (Exp_000) и пятого (Exp_004), какой лучше и от какого отказаться не ясно, но тот факт что они оба попали в десятку повод призадуматься. Возможно следует брать статистику с каким либо коэффициентам по всей таблице - не знаю - предложите варианты. Однако отмечу, что вариант Exp_004 хорош тем, что занимает наименьшее времени на подготовку данных для создания настроечных файлов, что и логично, ведь там всего учится 5 деревьев. Думаю, что окончательно выводы делать рано по выбору числа деревьев для начального обучения, как считаете?

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



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

Предлагаю посмотреть теперь на результаты самих моделей, возьмем те выборки проектов, настройки которых оказались в большинстве, для первой квантовой таблицы - CB_Svod_Exp_000_x_000000002 , а для второй - CB_Svod_Exp_004_x_000000002.


Ниже приведена таблица с настройкой разбивкой на 8 границ по методу Median настройки отбора предикторов  CB_Svod_Exp_000_x_000000002   - первые 5 лучших и 5 худших варианта.



Ниже приведена таблица с настройкой разбивкой на 128  границ по методу  UniformAndQuantiles   настройки отбора предикторов   CB_Svod_Exp_004_x_000000002 - первые 5 лучших и 5 худших варианта.

Ниже приведены сводные таблицы для сравнения - первая строка данные из первоначальной квантовой таблицы, вторая - данные после перебора random-seed, и третья уже по результатам отбора после процедуры отбора предикторов:

1. Таблица с настройкой разбивкой на 8 границ по методу Median



2. Таблица с настройкой разбивкой на 128  границ по методу  UniformAndQuantiles



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


Какие можно сделать предварительные выводы:

1. Просто скормить CatBoost выборку можно, но манипуляция с предикторами способна существенно улучшить модель, в том числе финансовый результат.

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

Для развития этой идеи, нужно провести эксперименты на других выборках, и если результат повториться, то можно думать о снижении числа комбинаций для поиска перспективных результатов. Целью является разработка слепого метода, который позволял бы находить лучшие средние значения без подглядывания в тестовую и экзаменационные выборки, что позволит увеличить на 40% выборку для обучения и ещё добавит выявления предикторов со стабильным откликом.

Можно думать над дополнительной фильтрацией предикторов в момент оценки, добавив корректирующий коэффициент их полезности/эффективности с учетом полученного финансового результата.

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

Надеюсь заметка показалась интересной, жду ваших комментариев!

Приложил файл со всеми таблицами - кому интересно, и кто хочет подумать.

Файлы:
CB_Svod_Si_Q.zip  697 kb
 
Ну и вот, а можно взять приращений 5-15 штук, показатели будут не хуже 

Или отсеять по корреляции все предикторы сначала (секунды времени), а потом взять оставшиеся 5-15 (если от силы столько наберется) 

Это как эконометрика экономит ваше время 

 
Maxim Dmitrievsky:
Ну и вот, а можно взять приращений 5-15 штук, показатели будут не хуже 

Мат ожидание за 30 пунктов только на приращениях, где это наблюдать можно? Обучение на выборке 2014-2018 и работа в 2020 году - где такое есть на преращениях?

Maxim Dmitrievsky:
Или отсеять по корреляции все предикторы сначала (секунды времени), а потом взять оставшиеся 5-15 (если от силы столько наберется) 

Это как эконометрика экономит ваше время 

Хотите попробовать сделать лучше, чем получилось? Скину выборку - она не большая.

 
Maxim Dmitrievsky:

Я вот тут призадумался над умиранием стратегий...

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


Например спрогнозировать спектр рынка ...

Типа "нам не дано знать будущее но мы можем его представить"  
Причина обращения: