Предскажите уровень IGD из модели ARX

Этот пример показывает, как сгенерировать минимальную среднеквадратичную погрешность (MMSE) и прогнозы Монте-Карло из модели ARX (1), адаптированной к историческим данным. Ряд ответа содержит ежегодные измерения уровня по умолчанию на корпоративных облигациях инвестиционного класса (IGD).

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

Загрузите и осмотрите данные

Загрузите набор данных, содержащий уровни значения по умолчанию кредита.

load Data_CreditDefaults

Для получения дополнительной информации на наборе данных, отобразите Description.

Таблица DataTable содержит ежегодные измерения, но набор данных является агностиком основы времени. Чтобы применить основу времени к данным, преобразуйте DataTable в расписание.

Tbl = table2timetable(DataTable,"RowTimes",datetime(DataTable.Dates,"Format","yyyy"));

Программное обеспечение Econometrics Toolbox™ arima удаляет недостающие наблюдения (обозначенный NaN s) от данных при помощи мудрого списком удаления. Это действие влияет, как вы делите данные.

Определите, содержит ли какая-либо строка в данных по крайней мере одно недостающее наблюдение.

idxmiss = any(ismissing(Tbl),2);
anymissing = sum(idxmiss)
anymissing = 0

В данных нет никаких недостающих наблюдений.

Определите общий объем выборки.

T = size(Tbl,1)
T = 21

Временная шкала раздела

Примите, что все ряды в данных являются стационарными, и рассматривают эту модель ARX (1) для уровня IGD:

IGDt=c+IGDt-1+β1AGEt+β2CPFt+β3SPRt+εt,

где εt iid серия Гауссовых случайных переменных со средним значением 0 и конечное отклонение.

Чтобы оценить модель ARX (1), условное среднее значение первого ответа требует предыдущего ответа. Поэтому преддемонстрационный период для оценки является первой строкой данных. Кроме того, рассмотрите прогнозирование IGD в 8-летний горизонт прогноза и сравнение прогнозов к наблюдаемым ответам. Поэтому период прогноза является последними восемью строками данных. Соответствуйте модели к остающимся данным.

Создайте индексные векторы, которые идентифицируют предварительную выборку, оценку, и предсказывают периоды.

fh = 8;                          % Forecast horizon
idxpre = 1;                      
idxest = 2:(T - fh);   
idxf = (T - fh + 1):T; 

fprintf('\nPresample period: %d\nEstimation Period: %d - %d\nForecast period: %d - %d\n',...
    year(Tbl.Time([idxpre idxest(1) idxest(end) idxf(1) idxf(end)])))
Presample period: 1984
Estimation Period: 1985 - 1996
Forecast period: 1997 - 2004

Подходящая модель к данным

Создайте объект модели arima, который представляет модель ARX (1).

Mdl = arima(1,0,0)
Mdl = 
  arima with properties:

     Description: "ARIMA(1,0,0) Model (Gaussian Distribution)"
    Distribution: Name = "Gaussian"
               P: 1
               D: 0
               Q: 0
        Constant: NaN
              AR: {NaN} at lag [1]
             SAR: {}
              MA: {}
             SMA: {}
     Seasonality: 0
            Beta: [1×0]
        Variance: NaN

Mdl является шаблоном для оценки. Свойства Mdl, которые имеют значение NaN, соответствуют неизвестному ARX (1) параметры модели, которые будут оценены estimate. Несмотря на то, что свойство Beta коэффициента регрессии пусто, estimate определяет свой размер количеством столбцов в заданной внешней матрице данных.

Соответствуйте модели к демонстрационному ответу оценки и внешним данным. Задайте преддемонстрационный ответ.

X = Tbl{:,["AGE" "CPF" "SPR"]};
Mdl = estimate(Mdl,Tbl.IGD(idxest),'Y0',Tbl.IGD(idxpre),...
    'X',X(idxest,:));
 
    ARIMAX(1,0,0) Model (Gaussian Distribution):
 
                  Value       StandardError    TStatistic     PValue 
                __________    _____________    __________    ________

    Constant      0.022517        0.20278        0.11104      0.91158
    AR{1}         -0.18486        0.43861       -0.42146      0.67342
    Beta(1)      0.0091356       0.016249        0.56224      0.57395
    Beta(2)     -0.0098351      0.0053577        -1.8357     0.066402
    Beta(3)      0.0039044       0.057031       0.068461      0.94542
    Variance     0.0027082      0.0014648         1.8489     0.064468

