рекомендации

понедельник, 24 февраля 2020 г.

Машинное обучение и его применение на рынке Forex


В последнем посте мы кратко рассмотрели концепцию машинного обучения (ML). В этом посте мы объясним еще несколько терминов ML, а затем сформулируем правила для стратегии форекс, используя алгоритм SVM в R.

Чтобы использовать ML в торговле, мы начнем с исторических данных (цены акций/данные форекс) и добавим индикаторы для построения модели на R/Python/Java. Затем мы выбираем правильный алгоритм машинного обучения для построения прогноза.

Во-первых, давайте рассмотрим некоторые термины, относящиеся к ML.

Алгоритмы машинного обучения. Существует множество алгоритмов ML (список алгоритмов), предназначенных для обучения и прогнозирования данных. Алгоритмы ML могут использоваться либо для прогнозирования категории (проблема классификации), либо для прогнозирования направления и величины (проблема регрессии).

Примеры:

Спрогнозировать цену акции через 3 месяца, основываясь на прошлых квартальных результатах компании.
Предсказать, повысит ли ФРС свою базовую процентную ставку.

Индикаторы/признаки - индикаторы могут включать технические индикаторы (EMA, BBANDS, MACD и т. д.), фундаментальные индикаторы и/или макроэкономические индикаторы.

Пример 1 - RSI (14), цена - SMA (50) и CCI (30). Мы можем использовать эти три показателя для построения нашей модели, а затем использовать соответствующий алгоритм ML для прогнозирования будущих значений.

Пример 2 - RSI (14), RSI (5), RSI (10), цена - SMA (50), цена - SMA (10), CCI (30), CCI (15), CCI (5)

В этом примере мы выбрали 8 показателей. Некоторые из этих показателей могут быть неуместны для нашей модели. Чтобы выбрать правильное подмножество индикаторов, мы используем методы выбора признаков.

Выбор признаков - это процесс выбора подмножества соответствующих признаков для использования в модели. Методы выбора признаков подразделяются на 3 широкие категории: методы фильтрации, методы на основе обертки и встроенные методы. Чтобы выбрать правильное подмножество, мы в основном используем алгоритм ML в некоторой комбинации. Выбранные признаки известны в машинном обучении как предикторы.



Машина опорных векторов (SVM). SVM является хорошо известным алгоритмом для машинного обучения с учителем и используется для решения как задач классификации, так и регрессии.

Алгоритм SVM работает с заданными помеченными точками данных и разделяет их с помощью границы или гиперплоскости. SVM пытается максимизировать запас вокруг разделяющей гиперплоскости. Опорные векторы - это точки данных, которые находятся ближе всего к поверхности принятия решения.



Правила разработки стратегии форекс с использованием SVM в R.

Учитывая наше понимание признаков и SVM, давайте начнем с кода в R. Мы выбрали валютную пару EUR/USD с 1-часовым периодом, начиная с 2010 года. Используемые индикаторы здесь MACD (12, 26, 9) и Parabolic SAR с настройками по умолчанию (0,02, 0,2).

Сначала мы загружаем необходимые библиотеки в R, а затем читаем данные EUR/USD. Затем мы вычисляем MACD и Parabolic SAR, используя соответствующие функции, доступные в пакете «TTR». Чтобы вычислить тренд, мы вычитаем цену закрытия EUR/USD из значения SAR для каждой точки данных. Мы делаем лаг значениям индикатора, чтобы избежать смещения в будущее. Мы также создаем классы Up/down на основе изменения цены.


После этого мы объединяем индикаторы и класс в один фрейм данных, который называется данными модели. Данные модели затем делятся на обучающие и тестовые данные.


Затем мы используем функцию SVM из пакета «e1071» и обучаем данные. Мы делаем прогнозы, используя функцию predict, а также строим график. Здесь мы получаем точность 53% .


На графике мы видим две отчетливые области: верхнюю большую область красного цвета, где алгоритм предсказывал продажи, и нижнюю меньшую область синим цветом, где она где прогнозировались покупки.


Индикатор SAR отслеживает цену, поскольку тренд расширяется с течением времени. SAR ниже цен, когда цены растут, и выше цен, когда цены падают. SAR останавливается и разворачивается, когда ценовой тренд разворачивается и прорывается выше или ниже его. Нас интересует пересечение цены и SAR, и, следовательно, мы принимаем меру тренда в коде как разницу между ценой и SAR. Точно так же мы используем значения гистограммы MACD, которые являются разницей между значениями линии MACD и сигнальной линии.

Глядя на график, мы формируем наши два правила и проверяем их на тестовых данных.

Short rule = (Price–SAR) > -0.0025 & (Price – SAR) < 0.0100 & MACD > -0.0010 & MACD < 0.0010
Long rule = (Price–SAR) > -0.0150 & (Price – SAR) < -0.0050 & MACD > -0.0005


Мы получили точность 54% для наших коротких сделок и точность 50% для длинных сделок. Алгоритм SVM, кажется, делает здесь хорошую работу. Мы остановимся на этом, и в нашем следующем посте по машинному обучению мы увидим, как сформулированные правила, подобные разработанным выше, могут быть закодированы и протестированы для проверки жизнеспособности торговой стратегии.

Комментариев нет:

Отправка комментария