Прогноз модели VAR с использованием симуляции Монте-Карло

В этом примере показано, как использовать симуляцию Монте-Карло через simulate для прогноза модели VAR.

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

simulate требует:

  • Модель (EstMdl в следующем)

  • Количество периодов для прогноза (numobs в следующем)

simulate опционально принимает:

  • Экзогенный ряд данных

  • Предварительный образец временных рядов (Y(end-3:end,:) в следующем)

  • Будущие выборочные отклики для условной симуляции

  • Количество реализаций, или путей, для моделирования (2000 в следующем)

Загрузите Data_USEconModel набор данных. Этот пример использует два временных рядов: логарифм реального ВВП и реальный 3-месячный тариф T-векселя, оба по-разному являются приблизительно стационарными. Для рисунка, модель VAR (4) описывает временные ряды.

load Data_USEconModel
DEF = log(DataTable.CPIAUCSL);
GDP = log(DataTable.GDP);
rGDP = diff(GDP - DEF); % Real GDP is GDP - deflation
TB3 = 0.01*DataTable.TB3MS;
dDEF = 4*diff(DEF); % Scaling
rTB3 = TB3(2:end) - dDEF; % Real interest is deflated
Y = [rGDP,rTB3];

Подбор спецификации модели VAR (4).

Mdl = varm(2,4);
Mdl.SeriesNames = {'Transformed real GDP','Transformed real 3-mo T-bill rate'};
EstMdl = estimate(Mdl,Y);

Определите прогнозный горизонт.

numobs = 21;
FDates = dateshift(DataTable.Time(end),'end','quarter',1:numobs);

Моделируйте модель для numobs шаг вперед и сгенерируйте 2000 путей. Задайте предварительные наблюдения из конца данных.

rng(1); %For reproducibility
Ysim = simulate(EstMdl,numobs,'Y0',Y(end-3:end,:),'NumPaths',2000);

Вычислите среднее и стандартное отклонение моделируемого ряда:

Ymean = mean(Ysim,3); % Calculate means
Ystd = std(Ysim,0,3); % Calculate std deviations

Постройте график стандартного отклонения средств +/- 1 для моделируемой серии:

figure;
subplot(2,1,1)
plot(DataTable.Time(end-10:end),Y(end-10:end,1),'k')
hold('on')
plot([DataTable.Time(end) FDates],[Y(end,1);Ymean(:,1)],'r')
plot([DataTable.Time(end) FDates],[Y(end,1);Ymean(:,1)]+[0;Ystd(:,1)],'b')
plot([DataTable.Time(end) FDates],[Y(end,1);Ymean(:,1)]-[0;Ystd(:,1)],'b')
title('Transformed real GDP')
subplot(2,1,2)
plot(DataTable.Time(end-10:end),Y(end-10:end,2),'k')
hold('on')
plot([DataTable.Time(end) FDates],[Y(end,2);Ymean(:,2)],'r')
plot([DataTable.Time(end) FDates],[Y(end,2);Ymean(:,2)]+[0;Ystd(:,2)],'b')
plot([DataTable.Time(end) FDates],[Y(end,2);Ymean(:,2)]-[0;Ystd(:,2)],'b')
title('Transformed real 3-mo T-bill rate')

Figure contains 2 axes. Axes 1 with title Transformed real GDP contains 4 objects of type line. Axes 2 with title Transformed real 3-mo T-bill rate contains 4 objects of type line.

См. также

Объекты

Функции

Похожие темы