Дневная доходность здесь — около 50%! Причем здесь количество прибыльных сделок — 53%, убыточных (вместе с нулевыми) — 47%, соотношение средней прибыли к среднему убытку — 1.05. То есть, при таком вроде бы незначительном преимуществе в расчете вероятностей результат оказывается очень значительным — эффект большого количества сделок, то есть достаточной статистической выборке даже внутри одного дня.
В данном случае мы не пытаемся что-то предсказывать, а четко определяем вероятности и планируем свои действия в соответствии с их величиной. Проблема здесь в том, что вычислить эти величины довольно сложно, в связи с тем, что присутствует влияние множества факторов, которые должны быть учтены в определении вероятностей
Суть проблемы: ищем алгоритм, с небольшим профит фактором и большим количеством сделок. После написания и тестирования разнообразных подходов, решил вернуться к истокам и обучить модель ML. Фичи взял из старых работ плюс skew из одной из статей Виталия.
Возьмем Ри. То есть на 1000 сделок: 530*105-430*100 = 8650, если взять тейк и стоп = 100, то получается 548 прибыльных на 452 убыточный. PF = 1.21
Исходные данные, это тики, сжатые до движения 1 пункта цены. Мы выбрасываем промежуточные тики, сохраняя информацию о том сколько покупок и продаж было между двумя точками. График разметим 3-мя категориями: 1 в случае если мы достигли +profit_loss за 200 следующих тиков цены, либо -1 если мы достигли -profit_loss рублей, и 0 если мы ничего не достигли:

Для обучения использую модель LightGBM, текущий фаворит kaggle
Подробное описание фич feature_creation_1
результаты обучения model_train
Алгоритм бектеста: если ожидаемая вероятность больше tolerance то покупаем один лот, если меньше -tolerance — продаем
ограничение 100 лотов
Вкратце 4 дня последние out_of_sample:
Параметры немного другие, чем для обучения
tolerance=0.3,take_profit=50,stop_loss_time=100

Общая прибыль (без учета комиссии) 100 тыс рублей
Максимальная загрузка 100 лотов.
Средняя прибыль PPD на сделку 8.8 рублей
PF = 1.68
Если перебирать параметры, то можно получить бОльшую ppd, при худшем графике эквити.
Основная проблема на Ри это исполнение по тику — если выставить эмуляторе исполнение exe.on_price_prob =0.1 (10% а в реальности около 0), то мы таких доходов не увидим.
вообщем надо смотреть не эквита, а среднюю сделку
Ну и тут можно без машобуча. Можно топорно. Если был даунтик, то покупаем. Если аптик, то продаем. Будут такие же эквити по всем дням за 10 лет РИ при условии, что торгуемый фьючерс ближайший, т.е. самый ликвидный.
Основная работа будет не в том, чтобы машобучением заниматься, а в том, чтобы стоять первым в очереди, а это ой как нелегко…
Да, я понял про пересечение уже раньше. Поэтому в эмуляторе можно выставить вероятность исполнения при касании. Большинство стратегий становятся убыточными при вероятности менее 0.3
Но если посмотреть конкретно эту работу, то настройками можно добиться ppd более 20 рублей на сделку, что позволит входить выходить с потерей 10 рублей. Например в конце model_train
Само ML требует кучу времени и настроек, одному все это очень тяжело.