Pull to refresh
0
SAP
Лидер рынка корпоративных приложений

Как предсказать курс рубля к доллару при помощи SAP Predictive Analytics

Reading time10 min
Views4.7K
SAP в последние годы сфокусировалась на развитии машинного обучения, обработки больших данных и развитии интернета вещей. Это три важнейших технологических направления, которые компания развивает в своих решениях. SAP работает не только над развитием инструментом, но и на применении этих технологий на практике. Наличие большого числа клиентов, автоматизировавших свои бизнес-процесса на продуктах SAP, позволяет анализировать клиентские потребности комплексно, предлагать новые подходы в использовании клиентских данных для увеличения эффективности бизнес-процессов.

Давайте посмотрим, как выглядит анализ данных с использованием инструмента предиктивной аналитики от SAP.



Попробуем применить настольную версию SAP Predictive Analytics для анализа курса рубля по отношению к доллару. Попытки такого анализа делались неоднократно и с использованием различного инструментария. Но это не мешает повторить анализ еще раз на новом инструментарии, чтобы продемонстрировать возможности этого решения.

image
Рис. 1 Данные торговых котировок. Информация загружена с сайта Финам

Данные имеют 15-минутную гранулярность. Open, High, Low, Close, соответственно цена начала 15-минутного интервала, максимальная цена за промежуток времени, минимальная цена и цена закрытия. Значение Volume – это объем торгов.
Для моделирования были загружены данные за год и имеют более 14 тыс. строк.

Подготовка данных

Можно просто загрузить временной ряд в инструмент анализа данных, но без предварительной обработки данных полученная модель будет невысокого качества. При подготовке данных необходимо выполнение двух этапов обработки. Первый этап — это Data Engineering, то есть сбор, понимание, очистка и первоначальная обработка данных. Второй этап — Feature Engineering, формирование описательных признаков к данным, с информацией о различных аспектах поведения объекта, модель которого строится. С точки зрения методологии CRISP-DM эти этапы аналогичны Data Understanding и Data Preparation.

image
Рис. 2 Шаги методологии CRISP-DM с возможными направлениями перехода между этапами

Визуализация информации о котировках имеет форму коротких штрихов, размер и положение которых отражает то, как двигалась цена за указанный промежуток времени.

image
Рис. 3 Так выглядит визуализация ценового ряда (верхний график). Красные линии – экспоненциальное сглаживание. Другие три графика – отображают изменение различных индикаторов технического анализа

Что будем предсказывать? Ценовой ряд содержит много шума. Для того, чтобы увидеть достаточно сильное изменение цены, необходимо подождать несколько часов. Поэтому предсказание того, куда двинется цена в следующие 15 минут, имеет мало смысла. Полезный сигнал утонет в шуме. Что же делать?

Специалисты по техническому анализу придумали индикатор ZigZag. Он показывает то, как надо было торговать, чтобы получить максимальную прибыль. Это похоже на Грааль, но для того, чтобы его рассчитать, необходимо знать будущее изменение цены. Выглядит он примерно так:

image
Рис. 4 Индикатор ZigZag. Линия проводится между крайними точками изменения цен

Хотя с точки зрения торговли ZigZag бесполезен, но он может дать информацию о том, как надо было торговать в прошлом. Также он используется для генерации целевого ряда. Если цена росла, то значение целевой функции в этот отрезок времени принимает 1, если снижалась, то 0. В результате получается разметка для временного ряда цен.

Дополнительно к цене можно вычислить набор значений индикаторов технического анализа. К примеру, простое скользящее среднее SMA14 усредняет цену последних 14-ти отсчетов. И отношение текущей цены к скользящему среднему показывает то, выше или ниже находится текущая цена в отношении средних 14-ти отсчетов.

Детальное описание различных индикаторов оставим за рамками этой статьи – это отдельная предметная область. Более детальное погружение в эту тему можно начать отсюда.

Если обобщить, то индикаторы Технического анализа – это цифровые фильтры, накладываемые на временной ряд. Вычисление значений индикаторов технического анализа для ряда цен рубля выполнено при помощи языка R, где присутствует библиотека для расчета индикаторов технического анализа. Кроме того, аналогичную информацию позволяют получить платформы для проведения технического анализа. Процесс расчета значений индикаторов также опустим. Детально описание этого процесса можно найти в этой статье

