Активно использую в алго ML модели. При обучении моделей тоже есть свои фишки и с точки зрения защиты от оверфиттинга и в целом. Поэтому часто обучаю по несколько моделей в одном скрипте. Это и параметры разные и участки данных разные и т.д.
Когда скрипты уже отлажены ты просто их гоняешь, оцениваешь результаты, принимаешь решения. Часто при этом в голове всплывают неотвеченные вопросы, одни помечаешь себе, другие нет. Одними из таких вопросов были: это модель хреновая или OOS неудачный для модели, или в целом неудачный, а есть для него удачная модель, а для удачной модели есть неудачные участки данных тоже? В общем если убрать за скобки ML – классическая тема про переоптимизацию про то, что рынок может благоприятствовать стратегии (а скорее целому классу стратегий), а может нет. Но как с этим у моделей обстоит. В общем до этого момента только фантазировал на эту тему, закрыть вопрос через исследование было не сложно, но как-то руки не доходили, а теперь дошли.
Что делал: условно, взял много данных, единое признаковое пространство, по-всякому нарезал данные таким образом чтобы разные модели обучались на разных участках данных и было так же сопоставимое с кол-вом моделей кол-во OOS участков. Убедился, что OOS в конкретной паре модель-OOS не участвовал в обучении данной модели и погнал тестить разные модели на разных OOS кусках.
Какие основные граалегипотезы проверял:
— В зависимости от участка данных модель может обучиться заметно лучше или заметно хуже.
— Или все-таки не так важно, как хороша модель – важно на какие данные её пустили предиктить.
Ну и так по мелочи ещё.
Сразу к результатам переходим чё.
Как и в классическом алго, участок данных, на котором торгует модель, решает. Обученные на разных участках модели кучно хреново себя чувствуют на одних участках и кучно хорошо на других. Модель показала себя на одном участке несколько лучше, чем другие, будет ли она и на других участках обгонять другие модели – нет не будет (если что-то и есть, то у этой закономерности не масштаб грааля точно).
Выводы.
Раньше в своих исследованиях при оценке модели мог запросто сравнивать модели между собой на основе разных OOS кусков (одну на одном OOS смотрел, другую на другом OOS), терь не буду.
Теперь будет один фиксированный кусок данных брать всегда. Ну или 3, но всегда одни и те же и сравнивать в разрезе отдельных кусков.
Возможные направления дальнейшего развития (исследования) этой темы:
— Если моделью можно размечать качество участков данных (с точки зрения удобства (имею в виду, что на таких данных модель качественно предиктит) для данной модели), можно пробовать разное, например, затестить гипотезу: а что если взять из данных самые лучшие участки (для данной модели) и обучить на этом же признаковом описании но на очень подходящих кусках данных модель, будет ли она лучше.
— А если так можно делать (обучаться «у лучших» и быть лучше), то, вероятно, концепт «модель, специализирующаяся на данных с конкретными характеристиками» не лишен смысла. И можно одной моделью размечать данные, другие пытаться целенаправленно натаскивать на данные, на которые первая модель плохо себя показывает, или же учить модель различать сами состояния (которые мы опять же теперь умеем размечать).
— Ну и кстати, если можно понять, что конкретный кусок данных хреново подходит данной модели, то, вероятно, можно пробовать сокращать размер такого куска (читай, повышать чувствительность) и пробовать в риал-тайме определять, благоприятствует ли состояние рынка модели.
В остальных случаях только оптимизация данных на ML.
1. Обучит МЛ на всех данных ВР или их производных принципиально невозможно.
2. Для обучения выделяю куски ВР на которых обучение возможно согласно предварительной гипотезе. Остальные участки ВР опускаются.
2. Проверка и последующая работа МЛ осуществляется только на участках соответствующих гипотезе. На остальных участках МЛ не применяется. Такие участки из работы исключаются.
Если гипотеза подтверждается, то МЛ и на реальных данных неплохо функционирует. Наша задача только селектировать такие участки до подачи на МЛ.
Ну, и такой подход новизной не отличается, описан практически повсеместно.
3Qu,
1. Возможно, но я специально обучаю не на всех (из имеющихся) — для проверки гипотез — глобально (как в этом исследовании) или локально — для оценки робастности конкетной модели, например.
2-3 Если это попытка описать, что делаю я, то нет, я делаю что-то другое, вроде)).
Я обучаю и тестирую (в рамках этого исследования) на всех участках а потом оценивал что важнее — на чем ты обучался или где ты потом уже обученную модель применяешь. Оказалось (при условии, что участок где ты обучаешься достаточен, конечно), что важнее где предиктишь, а не где обучаешься.
Я просто пока не нашел чего-то что обычным теханализом нельзя подтвердить.
То есть получаем одни артефакты?
Кстати, конкретно в данном исследовании фигурировали данные, которые я сам коплю, так что ширее будет только со временем.
По мне так 10 дней данных это очень мало, это гарантия подгонки алгоритма под данные.
Для фр России типично с 2007 года. Чтобы зацепить зоны низкой волы и зоны кризисов.
не вытяните вы фьючи для модели из рынка которые будут давать высокий accuracy на unseen data, без разницы какой алго вы юзаете (svm,knn,regression etc.)🤷
потратил кучу времени на исследование разных техник и только reinforcement learning с правильно описанной средой агента даёт кое какой результат.
Свечной может открыться волновику на последнем этапе познания циклов времени на графике если волновик будет читать волны через свечной график, а не график в линию. Подсказки в графике Аши и рендж графике.
А как вы определяете, что участок будет трендовым или флэтовым?
CloseToAlgoTrading, Ну на данный момент я один из вопросов, ну или на развилке определился куда двигаться исследованиях дальше (если хочу что-то улучшить в своих моделях). А какие напраления остались актуальными:
— предикт состояния.
— по предиктам обычной модели (сравнении с фактическими результатами) какой-то механизм вкл./выкл. если состояние не благоприятствующее в моменте.
— выявление признаков, добавление которых поможет модели так обучиться, чтобы понимать какое сейчас состояние и в предикт это закладывать.
— целенаправленный поиск моделей хорошо себя чувствующих на состояних, где другие модели не очень хорошо себя чувствуют и т.д.
Машики по большому отвечают на этот вопрос… сглаживая колебания мы видим растущий тренд, однако мы все еще не знаем как долго он будет расти. Тоже и с моделями, если некоторая модель сможет сделать предположение, хотя бы вероятности, на продолжительность текущего состояния, то :) дальше уже можно и нихило обогатиться.
Текущее состояние можно попробовать методами кластеризации или какой нить сетью типа автоэнкодера распознать. Тут на смартлабе кто то же похожий подход делал, рассказывали что имеют тыщу простеньких моделей, и они все участвуют в торговле, но активируются на остове некоторых вспомогательных алгоритмов которые выдают веса моделям… Если я ничего не путаю :) вроде на этом сайте было.
Ну да, как-то так. Концепт простой, понятный, но думаю, основная сложность будет 1. Суметь обучить модели для плохих участках, 2. Переключатель качетсвенно обучить.
Главная модель — фрактал Эллиота (танец цены 3-2 это мое название ).На свечах это свеча -приседающий.График Аши весь из приседающих.В идеале это 3 белых солдата и коррекция против из 2х шагов а-в-с .
Напрасно вы — программисты изобретаете колесо. Проги уже давно написаны. Им лет 30.Я начинал с этих прог в 2000г. EWA 3.0 ...ELWave размечают график в любых таймах… типа они читают график на предмет трендов и флетов. Нам же трейдерам предстоит только понять волновой принцип и применить для торговли.Я уже много раз советовал прямой путь познания .
1- VSA. 2- ВА Эллиота .3- с помощью первых двух понять свечной анализ .4 — понять как собираются фракталы времени из свечей .
Сигналом является свеча -поглощение.Это правая часть пин бара… типа пин бар и поглощение это одно и тоже. Более точно сигнал- поглощение 5й волны от С волны.