Проблема: Мне нужен способ обнаружения разворотов для временных рядов данных в SQL Server. Я слышал, что относительный индекс силы может служить индикатором разворотов во временных рядах. Пожалуйста, покажите мне, как вычислить этот индикатор с помощью T-SQL. Также укажите способы сделать вычисления относительно простыми для различных временных рядов в разных диапазонах дат для временных рядов данных в SQL Server.
Решение:
Разворот во временном ряду сигнализирует о изменении направления значений внутри временного ряда. Часто полезно узнать о разворотах как можно быстрее, чтобы ваш бизнес мог избежать непредвиденных последствий. Например, лучше иметь достаточное количество материалов на складе для обслуживания заказов до того, как клиенты найдут другие варианты для удовлетворения своих потребностей из-за неотправленных заказов вашей фирмы.
Обнаружение разворотов особенно популярно для временных рядов финансовых инструментов. Иногда можно получить больше выгоды от ценной бумаги, купив акции компании до того, как их купят другие и поднимут цену. Аналогично, можно минимизировать убытки от падения цены ценной бумаги, продав ее на начальных стадиях снижения цены.
Существует несколько индикаторов, которые помогают обнаружить развороты во временных рядах. Один из таких индикаторов, который прошел испытание временем, – это относительный индекс силы (RSI). Этот индикатор был предложен в 1978 году Дж. Уэллесом Уайлдером в книге “Новые концепции в технических торговых системах”. Множество авторов внесли свой вклад в содержание о том, как вычислять и/или использовать RSI. Это непрерывный поток контента о RSI на протяжении десятилетий говорит о его ценности для обнаружения разворотов тренда.
Предыдущая статья на сайте MSSQLTips.com несколько лет назад показала, как вычислить этот индикатор с помощью скрипта T-SQL и продемонстрировала его использование. Этот совет возвращается к этой теме, чтобы подробно описать алгоритм вычисления значений RSI. Описание затем связывается с кодом T-SQL, чтобы вы могли четко понять, как различные блоки кода связаны с элементами вычислительного алгоритма RSI. Ранее использовавшийся T-SQL код для вычисления RSI улучшен для повышения точности и гибкости в адаптации к различным символам и диапазонам дат. Помимо этих усовершенствований, в этом совете показано, как вычислять значения RSI для временных рядов из источника исторических данных Stooq.com, который является бесплатным и удобным для использования с SQL Server.
Алгоритм вычисления RSI
RSI – это осциллятор. То есть его значения варьируются от высокого значения 100 до низкого значения 0. Значения RSI зависят от соотношения среднего процентного прироста к среднему процентному убытку за набор периодов внутри заданного временного интервала. Широко используется значение по умолчанию – 14 торговых дней, но некоторые аналитики предпочитают более длинные или более короткие временные интервалы. Другие аналитики применяют RSI с несколькими временными интервалами для облегчения анализа разворотов во временных рядах. В этом совете рассматривается, как вычислить RSI со значением по умолчанию – 14 периодов. Совет также фокусируется на вычислении и проверке значений RSI для трех ценных бумаг.
RSI вычисляется на основе изменений некоторого критерия, такого как цены закрытия, от одного периода к следующему внутри его временного интервала. Когда цена растет от одного периода к следующему, это прирост. Когда цена падает от одного периода к следующему, это убыток. Убытки представлены положительными значениями, чтобы можно было сравнивать приросты и убытки друг с другом.
Существуют два различных метода для вычисления среднего прироста и среднего убытка. Первый метод – это простое арифметическое среднее. Этот метод применяется для вычисления среднего процентного прироста и среднего процентного убытка за первые периоды внутри первого временного интервала. При значении по умолчанию – 14 периодов для временного интервала, RSI для пятнадцатого периода зависит косвенно от соотношения среднего прироста к среднему убытку за первые четырнадцать периодов. До пятнадцатого периода нет значений RSI.
Для всех последующих временных периодов средний прирост и средний убыток вычисляются как взвешенное среднее процентного прироста или убытка предыдущего периода и текущего процентного прироста или убытка. При использовании временного интервала из 14 периодов выражения для среднего прироста и среднего убытка в последующих периодах выглядят следующим образом:
Средний прирост = ((средний прирост предыдущего периода) X 13) + (текущий прирост текущего периода))/14
Средний убыток = ((средний убыток предыдущего периода) X 13) + (текущий убыток текущего периода))/14
Следующие два шага – это вычисление RS и RSI. RSI зависит от RS, и RS вычисляется как отношение среднего прироста к среднему убытку для текущего периода. Это оценивает, насколько хорошо приросты делаются по сравнению с убытками за временной интервал, заканчивающийся в текущем периоде. Поэтому выражение для RS в текущем периоде выглядит следующим образом:
RS = (Средний прирост в текущем периоде)/(Средний убыток в текущем периоде)
Если средний убыток равен 0, потому что все предыдущие периоды дали прирост, то предыдущее выражение для RS не вычисляется из-за делителя 0. В такой ситуации RS должно быть присвоено значение 0.
RSI вычисляется с помощью следующего выражения. Именно это выражение приводит к тому, что RSI варьируется от 0 до 100:
RSI = 100 – (100/(1 + RS))
На практике RSI редко достигает своих теоретических крайних значений 0 и 100. Если RS равно 0, потому что все периоды во временном интервале имеют убыток 0, то RSI равно 0. По мере роста среднего убытка за период от 0 по сравнению с средним приростом, RSI увеличивается в значении относительно своего теоретического предела 100.
Заключение
Относительный индекс силы (RSI) – ценный индикатор для обнаружения разворотов во временных рядах данных. Вычисляя RSI с помощью предоставленного кода T-SQL, вы можете получить представление о потенциальных точках разворота в ваших данных. Алгоритм вычисления RSI прост и может быть легко адаптирован к различным временным интервалам и наборам данных. Включая RSI в анализ SQL Server, вы можете принимать более обоснованные решения на основе трендов и разворотов в ваших данных.