Блог им. alex7088
Дневная доходность здесь — около 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 требует кучу времени и настроек, одному все это очень тяжело.
Но средняя сделка меньше величины спреда 10 пипсов = 13.16.
Я считаю необходимо иметь на тестах среднюю сделку > 1*Spread,
а лучше > 2* Spread. И при этом необходимо иметь execution близкий к идеальному.
В этом случае что-то можно в реале пробовать.
А при условии плохого для системы execution это монотонный слив.
Кстати, попробуйте метод на Si или SR — там сейчас исполнение значительно лучше, чем на RI.
«без учета комиссии» — это ломает многие системы на корню.
Также необходимо учитывать тенденцию Moex периодически увеличивать комиссию. А Execution со временем будет только ухудшаться.
Поэтому вряд ли это будет работать.
Но подход интересный, спасибо.
средняя на сделку = 5.4 по первому алгоритму и загрузке 100 лотов
средняя на сделку = 7.7 по второму алгоритму и загрузке 20 лотов
при сжатии tt=3 значительно хуже
если по второму алгоритму загрузку увеличить до 100 лотов, то средняя будет около 10 рублей
model_train_si
Цены не непрерывны, они имеют спрэд «шаг цены», что определяет спрэд. И если тестер не учитывает проскальзывание в худшую для позиции сторону даже в 1*Spreаd, то это, например, на 10-ти тысячах сделок на RI в квартал уже выливается в ошибку в
(Spread=13.227 + Бирж.сбор = 3.43 (скальп)) * 10 000 = 166 тыс.рублей на Oдин контракт. И стратегии это то надо отбить.
но Вы молодец. В правильном направлении двигаетесь.
Желаю успехов.