Как предсказать курс рубля к доллару при помощи sap predictive analytics
SAP в последние годы сфокусировалась на развитии машинного обучения, обработки больших данных и развитии интернета вещей. Это три важнейших технологических направления, которые компания развивает в своих решениях. SAP работает не только над развитием инструментом, но и на применении этих технологий на практике. Наличие большого числа клиентов, автоматизировавших свои бизнес-процесса на продуктах SAP, позволяет анализировать клиентские потребности комплексно, предлагать новые подходы в использовании клиентских данных для увеличения эффективности бизнес-процессов.
Давайте посмотрим, как выглядит анализ данных с использованием инструмента предиктивной аналитики от SAP.
Попробуем применить настольную версию SAP Predictive Analytics для анализа курса рубля по отношению к доллару. Попытки такого анализа делались неоднократно и с использованием различного инструментария. Но это не мешает повторить анализ еще раз на новом инструментарии, чтобы продемонстрировать возможности этого решения.
Рис. 1Данные торговых котировок. Информация загружена с сайта Финам
Данные имеют 15-минутную гранулярность. Open, High, Low, Close, соответственно цена начала 15-минутного интервала, максимальная цена за промежуток времени, минимальная цена и цена закрытия. Значение Volume – это объем торгов.
Для моделирования были загружены данные за год и имеют более 14 тыс. строк.
Подготовка данных
Можно просто загрузить временной ряд в инструмент анализа данных, но без предварительной обработки данных полученная модель будет невысокого качества. При подготовке данных необходимо выполнение двух этапов обработки. Первый этап — это Data Engineering, то есть сбор, понимание, очистка и первоначальная обработка данных. Второй этап — Feature Engineering, формирование описательных признаков к данным, с информацией о различных аспектах поведения объекта, модель которого строится. С точки зрения методологии CRISP-DM эти этапы аналогичны Data Understanding и Data Preparation.
Рис. 2Шаги методологии CRISP-DM с возможными направлениями перехода между этапами
Визуализация информации о котировках имеет форму коротких штрихов, размер и положение которых отражает то, как двигалась цена за указанный промежуток времени.
Рис. 3Так выглядит визуализация ценового ряда (верхний график). Красные линии – экспоненциальное сглаживание. Другие три графика – отображают изменение различных индикаторов технического анализа
Что будем предсказывать? Ценовой ряд содержит много шума. Для того, чтобы увидеть достаточно сильное изменение цены, необходимо подождать несколько часов. Поэтому предсказание того, куда двинется цена в следующие 15 минут, имеет мало смысла. Полезный сигнал утонет в шуме. Что же делать?
Специалисты по техническому анализу придумали индикатор ZigZag. Он показывает то, как надо было торговать, чтобы получить максимальную прибыль. Это похоже на Грааль, но для того, чтобы его рассчитать, необходимо знать будущее изменение цены. Выглядит он примерно так:
Рис. 4Индикатор ZigZag. Линия проводится между крайними точками изменения цен
Хотя с точки зрения торговли ZigZag бесполезен, но он может дать информацию о том, как надо было торговать в прошлом. Также он используется для генерации целевого ряда. Если цена росла, то значение целевой функции в этот отрезок времени принимает 1, если снижалась, то 0. В результате получается разметка для временного ряда цен.
Дополнительно к цене можно вычислить набор значений индикаторов технического анализа. К примеру, простое скользящее среднее SMA14 усредняет цену последних 14-ти отсчетов. И отношение текущей цены к скользящему среднему показывает то, выше или ниже находится текущая цена в отношении средних 14-ти отсчетов.
Детальное описание различных индикаторов оставим за рамками этой статьи – это отдельная предметная область. Более детальное погружение в эту тему можно начать отсюда.
Если обобщить, то индикаторы Технического анализа – это цифровые фильтры, накладываемые на временной ряд. Вычисление значений индикаторов технического анализа для ряда цен рубля выполнено при помощи языка R, где присутствует библиотека для расчета индикаторов технического анализа. Кроме того, аналогичную информацию позволяют получить платформы для проведения технического анализа. Процесс расчета значений индикаторов также опустим. Детально описание этого процесса можно найти в этой статье
В результате подготовки и обработки получен следующий набор значений индикаторов технического анализа.
Таблица 1.
Перечень индикаторов технического анализа, рассчитанных для задачи предсказания валютного курса
Пусть вас не пугает цифра в 62 рассчитанные величины. В реальных задачах автоматически могут генерироваться сотни и даже тысячи признаков. Для современных методов машинного обучения их число становится не важным. Для каждого признака автоматически рассчитывается значимость – достоверность того, что изменение величины влияет на прогноз целевой переменной.
Отбор признаков
Неотъемлемой частью начальных этапов процесса машинного обучения является отбор признаков (feature selection), т.е. переменных, на основе которых обучается модель. Отбор может осуществляться с помощью различных инструментов, а также зависеть от множества факторов, например, таких как корреляция признаков с целевой переменной, или качество данных. Следующим (и более продвинутым) шагом может стать создание новых признаков на основе уже имеющихся, т.н. feature engineering — инжиниринг, создание признаков. Эта операция может позволить улучшить качество модели, одновременно получив более полное объяснение данных, в случае если модель интерпретируемая. В нашем случае первым этапом построения модели в SAP Predictive Analytics стало создание новых признаков при помощи встроенного решения Data Manager.
В подготовленном наборе данных имеются показатели индикаторов, которые влияют на целевую переменную в текущий момент времени. Однако, можно получить дополнительную информацию, если установить влияние этих индикаторов за определенный период до текущего момента. В нашем случае были выбраны временные интервалы: за 1 час и за 1 день до текущего момента во времени и созданы новые переменные с учетом этого «временного лага». Еще более информативной может оказаться степень изменения индикаторов от момента в прошлом до текущего момента. В качестве метода был выбран натуральный логарифм частного текущих индикаторов и индикаторов с временным лагом 1 час и 2 дня. Таким образом, удалось получить степень изменения индикатора от момента в прошлом (увеличился он или уменьшился), и если да, то насколько.
Резюмируя, удалось установить не только зависимость между текущими значениями индикаторов и целевой переменной, но и принять во внимания эти индикаторы в прошлом, а также степень их изменения.
Реализация в Data Manager
На вкладке Data Manager создается новая манипуляция данными.
Рис. 5 Интерфейс выбора модели SAP Predictive Analytics
После загрузки заранее сформированного набора данных к названию предикторов был добавлен префикс “NOW” (Rename -> Add Prefix) — таким образом мы маркируем предикторы на текущий момент времени.
Рис. 6Переименование переменных для упрощения последующих манипуляций
Чтобы создать временную задержку, сгенерируем новые переменные “date_MIN1HR” и “date_MIN1DAY” с соответствующей зависимостью от переменной “date”. Используется expression editor:
Рис. 7 Создание нового выражения в Data Manipulation Editor
В Expression Editor добавляется функция сдвига даты по часам (для второй переменной — по дням), для каждой из которых выставляется зависимое поле “date” (от которого идет вычисление), а также параметр “-1”, т.к. нас интересует прошлое.
Рис. 8Созданная переменная со сдвинутой датой
После создания этих переменных они появляются в полях:
Рис. 9Вычисляемые поля с датой стали доступны в общем списке переменных
Можно наглядно видеть зависимость на наборе данных:
Рис. 10Визуализация сдвижки времени в 1 час и в 1 сутки
Далее поля таблицы (индикаторы) присоединяются к этой же таблице, при этом ключевым полем каждой присоединяемой таблицы является поле даты со смещением. Проводится 2 join’a: предикторов со сдвигом на 1 час назад и на 1 день назад с помощью функции “Merge”:
Рис. 11Генерация соединения наборов данных с разным сдвигом по времени
Соответствующим полям при присоединении таблицы, были присвоены префиксы (“MIN1HR” и “MIN1DAY”):
Рис. 12Сформированный список признаков после объединения по времени
Стоит отметить источник происхождения переменных (Колонка “Source”). И сопоставить эти значения со значениями в окне “Merge”. Переменные из источника “CST0009USDRUB2_1” присоединены по полю «date_MIN1HR» и имеют префикс «MIN1HR», что корректно.
Для создания тренда изменений переменных за разные периоды времени, необходимо взять натуральный логарифм из отношения текущего значения индикатора к его прошлому значению. С помощью expression editor выстраивается следующая зависимость:
Рис. 13Определение групповой логарифмической функции для отношения изменения величин во времени
Где функция ln – натуральный логарифм от отношения текущего значения всех предикторов к их значению 1 час назад. Таким образом, символы «@» и «$» на рисунке выше являются подстановочными знаками, обозначающими конец названия переменной после префикса. Эта функция сохраняет большое количество времени, автоматически сопоставляя пары предикторов и создавая 69 новых переменных (69=кол-во предикторов с префиксом):
Рис. 14Сообщение об успешности очередного шага генерирования новых признаков
Важно указать, что необходимо сопоставлять предикторы «По значению» таким образом, чтобы значение конкретного предиктора было правильно сопоставлено со значением этого же предиктора 1 час назад:
Рис. 15Необходимая настройка для успешного сопоставления признаков
В результате получился набор дополнительных переменных, которые были использованы при построении модели.
Пример: переменная «P1|25» на текущий момент, 1 час назад, 1 день назад, и тренд (отношение текущего значения к значению 1 час и 1 день назад):
Рис. 16В результате манипуляций в SAP Predictive Analytic созданы дополнительные признаки к первоначальному значению переменной
Построение модели
Была построена стандартная модель в SAP Predictive Analytics. Степень многочлена гребневой регрессии = 1, автоматический выбор переменных включен. Результат модели следующий:
Рис. 17Базовые статистики рассчитанной модели
Из 345 переменных в конечном уравнении с наименьшей ошибкой была оставлена 91 переменная. Лучшая итерация отбора переменных — номер 7. Финальная прогностическая сила модели = 0.7209, робастность (устойчивость результата к новым наборам данных) = 0.9704. Это означает, что модель качественная и устойчивая.
Диаграмма степени влияния переменных в модели представлена на Рис.18. Чем выше предиктор в списке, тем он более значимый при принятии решения конечной моделью.
Рис. 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.
Рис. 19Сила влияния различных диапазонов величин признака на целевую переменную
Рассматривая другую переменную, степень изменения индикатора P1|25, становится ясно, что при снижении индикатора по отношению ко вчерашнему значению (отрицательный логарифм, категория от -2.29 до -0.47) растет влияние на целевую переменную. Если же индикатор показывал рост, влияние снижается.
Рис. 20Еще один пример анализа значений признака по диапазонам
Вместо заключения
В статье были продемонстрированы подходы к анализу данных и возможности SAP Predictive Analytics для анализа рыночных данных. Высокий уровень автоматизации и простота интерпретации позволяют не только создать качественную модель, но и объяснить причины наступления события, а также конкретные диапазоны влияющих переменных.
Предиктивная аналитика находится на стыке хранилищ данных, бизнес-задач и математики. Синергия этих направлений позволяет по-новому взглянуть на уже привычные и устоявшиеся бизнес процессы. Как правило, они были построены на основе представлений человека о влияющих на процесс факторов. Но человек может проанализировать без применения специальных средств лишь небольшое число самых значимых факторов. Искусственный интеллект может создать модель с гораздо большим числом значимых факторов. Это позволяет точнее выявлять влияние и предсказывать развитие событий.
Авторы статьи — Андрей Ржаксинский и Павел Соломеин. Андрей Ржаксинский занимается хранилищами данных, прогнозной аналитикой, анализом клиентской активности, работает в команде SAP Analytics & Insights. Павел Соломеин — консультант по прогнозной аналитике в подразделении SAP Digital Business Services.
Наиболее популярные продукты разработчика
Фирменная философия в том, чтобы предлагать не отдельные решения, а сразу комплексное обеспечение. Поэтому для покупки конкретного ПО, нужно обладать специальными знаниями или по крайней мере понимать, зачем потребовалось внедрение именно этой, отдельно взятой программы САБ, что это даст предприятию и так далее.
Если же говорить о каком-то универсальном выборе, им становится SAP ERP (расшифровывается очень просто — Enterprise Resource Planning) или, как ее еще часто называют, R/3. Софт оптимизирует планирование внутренних и внешних корпоративных ресурсов и позволяет сделать единое рабочее поле, в котором сотрудники смогут эффективно взаимодействовать.
Чтобы вам стало понятнее, как работать в программе SAP (САП) ERP, добавим, что она условно состоит из 3 разделов:
- «Учет и отчетность» — позволяет знакомиться со всеми проводимыми транзакциями и фиксировать средства на каждом из уровней. В нем 2 вложенных модуля: FI, с подробной статистикой по только что перечисленным счетам, и CO, с инструментами для составления документации за квартал и за год, мониторинга средств, калькуляции убытков и прибылей.
- «Логистика» дает возможность гибко контролировать процессы закупок, поиска и выбора поставщиков, а также составлять и реализовывать план производства, принимать своевременные меры по уходу за эксплуатируемой техникой (осмотр, ремонт, замена), формировать цены, продавать продукцию, получать квитанции.
- «Персонал» упрощает работу отдела кадров: подбор сотрудников согласно открытым вакансиям и вообще требованиям, плюс, отвечает за начисление зарплат и контроль над их выплатами.
Обозревая продукты, нужно сказать, что такое SAP (САБ) SRM-система — это актуальное ПО, полное название которого расшифровывается как Supplier Relationship Management, и оно предназначено для практического улучшения взаимодействия со всей совокупностью поставщиков.
Кроме того, с 2004 года компания поддерживает платформу NetWeaver 2004, включающую в себя следующее ПО:
- Process Integration — для объединения рабочих процессов всех уровней;
- Enterprise Portal — чтобы внедрять портальные решения;
- Business Intelligence — для глубокой бизнес-аналитики и быстрого создания хранилищ информации;
- Mobile Infrastructure — чтобы поддерживать приложения, ориентированные на мобильные устройства;
- Knowledge Management — для контроля библиотек знаний;
- Master Data Management — для ведения справки;
- Application Server — для обеспечения функционирования всего вышеперечисленного в режиме онлайн.