В этом примере показано, как сгенерировать минимальную среднеквадратичную погрешность (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.