В результате подготовки и обработки получен следующий набор значений индикаторов технического анализа.

Input Техническое имя Индикатор технического анализа
I01 EMA5Cross Пересечение EMA5 и цены открытия
I02 EMA17Cross Пересечение EMA17 и цены открытия
I03 EMA5_17Cross Пересечение EMA17 и EMA5
I04 VolumeROC1 Rate of Change / Momentum
I05 CCI12 Commodity Channel Index 12
I06 MFI14 Money Flow Index 14
I07 MOM Momentum 3 / Rate of Change
I08 Lag1 Движение цены на текущем баре (1)
I09 Lag2 Движение цены на текущем баре (2)
I10 Lag3 Движение цены на текущем баре (3)
I11 Lag4 Движение цены на текущем баре (4)
I12 Lag5 Движение цены на текущем баре (5)
I13 fastK Stochastic Fast %K
I14 fastD Stochastic Fast %D
I15 slowD Stochastic Slow %D
I16 stochWPR William's %R
I17 RSI14 Relative Strength Index (open) 14
I18 williamsAD Williams Accumulation / Distribution
I19 WPR William's %R 14
I20 AO (Awesome Oscillator, AO) SMA5 — SMA34
I21 AC AO сглаженный 5-периодной средней AO — SMA(AO, 5)
I22 MACD EMA12 — EMA26
I23 MACD_SMA9 MACD сглаженный 9-периодной скользящей MACD- SMA(MACD, 9)
I24 DIp The positive Direction Index
I25 DIn The negative Direction Index.
I26 DX The Direction Index
I27 ADX The Average Direction Index (trend strength)
I28 ar aroon(HL, n) — 1 out (oscillator)
I29 chv16 Chaikin Volatility — chaikinVolatility (HLC,n) — 1 out
I30 cmo16 Chande Momentum Oscillator — CMO(Med, n) — 1 out
I31 macd12_26 MACD Oscillator 12, 26, 9
I32 osma Moving Average of Oscillator
I33 rsi16 Relative Strength Index med 16
I34 fastK14_3_3 Stochastic Oscillator 14 3 3 fastK
I35 fastD14_3_3 Stochastic Oscillator 14 3 3 fastD
I36 slowD14_3_3 Stochastic Oscillator 14 3 3 slowD
I37 smi13_2SMI Stochastic Momentum Index SMI 13 2
I38 smi13_2signal Stochastic Momentum Index signal 13 2
I39 vol16 Volatility 16
I40 SMA24Cross Логарифм отношения цены открытия и SMA24
I41 SMA60Cross Логарифм отношения цены открытия и SMA60
I42 SMA24_60Cross Логарифм отношения SMA24 и SMA60
I43 SMA24Trand Логарифм отношения SMA24 по сравнению с предыдущим значением
I44 SMA60Trand Логарифм отношения SMA24 по сравнению с предыдущим значением
I45 MOM24 Momentum 24 / Rate of Change
I46 MOM60 Momentum 60 / Rate of Change
PCA PC1-PC16 Сжатие признаков I01-I46 методом главных компонент в 16 значений

Таблица 1.
Перечень индикаторов технического анализа, рассчитанных для задачи предсказания валютного курса

Пусть вас не пугает цифра в 62 рассчитанные величины. В реальных задачах автоматически могут генерироваться сотни и даже тысячи признаков. Для современных методов машинного обучения их число становится не важным. Для каждого признака автоматически рассчитывается значимость – достоверность того, что изменение величины влияет на прогноз целевой переменной.

Отбор признаков

Неотъемлемой частью начальных этапов процесса машинного обучения является отбор признаков (feature selection), т.е. переменных, на основе которых обучается модель. Отбор может осуществляться с помощью различных инструментов, а также зависеть от множества факторов, например, таких как корреляция признаков с целевой переменной, или качество данных. Следующим (и более продвинутым) шагом может стать создание новых признаков на основе уже имеющихся, т.н. feature engineering — инжиниринг, создание признаков. Эта операция может позволить улучшить качество модели, одновременно получив более полное объяснение данных, в случае если модель интерпретируемая. В нашем случае первым этапом построения модели в SAP Predictive Analytics стало создание новых признаков при помощи встроенного решения Data Manager.

