Модель VEC прогнозы Монте-Карло

В этом примере показано, как сгенерировать прогнозы Монте-Карло из модели VEC (q). Пример сравнивает сгенерированные прогнозы с минимальными прогнозами средней квадратичной невязки (MMSE) и прогнозами из эквивалентного модели VAR (q + 1) модели VEC (q).

Предположим, что модель VEC (2) с H1 формой Йохансена соответствующим образом описывает динамику 3D многомерных временных рядов, состоящих из годовых краткосрочных, среднесрочных и долгосрочных ставок облигаций с 1954 по 1994 год. Предположим, что серия имеет ранг коинтеграции 2.

Загрузка и предварительная обработка данных

Загрузите Data_Canada набор данных. Извлеките данные процентной ставки, которые занимают третий-последний столбцы данных.

load Data_Canada
Y = DataTable{:,3:end};
names = DataTable.Properties.VariableNames(3:end); 
T = size(Y,1)
T = 41
numSeries = size(Y,2)
numSeries = 3

Постройте график ряда на том же рисунке.

figure
plot(dates,Y,'LineWidth',2)
xlabel 'Year';
ylabel 'Percent';
legend(names,'Location','NW')
title '{\bf Canadian Interest Rates, 1954-1994}';
axis tight
grid on

Figure contains an axes. The axes with title {\bf Canadian Interest Rates, 1954-1994} contains 3 objects of type line. These objects represent INT_S, INT_M, INT_L.

Оценка модели VEC

Создайте 3D модель VEC (2), имеющую ранг коинтеграции 2.

numLags = 2;
r = 2;
Mdl = vecm(numSeries,r,numLags);

Оцените модель VEC (2).

EstMdl = estimate(Mdl,Y);

По умолчанию estimate применяет H1 форму Йохансена и использует первые наблюдения q + 1 = 3 в качестве предварительных данных.

Сгенерируйте прогнозы Монте-Карло

Сгенерируйте прогнозы Монте-Карло из предполагаемой модели VEC на 10-летнем горизонте при помощи simulate. Предоставьте последние три строки данных, чтобы инициализировать прогнозы и задать генерацию 1000 путей отклика.

numPaths = 1000;
horizon = 10;
Y0 = Y((end-2):end,:);

rng(1); % For reproducibility
YSimVEC = simulate(EstMdl,horizon,'NumPaths',numPaths,'Y0',Y0);

YSimVEC является числовым массивом 10 на 3 на 1000 моделируемых значений серии откликов. Строки соответствуют периодам в прогнозном горизонте, столбцы соответствуют ряду в Y, и страницы соответствуют моделируемым путям

Оцените средства прогнозов для каждого периода и временных рядов по всем путям. Создайте 95% процентильные интервалы прогноза для каждого периода и временных рядов.

YMCVEC   = mean(YSimVEC,3);
YMCVECCI = quantile(YSimVEC,[0.025,0.975],3);

YMCVEC - числовая матрица 10 на 3, содержащая прогнозы Монте-Карло для каждого периода (строка) и временных рядов (столбец). YMCVECCI - числовой массив 10 на 3 на 2, содержащий 2,5% и 97,5% процентилей (страниц) рисунков для каждого периода (строки) и временных рядов (столбца).

Постройте график наблюдений эффективной выборки, средних прогнозов и 95% процентильных доверительных интервалов.

fDates = dates(end) + (0:horizon)';
figure;
h1 = plot([dates; fDates(2:end)],[Y; YMCVEC],'LineWidth',2);
h2 = gca;
hold on
h3 = plot(repmat(fDates,1,3),[Y(end,:,:); YMCVECCI(:,:,1)],'--',...
    'LineWidth',2);
h3(1).Color = h1(1).Color;
h3(2).Color = h1(2).Color;
h3(3).Color = h1(3).Color;
h4 = plot(repmat(fDates,1,3),[Y(end,:,:); YMCVECCI(:,:,2)],'--',...
    'LineWidth',2);
h4(1).Color = h1(1).Color;
h4(2).Color = h1(2).Color; 
h4(3).Color = h1(3).Color;
patch([fDates(1) fDates(1) fDates(end) fDates(end)],...
    [h2.YLim(1) h2.YLim(2) h2.YLim(2) h2.YLim(1)],'b','FaceAlpha',0.1)
xlabel('Year')
ylabel('Percent')
title('{\bf VEC Model Monte Carlo Forecasts}')
axis tight
grid on
legend(h1,DataTable.Properties.VariableNames(3:end),'Location','Best');

Figure contains an axes. The axes with title {\bf VEC Model Monte Carlo Forecasts} contains 10 objects of type line, patch. These objects represent INT_S, INT_M, INT_L.

Сгенерируйте прогнозы MMSE

Оценка прогнозов MMSE из расчетной модели VEC на 10-летнем горизонте при помощи forecast. Предоставьте последние три строки данных для инициализации прогнозов. Верните прогнозы и соответствующие многомерные средние квадратичные невязки.

[YMMSE,YMMSEMSE] = forecast(EstMdl,horizon,Y0);

