Менее 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.