Mdl является полностью заданным объектом модели arima, представляющим подходящую модель ARX (1). Сводные данные оценки предполагают, что все переменные кроме CPF (Beta(2)) незначительны на 10%-м уровне значения.

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

Предскажите ответы MMSE в 8-летний горизонт прогноза и вычислите соответствующие отклонения ошибки прогноза. Поскольку 1 период вперед предсказан yˆ1997 требует преддемонстрационного ответа y1996 и t- прогноз периода вперед требует внешних данных Xt, задайте итоговый ответ в выборке оценки как преддемонстрационный ответ и задайте период прогноза внешние данные.

[yf,ymse] = forecast(Mdl,fh,Tbl.IGD(idxest(end)),...
    'XF',X(idxf,:));

Вычислите интервалы прогноза для прогнозов, принимающих, что они нормально распределены.

ci = yf + 1.96*[-sqrt(ymse) sqrt(ymse)];

Постройте прогнозы MMSE

Постройте ряд ответа с помощью их прогнозов MMSE и интервалов прогноза.

figure
h1 = plot(Tbl.Time,Tbl.IGD,'ko-','LineWidth',2);
hold on
h2 = plot(Tbl.Time(idxf),yf,'k:','LineWidth',2);
h3 = plot(Tbl.Time(idxf),ci,'r:','LineWidth',2);
h = gca;
px = Tbl.Time(idxf([1 end end 1]));
py = h.YLim([1 1 2 2]);
hf = fill(px,py,[0.9 0.9 0.9]);
uistack(hf,"bottom");
legend([h1 h2 h3(1) hf],["Observation" "Forecast"...
    "95% Interval" "Forecast period"],'Location','NorthWest')
title('IGD Rates and MMSE Forecasts')
xlabel('Year')
ylabel('IGD (%)')
axis tight
hold off

Прогнозы кажутся разумными несмотря на экстремальное наблюдение, происходящее в 2 001.

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

Предскажите ответы путем симуляции 100 путей из подходящей модели ARX (1). Затем агрегируйте случайные пути путем вычисления среднего значения и интервалов процентили на 97,5% и на 2,5% в каждом моменте времени в период прогноза. Подобно оценке прогноза MMSE simulate требует преддемонстрационного ответа y1996 сгенерировать y1997 из подходящей модели ARX (1), и это требует внешних данных в период прогноза.

nsim = 100;
rng(1);
YMC = simulate(Mdl,fh,'NumPaths',nsim,...
    'Y0',Tbl.IGD(idxest(end)),'X',X(idxf,:));
YMCbar = mean(YMC,2);
YMCci = quantile(YMC',[0.025 0.975]);

Постройте прогнозы Монте-Карло

Постройте ряд ответа с прогнозами Монте-Карло и 95% интервалов процентили.

figure
h1 = plot(Tbl.Time,Tbl.IGD,'ko-','LineWidth',2);
hold on
h2 = plot(Tbl.Time(idxf),YMC,'Color',[0.7 0.7 0.7]);
h3 = plot(Tbl.Time(idxf),YMCbar,'c:','LineWidth',3);
h4 = plot(Tbl.Time(idxf),YMCci,'r:','LineWidth',3);
h = gca;
px = Tbl.Time(idxf([1 end end 1]));
py = h.YLim([1 1 2 2]);
hf = fill(px,py,[0.9 0.9 0.9]);
uistack(hf,"bottom");
legend([h1 h2(1) h3 h4(1) hf],["Observation" "Monte Carlo path"...
    "Monte Carlo mean" "95% Interval" "Forecast period"],'Location','NorthWest')
title('IGD Rates and Monte Carlo Forecasts')
xlabel('Year')
ylabel('IGD (%)')
axis tight
hold off

Прогнозы Монте-Карло и интервалы прогноза напоминают тех от прогнозирования MMSE.

Ссылки

[1] Helwege, J. и П. Клейман. "Понимая Совокупные Уровни По умолчанию Связей Высокой доходности". Текущие проблемы в Экономике и Финансах. Издание 2, № 6, 1996, стр 1-6.

[2] Loeffler, G. и П. Н. Пош. Credit Risk Modeling Using Excel и VBA. Западный Сассекс, Англия: финансы Вайли, 2007.

Смотрите также

| | |

Связанные примеры

Больше о