Этот пример показывает, как сгенерировать минимальную среднеквадратичную погрешность (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:
где 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 в 8-летний горизонт прогноза и вычислите соответствующие отклонения ошибки прогноза. Поскольку 1 период вперед предсказан требует преддемонстрационного ответа и - прогноз периода вперед требует внешних данных , задайте итоговый ответ в выборке оценки как преддемонстрационный ответ и задайте период прогноза внешние данные.
[yf,ymse] = forecast(Mdl,fh,Tbl.IGD(idxest(end)),... 'XF',X(idxf,:));
Вычислите интервалы прогноза для прогнозов, принимающих, что они нормально распределены.
ci = yf + 1.96*[-sqrt(ymse) sqrt(ymse)];
Постройте ряд ответа с помощью их прогнозов 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 требует преддемонстрационного ответа сгенерировать из подходящей модели 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.
arima | estimate | forecast | simulate