Начало здесь: Создание Трейдинг бота
Предыдущая статья: Трейдинг бот. Спустя год... ч4.2 Подготовка данных, поиск модели.
Проверка модели
В прошлый раз я описывал подготовку данных, поиск модели. Здесь опишу проверку модели по финансовым показателям. Это ещё не реальная торговля, а оценка модели на получение прибыли.
У нас есть точность модели - это показатель на сколько модель попадает в реальные данные. Например реальное значение 2,5 а модель прогнозирует 2,45. Из этого не ясно будет ли выгода. Соответственно для продолжения работы необходимо выяснить будет ли модель торговать в плюс. Посчитаем это на некоторой выборке значений, например последний месяц.
Опишу общий сценарий стратеги и некоторые допущения. Торговый цикл - раз в день в один день покупаем или продаём. У нас есть 2 прогноза. 1-й это ожидаемая низкая рыночная цена инструмента завтра и 2-й прогноз ожидаемая высокая цена послезавтра. Если разница между ними положительная, то выставляем заявку на покупку (и сразу же или послезавтра на продажу по другой цене). Другими словами если ожидаемая продажа выше ожидаемой цены покупки то покупаем. Выставляем ордер на покупку по прогнозируемой цене.
Таким образом можно получать выгоду даже на понижающейся цене в том случае если есть разница между спросом послезавтра и предложением завтра.
Чтобы оценить выгоду сделаем следующее. Считать будем естественно на исторических данных и на тех что модель не видела. Сделаем прогнозы например за месяц. У нас будет примерно 20 значений. Если разница прогнозов (продажа - покупка) > 0, то считаем что сделку совершить удалось и в значении выгоды складываем реальные значения (я буду использовать те же данные что и при обучении 20й перцентиль при покупке и 80й при продаже). Если разница отрицательная считаем что прогноз выгоды отрицательный и сделку не совершаем. И в итоге складываем значения и получаем одно число которое показывает сколько мы получим в конце месяца в идеальных условиях. если сможем совершить сделку покупки и продажи.
Итак вспомогательные расчёты:
Это разница прогноз цены продажи больше чем прогноз цены покупки.
Здесь считаем выгоду в рублях. Оценочную. В таком виде нельзя сравнивать между собой 2 инструмента. Поскольку акции продаются лотами а мы используем в модели цену одной акции. То есть если цена акции 500р торговаться она будет например лотом 10шт за 5000. А мы прогнозируем цену одной акции. И в примере на скриншоте выше итоговый результат надо умножить на 10 чтоб оценить реальную выгоду. На примере GTRK цена акции на конец 2023г ~ 600 рублей, лот 10, цена лота 6000р. В нашем случае за месяц получаем ~277 р * 10 ~= 2770. Что составляет примерно 50% от стоимости лота.
Вот так выглядит на графике. Синяя линия ориентировочная цена продажи (high_80 80й перцентиль от максимумов свечей...) красная - ориентировочная цена покупки. Зелёный и фиолетовый - прогноз.
Отдельно надо отметить про "каньон" в прогнозных значениях 8-го декабря. Так выглядит на большем диапазоне:
Это сильная ошибка модели. Предполагаю что может быть связано с масштабированием данных (я использовал MinMax scaler ну и обучающие данные по всему рынку). С этим мне предстоит разобраться (например обучиться только на конкретном инструменте или при обучении использовать цену лота а не цену акции). Потому что в таком случае можем получить сильную ошибку и убытки. Также стоит отметить, что в этот момент тренд пошёл вниз, коридор выгоды - минимальный и здесь понесём убытки.
Минусы такой оценки
Здесь НЕ учитывается сможем ли мы совершить сделку, но я рассчитываю на лимитные заявки или трейлинг заявки. Можно почитать про типы заявок тут. То есть реальная выгода может быть сильно меньше чем мы оценили.
Также не ясно по какой цене реально будут выполняться сделки.
Что дальше
Дальше - буду делать ежедневные прогнозы и совершать сделки вручную чтобы получить представление о заявках, о подводных камнях и необходимых доработках. Для этого надо сделать сервис который будет совершать ежедневные прогнозы. И будет мне присылать например в телеграмм или в другой мессенджер.