semen74
semen74 личный блог
04 марта 2019, 14:07

Исследование машинного обучения для среднечастотной торговли РИ: 7% за 4 дня бэктест

Основная предпосылка для исследования озвучена ural_pro в статье http://www.quantalgos.ru/?p=9516
Дневная доходность здесь — около 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 если мы ничего не достигли:
Исследование машинного обучения для среднечастотной торговли РИ: 7% за 4 дня бэктест
Для обучения использую модель LightGBM, текущий фаворит kaggle
Подробное описание фич feature_creation_1
результаты обучения model_train

Алгоритм бектеста: если ожидаемая вероятность больше tolerance то покупаем один лот, если меньше -tolerance — продаем
ограничение 100 лотов
Вкратце 4 дня последние out_of_sample:
Параметры немного другие, чем для обучения
tolerance=0.3,take_profit=50,stop_loss_time=100
Исследование машинного обучения для среднечастотной торговли РИ: 7% за 4 дня бэктест
Общая прибыль (без учета комиссии) 100 тыс рублей
Максимальная загрузка 100 лотов.
Средняя прибыль PPD на сделку 8.8 рублей
PF = 1.68
Если перебирать параметры, то можно получить бОльшую ppd, при худшем графике эквити.
Основная проблема на Ри это исполнение по тику — если выставить эмуляторе исполнение exe.on_price_prob =0.1 (10% а в реальности около 0), то мы таких доходов не увидим.


11 Комментариев
  • старый трейдер
    04 марта 2019, 15:56
    мы не пытаемся что-то предсказывать, а четко определяем вероятности
    мы не пытаемся есть, а четко рассчитываем траекторию пищи во рту…
  • ves2010
    05 марта 2019, 11:50
    смотри в чем прикол… реальность отличается  от тестов… чтоб лимитка исполниалась в реальности надо чтоб цена перешла за лимитку а не уперлась в цену как в тестах…
    вообщем надо смотреть не эквита, а среднюю сделку 

  • Sergey Pavlov
    05 марта 2019, 12:11
    Это почти бессмысленно тестировать без знания своего реального места в очереди. Фантастические эквити при условии касания ценой сделки цены лимитки и полный слив при условии пробоя на 1шц для исполнения. Реальность где-то посередине.

    Ну и тут можно без машобуча. Можно топорно. Если был даунтик, то покупаем. Если аптик, то продаем. Будут такие же эквити по всем дням за 10 лет РИ при условии, что торгуемый фьючерс ближайший, т.е. самый ликвидный.

    Основная работа будет не в том, чтобы машобучением заниматься, а в том, чтобы стоять первым в очереди, а это ой как нелегко…

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн