Использование машинного обучения для создания торговой стратегии
Используйте Python и chatGPT для построения инновационных торговых стратегий
Мы хотим использовать машинное обучение для извлечения информации о будущих изменениях цены Bitcoin из данных о финансировании и объеме торгов, а также разработать прибыльную торговую стратегию.
Для этого мы будем использовать Python, sklearn и chatGPT. Код доступен на моем github.
Мы начнем с импорта всех соотвествующих модулей.
Мы импортируем цену и данные о финансировании из файла csv и рассчитываем дельту объема и процентную доходность.
Мы используем библиотеку sklearn для применения метода машинного обучения с использованием дерева решений. Для данной цели выбираем объем, ставку финансирования и дельту объема в качестве матрицы характеристик и сохраняем их в датафрейме под названием Х. Наша целевая переменная равна 1, если данный текущий период времени дал положительный результат, и 0 в противном случае. Мы применяем разделение данных на обучающую и тестовую выборки в соотношении 80/20 и подгоняем их под дерево решений с максимальной глубиной 3. И последнее, но не менее важное: мы распечатываем и показываем график дерева решений. Этот код был адаптирован из кода, сгенерированного chatGPT, по следующему запросу:
" Как написать код для дерева решений из датафрейма pandas”
Мы видим, что третий лист слева обладает хорошей прогностической способностью – 70 выборок с положительным результатом из 114 выборок, или около 61%. Поэтому мы реализуем торговую стратегию с параметрами принятия решения, приводящими к этому результату, которые являются:
1. Дельта объема больше, чем -4950,871
2. Ставка финансирования меньше -0,003
Мы вычисляем новый столбец датафрейма, содержащий сигналы на покупку, где 1 означает покупку, а 0 означает отсутствие покупки на текущей свече. Мы предполагаем, что будем удерживать позицию ровно в течение одной свечи, поэтому доходность по одной сделке будет равна цене открытия минус цена закрытия свечи, на которой возникает сигнал. Мы строим данные ohlc на свечном графике с помощью plotly и указываем сигналы на покупку синими стрелками на графике.
Мы видим, как при разворотах вниз и параболических движениях вверх генерируется мало сигналов. Большинство сигналов поступает при умеренных восходящих движениях или колебаниях рынков.
Синими стрелками отмечены торговые операции на тестовых данных (изображение создано автором)
Мы вычисляем кривую капитала нашей стратегии путем суммирования всех доходностей свечей, по которым наш алгоритм подал сигнал на покупку. Этот код был адаптирован из кода, сгенерированного chatGPT, по следующему запросу:
“Если у меня есть датафрейм со столбцом, который содержит сигналы на покупку для торговой стратегии, где 1 означает "покупать", а 0 означает "ничего не делать", и у меня есть второй столбец, содержащий процент доходности за этот период. Как я могу рассчитать кривую капитала для этой торговой стратегии и записать ее в третью колонку."
Стратегия принесла бы доход в размере 24,39% за данный период времени, указанный в тестовых данных.
Результирующая кривая капитала по тестовым данным (изображение создано автором)
Мы можем вычислить следующие показатели производительности:
Хотя максимальная просадка более чем на -22,80% может показаться большой, на крипторынках это вовсе не редкость.
Коэффициенты Шарпа и Сортино составляют 3,83 и 6,55, что, несомненно, является выдающимся показателем.
Не забудьте получить код с моего github, и желаю вам счастливой торговли.
Перевод подготовлен каналом Crypto_Track.
Поблагодарить за перевод, можно подписавшись на канал Crypto_Track.