/made-ml-hw4

Bitcoin prediction one-pager App

Primary LanguagePython

made-ml-hw4

Домашнее задание по курсу Машинное обучение Академии больших данных MADE

Команда разработчиков:

Группа Гитхаб Роль в проекте
Авилов Илья DS-11 https://github.com/Ilya2567 DS, Frontend
Дякин Николай ML-11 https://github.com/nickdndev DS, Frontend
Мунин Евгений ML-12 https://github.com/EvgeniiMunin DS, ML, Frontend
Орхан Гаджилы DS-12 https://github.com/Fianketto DS, PM
Стариков Андрей ML-12 https://github.com/andyst75 ML, DevOps

Демоверсия проекта

Тема проекта: Предсказание валютных котировок

Постановка бизнес задачи

В условиях постоянной торговли на валютной бирже трейдерам приходится иметь дело с валютами, котировки которых могут с определенной точностью поддаваться прогнозированию. В качестве бизнес задачи для нашей демонстрации выбрано извлечение прибыли в краткосрочный период за счет изменений курсов валютных пар.

Вследствие того, что торги на динамичном рынке сопряжены с более высокими рисками и потерями, наше внимание акцентировалось на спокойном рынке (без частых и/или сильных выбросов).

Предоставляемый продукт в качестве прогноза будет указывать на направление рынка в будущем (рост или снижение стоимости одной валюты по отношению к другой валюте), тем самым оказывая помощь трейдеру в принятии решения.

Математическая постановка задачи

Описание выбранной модели

Поскольку данные представляют собой временные ряды, а поставленной задачей является интервальное предсказание на несколько дней вперед целевой величины цены закрытия валютной пары (Multi Input Single Output Multi Step), будет правильным использовать методы, использующие скользящие окна и признаки в ближайшем прошлом. Модели-кандидаты для оптимизации были разбиты на 4 категории:

  • Наивный метод скользящей средней в качестве референса
  • Модель линейной регрессии для получения рабочего бейзлайна, которая быстро обучается и оптимизируется
  • Модель бустинга на фичах из предыдущего пункта
  • Более сложная LSTM сеть для проверки того, какой прирост в качестве предсказаний нам даст усложнение модели

В качестве итоговых моделей, которые можно выбрать для предсказания направления рынка, оставлены LSTM и линейная регрессия. Данные для обучения и валидации взяты из открытых источников. Обучение проводилось на данных за максимальное количество дней, которое позволяет выгрузить сервис (2000 дней).

Поля, использованные в моделях:

  • high
  • low
  • start
  • volumefrom (только для LSTM)
  • volumeto (только для LSTM)
  • close - TARGET

В качестве референсной пары, относительно которой валидировалась модель, бралась пара BTC-USD (биткоин - доллар США).

В связи с тем, что рассматриваются только спокойные рынки, для валидации модели была использована метрика MAE, которая менее чувствительна к выбросам по сравнению с MSE. Использованная метрика позволяет наглядно интерпретировать полученные прогнозы в рамках бизнеса, т.к. имеет размерность искомой валюты.

Результаты по валидации обученных моделей

Model MAE val
Naive model: Moving average (40 days) 1355
Linear Regression + Lag features (40 days) 704
XGBRegressor 2173
LSTM + Sliding window (40 days) 1949

Заключения по тестированию моделей

  • Точность модели скользящего среднего является хорошим ориентиром для валидации более сложных моделей, который сложно перебить.
  • Наилучший результат показа модель линейной регрессии с применением лаговых признаков, построенных из целевой переменной курса закрытия пары валют.
  • Усложнение архитектуры модели не приводит к улучшению по сравнению с линейной моделью.

Визуализация результатов работы модели

В качестве фреймворка для демонстрации результатов работы был выбран Streamlit который предоставляет широкие возможности по визуализации табличных данных.

Описание интерфейса

dashboard

  • В центре экрана представлен график для валютной пары: красным цветом обозначены исторические значения котировки за предудыщие 200 дней, синим цветом показаны предсказания исторических значений, точки обозначают предсказания в будущем. Серая закрашенная область отвечает за интервал между максимальной и минимальной ценой в течении дня.
  • В колонке слева имеются:
    • выпадающее меню с возможностью выбора валютной пары
    • слайдер для выбора количества дней предсказания в будущем 1..3
    • календарь дня выбора даты 1го дня предсказания
    • выпадающее меню для выбора модели
  • Также, по ссылке внизу возможно выгрузить исторические данные в формате .csv