В подготовленном наборе данных имеются показатели индикаторов, которые влияют на целевую переменную в текущий момент времени. Однако, можно получить дополнительную информацию, если установить влияние этих индикаторов за определенный период до текущего момента. В нашем случае были выбраны временные интервалы: за 1 час и за 1 день до текущего момента во времени и созданы новые переменные с учетом этого «временного лага». Еще более информативной может оказаться степень изменения индикаторов от момента в прошлом до текущего момента. В качестве метода был выбран натуральный логарифм частного текущих индикаторов и индикаторов с временным лагом 1 час и 2 дня. Таким образом, удалось получить степень изменения индикатора от момента в прошлом (увеличился он или уменьшился), и если да, то насколько.

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

Реализация в Data Manager

На вкладке Data Manager создается новая манипуляция данными.

image
Рис. 5 Интерфейс выбора модели SAP Predictive Analytics

После загрузки заранее сформированного набора данных к названию предикторов был добавлен префикс “NOW” (Rename -> Add Prefix) — таким образом мы маркируем предикторы на текущий момент времени.

image
Рис. 6 Переименование переменных для упрощения последующих манипуляций

Чтобы создать временную задержку, сгенерируем новые переменные “date_MIN1HR” и “date_MIN1DAY” с соответствующей зависимостью от переменной “date”. Используется expression editor:
image
Рис. 7 Создание нового выражения в Data Manipulation Editor

В Expression Editor добавляется функция сдвига даты по часам (для второй переменной — по дням), для каждой из которых выставляется зависимое поле “date” (от которого идет вычисление), а также параметр “-1”, т.к. нас интересует прошлое.

image
Рис. 8 Созданная переменная со сдвинутой датой

После создания этих переменных они появляются в полях:
image
Рис. 9 Вычисляемые поля с датой стали доступны в общем списке переменных

Можно наглядно видеть зависимость на наборе данных:
image
Рис. 10 Визуализация сдвижки времени в 1 час и в 1 сутки

Далее поля таблицы (индикаторы) присоединяются к этой же таблице, при этом ключевым полем каждой присоединяемой таблицы является поле даты со смещением. Проводится 2 join’a: предикторов со сдвигом на 1 час назад и на 1 день назад с помощью функции “Merge”:
image
Рис. 11 Генерация соединения наборов данных с разным сдвигом по времени

Соответствующим полям при присоединении таблицы, были присвоены префиксы (“MIN1HR” и “MIN1DAY”):

image
Рис. 12 Сформированный список признаков после объединения по времени

Стоит отметить источник происхождения переменных (Колонка “Source”). И сопоставить эти значения со значениями в окне “Merge”. Переменные из источника “CST0009USDRUB2_1” присоединены по полю «date_MIN1HR» и имеют префикс «MIN1HR», что корректно.

Для создания тренда изменений переменных за разные периоды времени, необходимо взять натуральный логарифм из отношения текущего значения индикатора к его прошлому значению. С помощью expression editor выстраивается следующая зависимость:

image
Рис. 13 Определение групповой логарифмической функции для отношения изменения величин во времени

Где функция ln – натуральный логарифм от отношения текущего значения всех предикторов к их значению 1 час назад. Таким образом, символы «@» и «$» на рисунке выше являются подстановочными знаками, обозначающими конец названия переменной после префикса. Эта функция сохраняет большое количество времени, автоматически сопоставляя пары предикторов и создавая 69 новых переменных (69=кол-во предикторов с префиксом):

image
Рис. 14 Сообщение об успешности очередного шага генерирования новых признаков

Важно указать, что необходимо сопоставлять предикторы «По значению» таким образом, чтобы значение конкретного предиктора было правильно сопоставлено со значением этого же предиктора 1 час назад:

image
Рис. 15 Необходимая настройка для успешного сопоставления признаков

