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

 
Доктор #:

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

Безоговорочно верю всему там написанному. Лишь сожалею что нет результатов за два последних года)

 
Aleksey Nikolayev #:

Безоговорочно верю всему там написанному. Лишь сожалею что нет результатов за два последних года)

Автор широко известен в узких кругах. На вопрос "будут ли результаты за 20ХХ год" обычно отвечает, что писать нет смысла, т.к. из года в год результат один и тот же. Последняя запись на ресурсе датируется 29.03.2021

 
Доктор #:

Автор широко известен в узких кругах. На вопрос "будут ли результаты за 20ХХ год" обычно отвечает, что писать нет смысла, т.к. из года в год результат один и тот же. Последняя запись на ресурсе датируется 29.03.2021

слился....

 
Aleksey Nikolayev #:

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

2) Существование метода устанавливающего детерминированность (неслучайность) закономерности для будущего по данным из прошлого было бы отрицанием для пункта (1)

У нас есть лишь кроссвалидация, которая может всего лишь установить однородность закономерности на истории. Мы можем лишь интерполировать закономерность, а не экстраполировать её. У нас есть лишь весьма слабое ПРЕДПОЛОЖЕНИЕ, что хорошо интерполируемая закономерность окажется хорошо экстраполируемой. Это не дедуктивное умозаключение, а всего лишь индуктивное - вариант умозаключения по аналогии.

закономерности появятся, если систему писать, а не филосовствовать

в очередной раз подсказываю

пишите систему с настроем не слить, а не заработать

---

чтобы не быть голословным, Вы поймете/обнаружите/увидите реакции котира на те или иные действия системы

обычно это:

- ГЭП

- черный лебедь

- тренд

- флет

- шпильки и длинные хвосты

все это закономерности, никоим образом не связанные с общепринятыми теоретиками причинами

теория, которую необходимо и достаточно знать для построения торговой системы тут
Секретный алгоритм движения цены - рынка.
Секретный алгоритм движения цены - рынка.
  • 2022.03.26
  • www.mql5.com
Привет всем программистам...
 
Доктор #:

Автор широко известен в узких кругах. На вопрос "будут ли результаты за 20ХХ год" обычно отвечает, что писать нет смысла, т.к. из года в год результат один и тот же. Последняя запись на ресурсе датируется 29.03.2021

Поймите меня правильно -- не то чтобы подвергаю сомнению написанное данным конкретным человеком или вашу рекомендацию данную ему. Просто данный форум, как и многие другие, полон утверждениями сходными по форме с "У нас есть ТАКИЕ приборы, но мы вам про них не расскажем!". Вот выше -- хороший пример) Если уж мы верим в одном случае, то какие могут быть основания отказывать в вере в других подобных? Но на этой весьма зыбкой почве совершенно невозможно построить что-либо осмысленное. Посему, предпочитаю основываться на утверждениях хоть и более слабых, но содержательных и хоть как-то верифицируемых. 

 
Aleksey Nikolayev #:

Безоговорочно верю всему там написанному. Лишь сожалею что нет результатов за два последних года)

Ахахах 5 с ± 

Алексей, а ты торгуешь вообще или в поисках?
 
mytarmailS #:
Ахахах 5 с ± 

Алексей, а ты торгуешь вообще или в поисках?

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

 

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

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

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

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

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

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

to_mark = BAD_SAMPLES_BOOK.value_counts()
mean = to_mark.mean()
marked_idx = to_mark[to_mark > mean*bad_samples_fraction].index
pr2.loc[pr2.index.isin(marked_idx), 'meta_labels'] = 0.0

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

bad_samples_fraction

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

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

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

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

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

Iteration: 0, R^2: 0.025863859193577587
Iteration: 1, R^2: 0.20881945768090338
Iteration: 2, R^2: 0.38691567117849557
Iteration: 3, R^2: 0.8538667616323108
Iteration: 4, R^2: 0.6289257079331403
Iteration: 5, R^2: 0.49590724745042913
Iteration: 6, R^2: 0.6899198178561211
Iteration: 7, R^2: 0.7914478307518835
Iteration: 8, R^2: 0.6271633947453318
Iteration: 9, R^2: 0.5022724259087565
Iteration: 10, R^2: 0.8568310685006555
Iteration: 11, R^2: 0.042448644454852524
Iteration: 12, R^2: -0.17980715185584073
Iteration: 13, R^2: 0.8294648122002825
Iteration: 14, R^2: 0.7615234602466088
 
Maxim Dmitrievsky #:

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

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

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

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

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

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

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

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

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

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

Интересный концепт!

1. Как избавиться от подгонки. Я не сильно понял про итерации. Почему нельзя просто один раз обучить фильтрующую (вторую) модель и оценить, улучшает/не улучшает работу первой. При этом можно просто фильтровать сигналы 1 по 2, или подавать выход 2 на вход 1. 

2. Как улучшить. 
2.1. Можно попробовать из разметки потранзакционной сделать разметку покластерную. Наверняка, плохие сигналы кучкуются. И хорошие. Размечаем кластеры. Обучаться можно потранзакционно (фичи на основе входов/свечей), таргет - находемся в хорошем или плохом кластере. А можно обучаться в разрезе кластеров (фичи в разрезе кластеров, один объект обучающей выборки - кластер), таргет - или так же (следующая свеча в хорошем или плохом кластере) или так: следующий кластер хороший или плохой (ну по сути это то же самое, наверно).
2.2. Признаковые описания, вероятно, должны быть разные у этих моделей, иначе мне кажется предельная полезность от второй модели будет низкой.


3. Философия за концептом. Да кому она нужна, эффективность модели, профит - вот мерило. Рулят эксперименты, а не философия).

 
Replikant_mih #:

Интересный концепт!

1. Как избавиться от подгонки. Я не сильно понял про итерации. Почему нельзя просто один раз обучить фильтрующую (вторую) модель и оценить, улучшает/не улучшает работу первой. При этом можно просто фильтровать сигналы 1 по 2, или подавать выход 2 на вход 1. 

2. Как улучшить. 
2.1. Можно попробовать из разметки потранзакционной сделать разметку покластерную. Наверняка, плохие сигналы кучкуются. И хорошие. Размечаем кластеры. Обучаться можно потранзакционно (фичи на основе входов/свечей), таргет - находемся в хорошем или плохом кластере. А можно обучаться в разрезе кластеров (фичи в разрезе кластеров, один объект обучающей выборки - кластер), таргет - или так же (следующая свеча в хорошем или плохом кластере) или так: следующий кластер хороший или плохой (ну по сути это то же самое, наверно).
2.2. Признаковые описания, вероятно, должны быть разные у этих моделей, иначе мне кажется предельная полезность от второй модели будет низкой.


3. Философия за концептом. Да кому она нужна, эффективность модели, профит - вот мерило. Рулят эксперименты, а не философия).

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

Вот думаю чего еще туда докрутить, может просто какие-то размышления тоже подойдут :)

Причина обращения: