Торговый агент для биткойнов на основе глубокого обучения с подкреплением, использующий сеть DeepSense для аппроксимации Q-функции.
Полную информацию о наборе данных, предварительной обработке, сетевой архитектуре и реализации можно найти в Wiki этого репозитория.
Чтобы настроить виртуальную машину Ubuntu со всеми зависимостями для запуска кода, обратитесь к assets/vm
.
Извлеките готовый образ докера прямо из хаба докеров и запустите его как
docker pull samre12/deep-trading-agent:latest
docker run -p 6006:6006 -it samre12/deep-trading-agent:latest
ИЛИ
Создайте образ докера локально, выполнив команду и запустив образ как
docker build -t deep-trading-agent .
docker run -p 6006:6006 -it deep-trading-agent
Это настроит репозиторий для обучения агента и
смонтируйте текущий каталог в /deep-trading-agent
в контейнере
Во время создания образа извлекается и отбирается последняя история транзакций с биржи для создания поминутного набора данных о ценах на биткойны. Этот набор данных размещен в /deep-trading-agent/data/btc.csv
чтобы начать обучение агента, укажите подходящие параметры в файле конфигурации (пример файла конфигурации доступен по адресу /deep-trading-agent/code/config/config.cfg
) и запустите код, используя /deep-trading-agent/code/main.py
обучение поддерживает ведение журнала и мониторинг через Tensorboard
vim
и screen
устанавливаются в контейнер для редактирования файлов конфигурации и запуска tensorboard
привяжите порт 6006 контейнера к 6006 хост-машины для мониторинга обучения с помощью Tensorboard
Пожалуйста, дайте этому репозиторию поддержку проекта?
Preprocessor
вдохновлен Deep Q-Trading, где они решают упрощенную торговую задачу для одного актива.
Для каждой торговой единицы разрешено только одно из трех действий: нейтральное(1), длинное(2) и короткое(3) и вознаграждение получается в зависимости от текущей позиции агента. Агент Deep Q-Learning обучен максимизировать общую накопленную награду.
Текущая модель Deep Q-Trading модифицирована с использованием архитектуры Deep Sense для аппроксимации функции Q.
Поминутная серия биткойнов получается путем изменения процедуры, упомянутой в этом репозитории. Транзакции на бирже Coinbase отбираются для создания ценового ряда биткойнов.
Обратитесь к assets/dataset
чтобы загрузить набор данных.
Базовая предварительная обработка
Полностью игнорируйте пропущенные значения, удаляйте их из набора данных и накапливайте блоки непрерывных значений, используя временные метки цен.
Все накопленные блоки с количеством временных меток меньше общей длины истории состояния и горизонта агента затем отфильтровываются, поскольку их нельзя использовать для обучения агента.
В текущей реализации цены на биткойны за последние 3 часа (180 минут) используются для создания представления текущего состояния агента.
Ниже приведены журналы, созданные при предварительной обработке набора данных с существующим набором данных (на момент написания):
INFO:root:Number of blocks of continuous prices found are 58863
INFO:root:Number of usable blocks obtained from the dataset are 887
INFO:root:Number of distinct episodes for the current configuration are 558471
Расширенная предварительная обработка
Обрабатывайте пропущенные значения и объединяйте более мелкие блоки, чтобы увеличить размеры непрерывных блоков цен.
Стандартный метод заполнения недостающих значений, который не сильно влияет на производительность модели, заключается в использовании экспоненциального заполнения без затухания.
(Будет реализовано)
Версия Tensorflow «1.1.0» используется для реализации сети Deep Sense .
Реализация адаптирована из этого репозитория Github с некоторыми упрощениями в сетевой архитектуре, чтобы включить обучение на одном временном ряду данных Биткойн.
Реализация и предварительная обработка вдохновлены этой публикацией на Medium. Фактическая реализация Deep Q Network адаптирована из DQN-tensorflow.