YMMSE - числовая матрица прогнозов MMSE размером 10 на 3. Строки соответствуют периодам в прогнозном горизонте, а столбцы соответствуют последовательностям в Y. YMMSEMSE является вектором камеры 10 на 1 числовых матриц 3 на 3. Матрица в камере j является оцененным, многомерным MSE из трех прогнозируемых значений в периоде j. Диагональными значениями матрицы являются прогнозные MSE и недиагональные значения прогнозных ковариаций.

Оценка интервалов прогноза типа Wald 95%. Постройте график прогнозов MMSE и интервалов прогноза.

YMMSECI = zeros(horizon,numSeries,2); % Preallocation
YMMSEMSE = cell2mat(cellfun(@(x)diag(x)',YMMSEMSE,'UniformOutput',false));
YMMSECI(:,:,1) = YMMSE - 1.96*sqrt(YMMSEMSE);
YMMSECI(:,:,2) = YMMSE + 1.96*sqrt(YMMSEMSE);

figure;
h1 = plot([dates; fDates(2:end)],[Y; YMMSE],'LineWidth',2);
h2 = gca;
hold on
h3 = plot(repmat(fDates,1,3),[Y(end,:,:); YMMSECI(:,:,1)],'--',...
    'LineWidth',2);
h3(1).Color = h1(1).Color;
h3(2).Color = h1(2).Color;
h3(3).Color = h1(3).Color;
h4 = plot(repmat(fDates,1,3),[Y(end,:,:); YMMSECI(:,:,2)],'--',...
    'LineWidth',2);
h4(1).Color = h1(1).Color;
h4(2).Color = h1(2).Color; 
h4(3).Color = h1(3).Color;
patch([fDates(1) fDates(1) fDates(end) fDates(end)],...
    [h2.YLim(1) h2.YLim(2) h2.YLim(2) h2.YLim(1)],'b','FaceAlpha',0.1)
xlabel('Year')
ylabel('Percent')
title('{\bf VEC Model MMSE Forecasts}')
axis tight
grid on
legend(h1,DataTable.Properties.VariableNames(3:end),'Location','Best');

Figure contains an axes. The axes with title {\bf VEC Model MMSE Forecasts} contains 10 objects of type line, patch. These objects represent INT_S, INT_M, INT_L.

VAR (q + 1) Представление прогнозов MMSE

Представьте предполагаемую VEC (2) как модель VAR (3).

EstMdlVAR = varm(EstMdl)
EstMdlVAR = 
  varm with properties:

     Description: "AR-Nonstationary 3-Dimensional VAR(3) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 3
        Constant: [-1.73631 -0.313676 0.0649337]'
              AR: {3×3 matrices} at lags [1 2 3]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix]

MdlVAR является varm объект модели.

Оценка прогнозов MMSE из модели VAR на 10-летнем горизонте при помощи forecast. Предоставьте последние три строки данных для инициализации прогнозов. Верните прогнозы и соответствующие многомерные средние квадратичные невязки.

[YMMSEVAR,YMMSEMSEVAR] = forecast(EstMdlVAR,horizon,Y0);

Размерности YMMSEVAR и YMMSEMSEVAR те же, что и YMMSE и YMMSEMSE, соответственно.

Оценка интервалов прогноза типа Wald 95%. Постройте график прогнозов MMSE и интервалов прогноза.

YMMSEVARCI = zeros(horizon,numSeries,2);
YMMSEMSEVAR = cell2mat(cellfun(@(x)diag(x)',YMMSEMSEVAR,'UniformOutput',false));
YMMSEVARCI(:,:,1) = YMMSE - 1.96*sqrt(YMMSEMSEVAR);
YMMSEVARCI(:,:,2) = YMMSE + 1.96*sqrt(YMMSEMSEVAR);

figure;
h1 = plot([dates; fDates(2:end)],[Y; YMMSE],'LineWidth',2);
h2 = gca;
hold on
h3 = plot(repmat(fDates,1,3),[Y(end,:,:); YMMSEVARCI(:,:,1)],'--',...
    'LineWidth',2);
h3(1).Color = h1(1).Color;
h3(2).Color = h1(2).Color;
h3(3).Color = h1(3).Color;
h4 = plot(repmat(fDates,1,3),[Y(end,:,:); YMMSEVARCI(:,:,2)],'--',...
    'LineWidth',2);
h4(1).Color = h1(1).Color;
h4(2).Color = h1(2).Color; 
h4(3).Color = h1(3).Color;
patch([fDates(1) fDates(1) fDates(end) fDates(end)],...
    [h2.YLim(1) h2.YLim(2) h2.YLim(2) h2.YLim(1)],'b','FaceAlpha',0.1)
xlabel('Year')
ylabel('Percent')
title('{\bf VAR Model MMSE Forecasts}')
axis tight
grid on
legend(h1,DataTable.Properties.VariableNames(3:end),'Location','Best');

Figure contains an axes. The axes with title {\bf VAR Model MMSE Forecasts} contains 10 objects of type line, patch. These objects represent INT_S, INT_M, INT_L.

Подтвердите, что прогнозы MMSE из моделей VEC и VAR совпадают.

(YMMSE - YMMSEVAR)'*(YMMSE - YMMSEVAR) > eps
ans = 3x3 logical array

   0   0   0
   0   0   0
   0   0   0

Прогнозы MMSE между моделями идентичны.

См. также

Объекты

Функции

Похожие темы