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

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

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

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

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

load Data_CreditDefaults

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

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

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

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

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

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

Figure contains an axes object. The axes object with title IGD Rates and MMSE Forecasts contains 5 objects of type patch, line. These objects represent Forecast period, Observation, Forecast, 95% Interval.

Прогнозы кажутся разумными несмотря на экстремальное наблюдение, происходящее в 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

Figure contains an axes object. The axes object with title IGD Rates and Monte Carlo Forecasts contains 105 objects of type patch, line. These objects represent Forecast period, Observation, Monte Carlo path, Monte Carlo mean, 95% Interval.

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

Ссылки

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

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

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

Объекты

Функции

Похожие темы