Менее 65 строк.
Эта статья является частью серии статей, описывающих пошаговый процесс создания, тестирования и развертывания торгового бота. Первая статья была посвящена вычислению прогностических переменных, вторая — построению моделей глубокого обучения, а третья — определению прибыльных торговых стратегий с помощью моделей, а последний — о реальной реализации в программе (развертывание). Ссылки даны в конце этой статьи.
Теперь, когда мы создали наши прогностические переменные X и наши выходные данные Y (статья I — [1]), пришло время построить и обучить несколько моделей глубокого обучения для прогнозирования Yиз X. Для этого я покажу, как можно легко построить такую модель на Python, обучить ее и, наконец, оценить ее точность на проверочном наборе. Код также можно легко адаптировать для любого другого формата ввода.
Процесс кратко описан в этой статье, чтобы отобразить самую ключевую информацию. Статья раскладывается следующим образом:
0 — импортировать библиотеки и определять константы
Я — обучение глубоких нейронных сетей
II – Сравните производительность моделей на проверочном наборе
III — Заключение
0 — импортировать библиотеки и определять константы
Самый первый шаг — импортировать библиотеки, (пере)определить наш стоп-лосс/тейк-профит, а также определить наборы основных компонентов, которые мы хотим использовать в наших моделях. Например, в представленном ниже коде мы создадим и подгоним модели глубокого обучения с различным количеством компьютеров от 10 до 40. Затем цель состоит в том, чтобы сравнить их точность в проверочном наборе и, в конечном итоге, выбрать лучший, чтобы создать торговую стратегию (см. статью № III).
Мы помним, что на предыдущих этапах (статья I [1]) мы сохранили наши наборы данных, а также связанные наборы данных после применения масштабирования и PCA. Эти последние называются xxxx_final_xxx.csv, и эти наборы будут использоваться для прогнозов.
Код для загрузки данных и библиотек написан там:
Я — обучение глубоких нейронных сетей
После того, как мы загрузили все данные, следующим шагом будет создание и обучение нескольких моделей глубокого обучения. Я решил построить модели глубокого обучения из-за их впечатляющих характеристик и того факта, что их довольно легко построить с помощью Keras.
Архитектура, которую я разработал, довольно проста и состоит из четырех скрытых слоев. Входной слой имеет размерность nPCs, где nPCs — количество основных компонентов, которые мы используем для конкретной регрессии. Выходной слой имеет сигмоидальную функцию [2] в качестве функции активации, а модель была обучена керасус использованием оптимизатора Адама [3]. бинарная функция кросс-энтропийных потерь [4] и точность в качестве метрики оценки.
Напомним, что ПК упорядочены по рангу важности (т. е. количеству содержащейся в них дисперсии), а это означает, что первые ПК должны нести наиболее важную информацию. Так бывает не всегда, но обычно.
Архитектура моей модели отображается там, где nPCs = 10 в этом конкретном случае:
Код для построения и обучения этих нескольких моделей DL написан там:
II – Сравните производительность моделей на проверочном наборе
После того, как мы построили наши модели, пришло время сравнить их с проверочным набором. Этот шаг важен, потому что здесь мы ранжируем наши модели, и это в конечном итоге определит, какую модель мы будем использовать для потенциальной реальной торговли.
Для этого мы просто загружаем каждую ранее обученную модель, вычисляем прогнозы для проверочного набора и сохраняем все результаты в файле .csv.
Примечание. Поскольку мы стремимся делать ставки только на бычьи тренды, мы оцениваем точностьтолько бычьих прогнозов (т. е. когда модель предсказывает 1 ). Это означает, что точность 46,63 % для nPCs = 10 следует интерпретировать следующим образом: когда модель предсказывала «1», это происходило в 46,63 % случаев.
В нашем примере стоп-лосс = 5%, а тейк-профит = 10%, поэтому априори мы ожидаем точность около 33%. В действительности была следующая пропорция бычьих результатов («результат» = 1) по сравнению с проверочным набором, так как период в целом был довольно оптимистичным:
Результат 46,98 % можно считать хорошим показателем (см. рис. 5). Однако точность полезна только для ранжирования моделей. Кроме того, все наши модели показали лучшие результаты, чем среднее перераспределение на проверочном наборе: это хороший момент, мы работаем лучше, чем торговля вслепую (!).
Затем мы можем взглянуть на сводную таблицу и построить ее. Мы можем заметить, что наилучшая производительность достигается при nPCs = 20:
Ниже приведен код для оценки моделей в наборе проверки:
III — Заключение
После этого шага мы завершили создание, обучение и оценку различных моделей глубокого обучения в наших наборах данных. Мы можем быть полностью уверены в наших результатах, а ранжирование наших моделей позволит нам создать прибыльные стратегии на следующем этапе (статья III — скоро будет).
Мы также можем напомнить, что весь код доступен в [6]. Полная статья, которую я написал о создании продвинутого торгового бота, находится в [7].
Не стесняйтесь оставлять отзывы/вопросы/хлопать или обращаться ко мне за дополнительной информацией.
Контакты: [email protected]
Другие статьи из этой серии:
- "Я. Готовый код Python для создания набора данных для прогнозирования запасов | Себастьян Караро | Аналитика Видья | декабрь 2020 г. | Середина"
- «III. Создание прибыльных торговых стратегий | Себастьян Караро | Аналитика Видья | декабрь 2020 г. | Середина"
- «IV. Разверните торгового бота Poloniex | Себастьян Караро | Аналитика Видья | декабрь 2020 г. | Середина"
Еще одна статья(построение алгоритма ставок на спорт с помощью машинного обучения)«Как Covid-19 помешал мне стать миллионером в 2020 году | Себастьян Караро | Аналитика Видья | декабрь 2020 г. | Середина"
Источники
[1] Первая статья
https://medium.com/analytics-vidhya/i-a-turnkey-python-code-for-creating-a-stock-forecasting-dataset-ad25f673f3b7
[2] Сигмовидная функция
https://www.youtube.com/watch?v=WsFasV46KgQ
[3] Оптимизатор Адама
https://keras.io/api/optimizers/
[4] Бинарная функция кросс-энтропийных потерь
https://gombru.github.io/2018/05/23/cross_entropy_loss/#:~:text=Binary%20Cross-Entropy%20Loss%20Also%20 Called%20Sigmoid%20Cross-Entropy%20loss.,component%20is%20not %20затронутые%20%20другие%20компонент%20значения.
[5] Программное обеспечение, использованное для иллюстрации
[6] Репозиторий GitHub
https://github.com/Seb943/TBpolo
[7] Полная статья
https://seb943.github.io/Data/Paper_CreatingATradingBot.pdf
Используемое программное обеспечение: Python 3.8.5 в Pyzo IDE.