В результате получился набор дополнительных переменных, которые были использованы при построении модели.

Пример: переменная «P1|25» на текущий момент, 1 час назад, 1 день назад, и тренд (отношение текущего значения к значению 1 час и 1 день назад):
image
Рис. 16 В результате манипуляций в SAP Predictive Analytic созданы дополнительные признаки к первоначальному значению переменной

Построение модели

Была построена стандартная модель в SAP Predictive Analytics. Степень многочлена гребневой регрессии = 1, автоматический выбор переменных включен. Результат модели следующий:

image
Рис. 17 Базовые статистики рассчитанной модели

Из 345 переменных в конечном уравнении с наименьшей ошибкой была оставлена 91 переменная. Лучшая итерация отбора переменных — номер 7. Финальная прогностическая сила модели = 0.7209, робастность (устойчивость результата к новым наборам данных) = 0.9704. Это означает, что модель качественная и устойчивая.

Диаграмма степени влияния переменных в модели представлена на Рис.18. Чем выше предиктор в списке, тем он более значимый при принятии решения конечной моделью.

image
Рис. 18 Значимость предикторов для итоговой модели. 37-й базовый предиктор «Stochastic Momentum Index SMI 13 2» имеет наибольшую прогностическую силу.

В предикторах можно видеть, как индикаторы на текущий момент (префикс NOW), так и индикаторы за 1 час и 1 день до текущего момента (префиксы MIN1HR и MIN1DAY), а также тренд изменения показателя (префикс LOGRATIO).

Например, показатель P1|25 оказывает наибольшее влияние за 1 час до текущего наблюдения (3й сверху). Тогда как его текущее значение не так важно (см. NOW_P1|25). Также имеет значение, хоть и не слишком высокое, отношение текущего показателя P1|25 к нему же 1 день назад (LOGRATIO_NOW_MIN1DAY__P1|25).

Наиболее значимым является показатель P1|37 на текущий момент времени.
Predictive Analytics автоматически разделяет объясняющие переменные на категории (помещает значения непрерывной переменной в рамки интервалов, т.н. “binning”) и строит график влияния этих категорий на целевую переменную. В данном случае видно, что наибольшее влияние на целевую переменную на текущий момент времени индикатор P1|37 оказывает, находясь в интервале от 33.39 до 67.97, а наименьшее – на интервале от -26.6 до -10.7.

image
Рис. 19 Сила влияния различных диапазонов величин признака на целевую переменную

Рассматривая другую переменную, степень изменения индикатора P1|25, становится ясно, что при снижении индикатора по отношению ко вчерашнему значению (отрицательный логарифм, категория от -2.29 до -0.47) растет влияние на целевую переменную. Если же индикатор показывал рост, влияние снижается.

image
Рис. 20 Еще один пример анализа значений признака по диапазонам

Вместо заключения

В статье были продемонстрированы подходы к анализу данных и возможности SAP Predictive Analytics для анализа рыночных данных. Высокий уровень автоматизации и простота интерпретации позволяют не только создать качественную модель, но и объяснить причины наступления события, а также конкретные диапазоны влияющих переменных.

Предиктивная аналитика находится на стыке хранилищ данных, бизнес-задач и математики. Синергия этих направлений позволяет по-новому взглянуть на уже привычные и устоявшиеся бизнес процессы. Как правило, они были построены на основе представлений человека о влияющих на процесс факторов. Но человек может проанализировать без применения специальных средств лишь небольшое число самых значимых факторов. Искусственный интеллект может создать модель с гораздо большим числом значимых факторов. Это позволяет точнее выявлять влияние и предсказывать развитие событий.

Авторы статьи — Андрей Ржаксинский и Павел Соломеин. Андрей Ржаксинский занимается хранилищами данных, прогнозной аналитикой, анализом клиентской активности, работает в команде SAP Analytics & Insights. Павел Соломеин — консультант по прогнозной аналитике в подразделении SAP Digital Business Services.
Tags:
Hubs:
+1
Comments6

Articles

Information

Website
sap.com
Registered
Founded
Employees
5,001–10,000 employees
Location
Германия