Машинное обучение — один из самых популярных подходов в области искусственного интеллекта. За последнее десятилетие машинное обучение стало одной из неотъемлемых частей нашей жизни. Он реализован в задаче, такой простой, как распознавание человеческого почерка, или такой сложной, как самоуправляемые автомобили. Также ожидается, что через пару десятилетий более механическая повторяющаяся задача будет решена. С увеличением объемов доступных данных есть все основания полагать, что машинное обучение станет еще более распространенным в качестве необходимого элемента технического прогресса. Есть много ключевых отраслей, в которых машинное обучение оказывает огромное влияние: финансовые услуги, доставка, маркетинг и продажи, здравоохранение и многие другие. Однако здесь мы обсудим реализацию и использование Машинного обучения в трейдинге.

В этом блоге мы дадим вам обзор алгоритма K-ближайших соседей (KNN) и разберем пошаговую реализацию торговой стратегии с использованием K-ближайших соседей в Python.

K-ближайшие соседи (KNN) — один из самых простых алгоритмов, используемых в машинном обучении. Алгоритмы KNN используют данные и классифицируют новые точки данных на основе мер подобия (например, функция расстояния). Классификация производится большинством голосов соседям. Данные присваиваются классу, который имеет наибольшее количество ближайших соседей. По мере увеличения числа ближайших соседей может увеличиться значение k.

Теперь давайте разберемся с реализацией K-ближайших соседей в Python при создании торговой стратегии.

1. Импортируйте библиотеки

Начнем с импорта необходимых библиотек. Мы импортируем библиотеки pandas, чтобы использовать возможности его мощного фрейма данных. Мы импортируем библиотеки numpy для научных расчетов. Далее мы импортируем библиотеку matplotlib.pyplot для построения графика. Мы импортируем две библиотеки машинного обучения KNeighborsClassifier из sklearn.neighbors, чтобы реализовать голосование k-ближайших соседей и точность_оценки из sklearn.metrics для оценки точности классификации. Мы также импортируем пакет fix_yahoo_finance для получения данных из Yahoo.

2. Получить данные

Мы будем получать данные S&P 500 от Yahoo Finance, используя «pandas_datareader». Мы сохраняем это во фрейме данных «df». После этого мы удалим все недостающие значения из данных с помощью функции «dropna» и напечатаем первые пять строк столбца «Открыть», «Высокий», «Низкий», «Закрыть».

Вывод:

3. Определите переменную-предиктор

Переменная-предиктор, также известная как независимая переменная, используется для определения значения целевой переменной. Мы используем «Открытие-Закрытие» и «Максимум-Минимум» в качестве переменной-предиктора. Мы отбросим значения NaN и сохраним переменные-предикторы в «X».

Вывод:

4. Определите целевые переменные

Целевая переменная, также известная как зависимая переменная, — это переменная, значения которой должны быть предсказаны переменными-предикторами. В этом случае целевой переменной является то, будет ли цена S&P 500 закрываться вверх или вниз в следующий торговый день. Логика заключается в том, что если завтрашняя цена закрытия больше сегодняшней цены закрытия, то мы будем покупать S&P 500, иначе мы будем продавать S&P 500. Мы будем хранить +1 для сигнала покупки и -1 для сигнала продажи. Мы будем хранить целевую переменную в переменной «Y».

5. Разделите набор данных

Теперь мы разделим набор данных на набор обучающих данных и набор тестовых данных. Мы будем использовать 70% наших данных для обучения, а остальные 20% — для тестирования. Для этого мы создадим параметр разделения, который разделит кадр данных в соотношении 70–30. Вы можете изменить процент разделения по своему выбору, но для получения хороших результатов рекомендуется предоставить не менее 60% данных в качестве данных обучения.

«X_train» и «Y_train» — это набор данных поезда. «X_test» и «Y_test» — это набор тестовых данных.

Для создания экземпляра модели KNN и создания торговой стратегии с использованием модели вы можете перейти по ссылке.

Торговая стратегия с использованием KNN