В этом примере показано, как создать прогнозы минимальной среднеквадратической ошибки (MMSE) и прогноза Монте-Карло из модели ARX (1), адаптированной к историческим данным. Серия ответов содержит ежегодные измерения ставки дефолта по корпоративным облигациям инвестиционного уровня (IGD).
Динамическая модель требует исходных значений для оценки и прогнозирования. Кроме того, для включения экзогенных эффектов в прогнозы модели, содержащей компонент регрессии, требуются экзогенные данные в периоде прогноза. Поэтому в этом примере показано, как разделить временную шкалу выборки на периоды предварительной выборки, оценки и прогноза для получения требуемых данных.
Загрузите набор данных, содержащий кредитные ставки по умолчанию.
load Data_CreditDefaultsДля получения подробной информации о наборе данных просмотрите Description.
Стол DataTable содержит ежегодные измерения, но набор данных является агностическим для временной базы. Чтобы применить базу времени к данным, преобразуйте DataTable к расписанию.
Tbl = table2timetable(DataTable,"RowTimes",datetime(DataTable.Dates,"Format","yyyy"));
Эконометрика Toolbox™ arima программное обеспечение удаляет отсутствующие наблюдения (указано NaNs) из данных с помощью удаления по списку. Это действие влияет на способ секционирования данных.
Определите, содержит ли какая-либо строка данных хотя бы одно отсутствующее наблюдение.
idxmiss = any(ismissing(Tbl),2); anymissing = sum(idxmiss)
anymissing = 0
В данных отсутствуют отсутствующие наблюдения.
Определите общий размер выборки.
T = size(Tbl,1)
T = 21
Предположим, что все серии в данных являются стационарными, и рассмотрим эту модель ARX (1) для скорости IGD:
β3SPRt + α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 в 8-летний горизонт прогноза и вычисление соответствующих отклонений ошибок прогноза. Поскольку для прогноза с опережением на 1 период требуется предварительный отклик , а для прогноза с опережением на t-период требуются экзогенные данные , укажите окончательный отклик в выборке оценки как предварительный отклик и укажите экзогенные данные периода прогноза.
[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

Прогнозы представляются разумными, несмотря на крайние наблюдения, имевшие место в 2001 году.
Прогнозирование ответов путем моделирования 100 путей из установленной модели ARX (1). Затем агрегируйте случайные пути путем вычисления среднего значения и интервалов процентиля 2,5% и 97,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] Лоэффлер, Г. и П. Н. Пош. Моделирование кредитных рисков с использованием Excel и VBA. Западный Сассекс, Англия: Wiley Finance, 2007.