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

 

делать стратегию, основываясь на инфу от СМЕ не стоит

т.к.

как только они заметят, они умеют делать вброс лажовой инфы

плавали как бы ужо ;)

 

Получается типа бустинга, как Алексей заметил

улучшение на каждой итерации, с учетом экзаменационной выборки

Iteration: 0, R^2: 0.187883200953193
Iteration: 1, R^2: 0.23135332833695177
Iteration: 2, R^2: 0.5069635195005324
Iteration: 3, R^2: 0.6549692113098968
Iteration: 4, R^2: 0.49450581772674385
Iteration: 5, R^2: 0.727741771152099
Iteration: 6, R^2: 0.7155342473909062
Iteration: 7, R^2: 0.7577880020333465
Iteration: 8, R^2: 0.7519731839574526
Iteration: 9, R^2: 0.6484696911159258
Iteration: 10, R^2: 0.7919754252032625
Iteration: 11, R^2: 0.7434806103697286
Iteration: 12, R^2: 0.7829611167594436
Iteration: 13, R^2: 0.8423847977639594
Iteration: 14, R^2: 0.8755566220080022
Iteration: 15, R^2: 0.8073736447495541
Iteration: 16, R^2: 0.7756062175823373
Iteration: 17, R^2: 0.8767667338484959
Iteration: 18, R^2: 0.8658089653482818
Iteration: 19, R^2: 0.7976304450279426
Iteration: 20, R^2: 0.8335757510984808
Iteration: 21, R^2: 0.8236019726095158
Iteration: 22, R^2: 0.8590437311223307
Iteration: 23, R^2: 0.8425455355207566
Iteration: 24, R^2: 0.7897953478024325

Но зад плохо подтягивает (слева), но иногда лучше

настроек много, объяснять подробно не буду. Идею описал как смог.


 

если подождать 100 итераций


 
Maxim Dmitrievsky #:
Закономерность предполагает повторяемость. Ты не ищешь закономерность, ты делаешь подгонку под валидацыю. 
Твой алгоритм никак не учитывает повторяемость найденых зависимостей, следовательно не проверяет а закономерность ли это...

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

На какой подход надо делать ставку?

 
Maxim Dmitrievsky #:

Получается типа бустинга, как Алексей заметил

улучшение на каждой итерации, с учетом экзаменационной выборки

Но зад плохо подтягивает (слева), но иногда лучше

настроек много, объяснять подробно не буду. Идею описал как смог.


Тут по сути достаточно посмотреть 2 графика (эквити) - все на чистом OOS: 1 - первая модель, обученная, без всяких изысков, 2 - после вот этих всех описанных процедур. Ну и метрики можно - PF, RF, winrate. А так не понятно, какой эффект, красивая кривая обучения это, как я понимаю, на IS?

 
Replikant_mih #:

Тут по сути достаточно посмотреть 2 графика (эквити) - все на чистом OOS: 1 - первая модель, обученная, без всяких изысков, 2 - после вот этих всех описанных процедур. Ну и метрики можно - PF, RF, winrate. А так не понятно, какой эффект, красивая кривая обучения это, как я понимаю, на IS?

первая треть графика - новые данные, не участвует в обучении

по картинкам с 25 и 100 итерациями видно, что улучшилась при 100, хотя максимум был в районе 70 
 
Maxim Dmitrievsky #:

Есть такая постановка вопроса:

Используются 2 модели. Одна прогнозирует купить или продать, другая торговать или нет. 

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

Первая модель проверяется не только на обучающем участке, но и дополнительном, а вторая обучается на обоих участках.

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

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

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

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

... к этому моменту я уже устал писать ...

Как можно улучшить такую комбинацию моделей, чтобы она улучшала результаты свои на новом независимом участке?
Есть ли какая-то философия почему это может работать? Кроме той, что модели естественным образом улучшают друг друга (падают ошибки) на каждом круге переобучения, но как избавиться от подгонки?

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

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

похоже на банальный Multi-Label Classificaton - надо не комбинацию моделей варьировать, а комбинацию предикторов -- прежде всего разделение предикторов на features of smart & retail actions... ведь понятное дело, будут сигналы в противоход друг другу, а вот точки (временные) входа OTF (для пробоя уровней) - уже Edge для выбора модельки (dtf или otf action'a в рынке)... имхо

==========

или без разметки, но просто с LSTM с возможностями forget gate, чтобы потом не фильтровать отдельно из 2х моделей... но это всё дело вкуса...

ibm

у меня вот регрессия получилась по IBM  (тестовые данные с конца 2021 - там правый хвост на графике цены представлен на графике train и test)... по-простому по Close...

pred

- банальная MA получилась - и как всегда в таком случае в тренде будет работать (хоть как), во флете нет -- тоже доп фильтрацию на smart & retail behavior надо бы добавить (и модельку переделать на классификацию на входы и выходы)...

Файлы:
 
JeeyCi #:

похоже на банальный Multi-Label Classificaton - надо не комбинацию моделей варьировать, а комбинацию предикторов -- прежде всего разделение предикторов на features of smart & retail actions... ведь понятное дело, будут сигналы в противоход друг другу, а вот точки (временные) входа OTF (для пробоя уровней) - уже Edge для выбора модельки (dtf или otf action'a в рынке)... имхо

==========

или без разметки, но просто с LSTMи слоями forget, чтобы потом не фильтровать отдельно из 2х моделей... но это всё дело вкуса...

у меня вот регрессия получилась по IBM  (тестовые данные с конца 2021 - там правый хвост на графике цены представлен на графике train и test)... по-простому по Close... - банальная MA получилась - и как всегда в таком случае в тренде будет работать (хоть как), во флете нет -- тоже доп фильтрацию на smart & retail behavior надо бы добавить (и модельку переделать на классификацию на входы и выходы)...

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

 с lstm всегда получается MA, проверялось давно

 
Maxim Dmitrievsky #:

первая треть графика - новые данные, не участвует в обучении

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

Ну вот я бы сделал табличку, 3 варианта - 1 модель, 2 с 25 итераций, 2 с 100 итераций. И несколько трейдерских метрик (PF, winrate). Все на OSS. А-то "где-то там кусок это OSS" и метрика качества, видимо, для IS+OOS это одно. А чисто OOS померянный по-человечески это совсем другое.

 
Replikant_mih #:

Ну вот я бы сделал табличку, 3 варианта - 1 модель, 2 с 25 итераций, 2 с 100 итераций. И несколько трейдерских метрик (PF, winrate). Все на OSS. А-то "где-то там кусок это OSS" и метрика качества, видимо, для IS+OOS это одно. А чисто OOS померянный по-человечески это совсем другое.

табличек куча, скинул чисто обзорно принцип работы

идея до конца не оформлена, эксперименты вечером под кофе :з
Причина обращения: