Бэктестинг в Excel

Под бэктестингом в моделировании понимается тестирование прогнозной модели на исторических данных. В статье рассказывается о том, как это сделать в Microsoft Excel, а не о теоретических основах бэктестинга.

Как мы проводим бэктестирование? Мы отматываем время до начала нашего временного ряда, калибруем параметры предметной модели по имеющимся данным до этого момента времени и делаем прогноз (т.е. предсказание) на следующий период. Далее мы продвигаемся вперед по времени, перекалибруем значения параметров и выполняем еще один прогноз, и так далее. В конце нашего упражнения мы получим набор прогнозов.

Обратите внимание, что в каждый момент времени единственное предположение, которое мы делаем, - это общее определение модели (например, ARMA(1,1)). Тем не менее, мы калибруем значения параметров, используя только информацию, доступную до этого момента времени.

Такой подход соответствует реальной практике: сначала мы начинаем с исходной модели и делаем прогноз на следующий период. Время идет дальше. Наступил новый период, поэтому мы добавляем новую точку данных к текущему набору исходных данных, перекалибруем параметры, проводим прогноз на следующий период и повторяем.

Почему меня это должно волновать?

В этой статье мы рассмотрим шаги в Microsoft Excel, необходимые для проведения бэктестинга. В основном мы будем использовать две мощные встроенные функции excel: INDEX(.) и SEQUENCE(.), а также использовать механизм Excel "Таблица данных" для выполнения различных сценариев.

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

Приступим!

Для этого вопроса мы используем синтетический набор стационарных данных из 200 наблюдений. Набор данных соответствует процессу ARMA(1,1), как показано ниже.

На этом рисунке показан синтетический стационарный набор данных из 200 наблюдений.

Предлагаемая модель представляет собой ARMA(1,1)

На этом рисунке показана таблица исходной модели ARMA

Процедура бэктестинга

Для каждой итерации нам необходимо выполнить следующие действия: (1) определить набор входных данных (как подмножество исходного временного ряда), (2) используя набор данных в (1), откалибровать значения параметров модели ARMA(1,1), (3) используя модель в (2) и набор данных в (1), рассчитать прогноз на один период вперед.

1. Ввод набора данных

Чтобы полностью описать входной набор данных, нам нужны два индекса: начало и конец, затем, используя функцию SEQUENCE(.), мы генерируем набор индексов между началом и концом. Теперь с помощью функции INDEX(.) мы возвращаем все диапазоны ячеек в исходном наборе данных с индексами строк в наборе последовательностей.

Пример: 

Исходный набор входных данных — \$A\$3:\$A\$202. Выбрать ячейки между индексами 1 и 50.

=INDEX(\$A\$3:\$A\$202,SEQUENCE(50,1,1,1),1)

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

2. Калибровка модели

Мы будем использовать функцию NumXL ARMA_PARAM(.) и укажем тип возврата=2 для калиброванных параметров.

На этом рисунке показана калиброванная модель ARMA

Обратите внимание, что ARMA_PARAM(.) возвращает компактную форму параметров модели, поэтому на рисунке выше процесс ARMA имеет вид: \[\begin{array}{l} {X_t} = 1.485 + 0.401{X_{t - 1}} + 0.734{a_{t - 1}} + {a_t}\\ {a_t} \sim N(0,1.14) \end{array}\]

3. Прогнозирование

Используя ARMA_FORE(.), данные, приведенные в (1), и параметры модели, рассчитанные в пункте 2, мы можем рассчитать прогнозные значения на 1 период вперед.

Расчет прогнозных значений на 1 период вперед.

Обратите внимание, что я создал средний прогноз, ошибку прогноза и доверительный интервал.

Таблица данных

Итак, мы только что завершили расчет одного шага. Используя функцию Excel "Таблица данных", мы проведем аналогичные расчеты для остальных периодов вплоть до шага 200.

Сначала нам нужно подготовить выходную таблицу:

Настройка таблицы данных

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

Выбор диапазона ячеек таблицы данных

Затем переключитесь на панель инструментов "Данные" и найдите пункт "Таблица данных" в разделе "Сценарий "что-если"".

На этом рисунке показано меню таблицы данных Excel

Появится диалоговое окно "Таблица данных". Найдите ячейку "столбец ввода", введите ссылку на "финишный" индекс набора данных и нажмите кнопку OK.

На этом рисунке показано диалоговое окно Таблица данных

Таблица данных заменит значения финишного индекса на значения из нашей таблицы данных и сохранит полученные результаты.

На этом рисунке показан вывод таблицы данных с фактическими ошибками

Обратите внимание, что "Std. Error" генерируется функцией ARMA_FORE(.), а крайний правый столбец ("Error") - это ошибка между прогнозом и фактически реализованным значением.

Анализ обратного тестирования

Сначала рассмотрим результаты прогнозов бэктестинга в визуальном сравнении с фактическими реализованными значениями, а затем углубимся в статистические свойства.

На этом рисунке показан график данных бэктестинга прогноза и факта.

Заштрихованная область на графике соответствует 95%-ному доверительному интервалу прогноза.

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

Далее рассмотрим статистические свойства ошибки прогноза (Forecast - Actual) с помощью сводной статистики на панели инструментов NumXL.

На этом рисунке показана сводная статистика ошибок обратного тестирования

Сводная статистическая таблица показывает, что ошибка прогноза представляет собой гауссовский шум с нулевым средним значением и стандартным отклонением 1,0

На этом рисунке показано сравнение обратного тестирования KDE с гауссовским

В заключение можно сказать, что ARMA(1,1) является подходящей прогностической моделью для данного набора данных.

Что дальше?

Теперь вам, вероятно, интересно узнать, каковы значения параметров модели? Стабильны ли они?

Сначала мы строим вторую "Таблицу данных", но в выходной строке указываем значения параметров модели, и запускаем таблицу данных так же, как мы делали это ранее.

На этом рисунке показаны параметры таблицы данных

Теперь проанализируйте значения каждого параметра, как мы это делали с ошибкой прогноза.

Backcasting ARMA (1,1) mu plotBackcasting ARMA (1,1) - sigma plot
Backcasting ARMA (1,1) -phi plotBackcasting ARMA (1,1) - theta plot

Значения параметров (кроме тета) демонстрируют стабильность и тенденцию к постоянному значению. Значения тета (коэффициента MA) более изменчивы, но находятся в пределах от 0,6 до 0,9.

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

Набор данных и анализ приведены в прилагаемой электронной таблице.

Заключение

В этой статье показаны шаги по проведению бэктестинга для прогнозной модели с минимальными промежуточными расчетами или вообще без них. Мы использовали встроенные функции Excel: INDEX(.) и SEQUENCE(.) и воспользовались функцией "Таблица данных", чтобы запустить расчеты для всех предварительно заданных индексов.

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

  Вложения

Комментарии

Войдите в службу, чтобы оставить комментарий.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 7 из 8