Использование фильтра Калмана для оценки и прогнозирования модели Диболда-Ли

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

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

Следующий пример иллюстрирует использование Модели Пространства Состояний (SSM) и фильтра Калмана, подгоняя популярную модель Diebold-Li только для выходов [2] к ежемесячным временным рядам кривых доходности, полученных из данных государственных облигаций. В примере освещаются возможности оценки, симуляции, сглаживания и прогнозирования функциональности SSM, доступной в Econometrics Toolbox™, и сравнивается его оценка эффективности с оценкой более традиционных эконометрических методов.

Пример сначала представляет модель Диболда-Ли, затем описывает параметрическое представление пространства состояний, поддерживаемое функциональностью SSM Econometrics Toolbox, а затем иллюстрирует, как модель Диболда-Ли может быть сформулирована в представлении пространства состояний. После того, как сформулированный в представлении пространства состояний, пример воспроизводит результаты оценки в выборке, опубликованные в [2], и сравнивает результаты, полученные с результатами двухэтапного подхода, как изложено в [1].

Пример завершается простым рисунком прогнозирования минимальной средней квадратной ошибки (MMSE) и возможностей симуляции Монте-Карло функциональности SSM.

Модель Модели Диболда-Ли Выражения кривой

Модель Диболда-Ли является вариантом модели Нельсона-Сигеля [3], полученной путем репараметризации исходной формулировки. Для даты наблюдения t и время до зрелости τ, модель Диболда-Ли характеризует выражение yt(τ) как функция четырех параметров:

yt(τ)=Lt+St(1-e-λτλτ)+Ct(1-e-λτλτ-e-λτ)

в котором Lt - долгосрочный фактор, или уровень, St - краткосрочный фактор, или уклон, и Ct - среднесрочный фактор, или искривление. λ определяет зрелость, при которой загрузка на кривизну максимизируется, и управляет экспоненциальной скоростью распада модели.

Модель пространства состояний (SSM) Econometrics Toolbox

The ssm функция Econometrics Toolbox позволяет пользователям задавать заданную задачу в представлении пространства состояний. После того, как параметрическая форма SSM задана, дополнительные связанные функции позволяют пользователям оценивать параметры модели через максимальную правдоподобность, получать сглаженные и фильтрованные состояния через обратную и прямую рекурсию, соответственно, получать оптимальные прогнозы ненаблюдаемых (скрытых) состояний и наблюдаемых данных и моделировать выборку путей скрытых состояний и наблюдаемых данных через Монте-Карло.

Для вектора состояния xt и вектор наблюдения ytпараметрическая форма SSM Econometrics Toolbox выражена в следующем представлении линейного пространства состояний:

xt=Atxt-1+Btut

yt=Ctxt+Dtϵt

где ut и ϵt являются некоррелированными процессами вектора белого шума с единичной дисперсией. В приведенном выше представлении SSM первое уравнение упоминается как уравнение состояния, а второе как уравнение наблюдения. Параметры модели At, Bt, Ct и Dt называются переходом между состояниями, состояниями нарушения порядка загрузки, чувствительностью к измерениям и инновационными матрицами наблюдений, соответственно.

Хотя функции SSM в Econometrics Toolbox будут включать изменяющиеся во времени (динамические) параметры At, Bt, Ct и Dt значения и размерности которого изменяются со временем, в модели Диболда-Ли эти параметры являются инвариантными по времени (статическими).

Пространственно-государственная формулировка модели Диболда-Ли

Представленное выше Модель Диболда-Ли сформулирована таким образом, что коэффициенты уровня, наклона и кривизны следуют вектору авторегрессивному процессу первого порядка, или VAR (1), и как таковая модель сразу же образует систему в пространстве состояний. Используя обозначение Diebold, Rudebusch и Aruoba [2], уравнение перехода состояния, которое управляет динамикой вектора состояния (коэффициент уровня, наклона и кривизны), записывается как

(Lt-μLSt-μSCt-μC)=(a11a12a13a21a22a23a31a32a33)(Lt-1-μLSt-1-μSCt-1-μC)+(ηt(L)ηt(S)ηt(C))

Соответствующее уравнение наблюдения (измерения) записывается как

(yt(τ1)yt(τ2)yt(τN))=(11-e-λτ1λτ11-e-λτ1λτ1-e-λτ111-e-λτ2λτ21-e-λτ2λτ2-e-λτ211-e-λτNλτN1-e-λτNλτN-e-λτN)(LtStCt)+(et(τ1)et(τ2)et(τN))

В векторно-матричном обозначении модель Диболда-Ли переписывается как следующая система в пространстве состояний для вектора 3-D средних скорректированных факторов ft и наблюдаемые выражения yt:

(ft-μ)=A(ft-1-μ)+ηt

yt=Λft+et

где ортогональный, Гауссов белый шум обрабатывает ηt и et определяются таким образом, чтобы

(ηtet)WN((00),(Q00H))

Более того, модель Диболда-Ли сформулирована так, что коэффициент уравнения состояния возмущает ηt коррелируют, и, следовательно, соответствующую ковариационную матрицу Q не является диагональным. Однако, напротив, модель накладывает диагональность на ковариационную матрицу H уравнения наблюдения нарушений порядка et таким образом, отклонения наблюдаемых выражений в различных зрелостях являются некоррелированными.

Задайте скрытые состояния как средние скорректированные множители

xt=ft-μ

и регулируемый перехватом, или дефляционный, дает

yt=yt-Λμ

и подставьте в уравнения выше, и системы в пространстве состояний Диболда-Ли могут быть переписаны как

xt=Axt-1+ηt

yt=yt-Λμ=Λxt+et

Теперь сравните систему в пространстве состояний Diebold-Li с формулировкой, поддерживаемой функциональностью SSM Econometrics Toolbox,

xt=Axt-1+But

yt=Cxt+Dϵt

Из вышеприведенных систем в пространстве состояний мы сразу видим, что матрица переходов A является тем же самым в обеих формулировках и что матрица Diebold-Li Λ является просто матрицей чувствительности измерения состояния C в рецептуре SSM.

Связь между нарушениями порядка, однако, и, следовательно, параметризация B и D матрицы формулировки SSM, более тонкие. Чтобы увидеть эту связь, заметьте, что

ηt=But

et=Dϵt

Поскольку нарушения порядка в каждой модели должны быть одинаковыми, ковариация ηt в формулировке Diebold-Li должен равняться ковариации масштабированного процесса SSM белого шума But. Точно так же ковариация et должен равняться процессу Dϵt. Более того, начиная с ut и ϵt Нарушения порядка в формулировке SSM заданы как некоррелированные процессы вектора белого шума с дисперсией единиц, их матрицы ковариации являются тождествами матрицами.

Поэтому в применении свойства линейного преобразования Гауссовых случайных векторов ковариации композиции Diebold-Li связаны с параметрами формулировки SSM, такими что

Q=BB

H=DD

Чтобы сформулировать модель Диболда-Ли способом, поддающимся оценке Econometrics Toolbox, пользователи должны сначала создать модель SSM с ssm функция. Кроме того, модель SSM может быть создана с неизвестными параметрами, заданными явно или неявно.

Чтобы создать модель SSM явно, все необходимые матрицы A, B, C, и D должны быть поставлены. В явном подходе неизвестные параметры появляются как NaN значения для указания наличия и размещения неизвестных значений; каждый NaN запись соответствует уникальному параметру для оценки.

Хотя создание модели явно путем непосредственного определения параметров A, B, C, и D иногда более удобно, чем неявно задавать модель, утилита явного подхода ограничена тем, что каждый оцененный параметр влияет и однозначно ассоциируется с одним элементом массива матрицы коэффициентов.

Чтобы создать модель неявно, пользователи должны задать функцию отображения параметров, которая преобразует вектор входного параметра в параметры модели A, B, C, и D. В неявном подходе функция отображения сама по себе задает модель и особенно удобна для оценки сложных моделей и для наложения различных параметрических ограничений.

Кроме того, среда SSM не хранит ненулевые смещения переменных состояния или каких-либо параметров, сопоставленных с компонентами регрессии в уравнении наблюдения. Вместо этого, компонент регрессии оценивается путем отклонения наблюдений yt. Точно так же другие связанные функции SSM, такие как filter, smooth, forecast, и simulate, предположим, что наблюдения уже спущены вручную или предварительно обработаны, чтобы принять во внимание любые смещения или регрессионый компонент в уравнении наблюдения.

Поскольку модель Диболда-Ли включает ненулевое смещение (среднее значение) для каждого из трех факторов, который представляет простой, но распространенный регрессионный компонент, этот пример использует функцию отображения. Более того, функция отображения также накладывает ограничение симметрии на ковариационную матрицу Q=BB и ограничение по диагонали ковариационной матрицы H=DD, оба из которых особенно хорошо подходят для неявного подхода. В сложение функция отображения также позволяет нам оценить λ параметр скорости затухания также.

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

В подходе, взятом в этом примере, включение смещений факторов в уравнение состояния представления SSM вводит регрессионый компонент в уравнение наблюдения. Чтобы позволить эту корректировку, этот пример использует функцию отображения параметров, чтобы дефлировать наблюдаемые выражения во время оценки модели. Преимущество этого подхода в том, что размерность вектора состояний ненаблюдаемых факторов остается 3, и, следовательно, непосредственно соответствует 3-D выходам факторной модели Diebold, Rudebusch и Aruoba [2]. Недостатком является то, что, поскольку оценка выполняется на дефлированных выражениях, другие функции SSM должны также учитывать эту регулировку путем сдувания и последующего надувания выражений.

Данные кривой выражения

Данные по выражению состоят из временных рядов в 29 лет ежемесячных бессмертных Fama-Bliss US Treasury нулевых купонных выражений, используемых и обсуждаемых в [1] и [2], для сроков 3, 6, 9, 12, 15, 18, 21, 24, 30, 36, 48, 60, 72, 84, 96, 108 и 120 месяцев. Выражения выражаются в процентах и регистрируется в конце каждого месяца, начиная с января 1972 года и заканчивая декабрем 2000 года, в общей сложности 348 ежемесячных кривых по 17 зрелостей каждый. Весь несмодированный набор данных кривой выражения Fama-Bliss, подмножество которого используется в [1] и [2], можно найти в https://www.sas.upenn.edu/~fdiebold/papers/paper49/FBFITTED.txt.

Следующий анализ использует весь набор данных Diebold-Li, чтобы воспроизвести результаты оценки, опубликованные в [2], и сравнивает двухэтапный и SSM подходы.

В качестве альтернативы набор данных также может быть разбит на период в выборке, используемый для оценки каждой модели, и период вне выборки, зарезервированный для оценки эффективности прогноза. В концепции такой анализ точности прогноза может проводиться способом, подобным тому, который опубликован в таблицах 4-6 Diebold и Li [1]. Однако для этого потребуется слишком много времени, чтобы завершить, и, следовательно, непригодно для живого примера MATLAB.

load Data_DieboldLi
maturities = maturities(:);  % ensure a column vector
yields = Data(1:end,:);      % in-sample yields for estimation

Двухэтапная оценка модели Диболда-Ли

В своей оригинальной статье [1] Диболд и Ли оценивают параметры своей модели кривой выражения с помощью двухэтапного подхода:

  • С λ сохранен фиксированным, оценить уровень, уклон и параметры кривизны для каждой ежемесячной кривой выражения. Этот процесс повторяется для всех наблюдаемых кривых выражения и обеспечивает 3-D временные ряды оценок ненаблюдаемого уровня, наклона и коэффициентов кривизны.

  • Подбор авторегрессионной модели первого порядка к временным рядам факторов, выведенных на первом шаге.

Путем фиксации λ на первом этапе, то, что в противном случае было бы нелинейный метод наименьших квадратов оценкой, заменяется относительно простой обычной оценкой методом наименьших квадратов (OLS). В рамках среды Нельсона-Зигеля принято устанавливать λ = 0,0609, что подразумевает, что значение, при котором загрузка на кривизну (среднесрочный фактор) максимизирована, происходит через 30 месяцев.

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

Первый шаг приравнивает 3 фактора (уровень, наклон и кривизна) к коэффициентам регрессии, полученным OLS, и накапливает 3-D временные ряды оцененных факторов, повторяя подгонку OLS для каждого наблюдаемого кривого выражения. Шаг OLS выполняется ниже, и коэффициенты регрессии и невязки линейной модели подгонки сохраняются для дальнейшего использования.

lambda0 = 0.0609;
X = [ones(size(maturities)) (1-exp(-lambda0*maturities))./(lambda0*maturities) ...
    ((1-exp(-lambda0*maturities))./(lambda0*maturities)-exp(-lambda0*maturities))];

beta = zeros(size(yields,1),3);
residuals = zeros(size(yields,1),numel(maturities));

for i = 1:size(yields,1)
    EstMdlOLS = fitlm(X, yields(i,:)', 'Intercept', false);
    beta(i,:) = EstMdlOLS.Coefficients.Estimate';
    residuals(i,:) = EstMdlOLS.Residuals.Raw';
end

Теперь, когда 3-D временные ряды факторов был вычисляемы, второй шаг подходит для временных рядов с авторегрессивной (AR) моделью первого порядка. На данной точке существует два выбора для подгонки AR:

  • Подгонка каждого фактора к одномерной модели AR (1) отдельно, как в [1].

  • Подгонка всех 3 факторов к модели VAR (1) одновременно, как в [2]

Несмотря на то, что Econometrics Toolbox поддерживает как одномерную, так и многомерную оценку AR, в последующем модель VAR (1) подбирается к 3-D временным рядам факторов. Для согласованности с формулировкой SSM, которая работает со средними скорректированными факторами, модель VAR (1) включает аддитивную константу, учитывающую среднее значение каждого фактора.

EstMdlVAR = estimate(varm(3,1), beta);

Оценка SSM модели Диболда-Ли

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

Следующая строка кода создает модель SSM путем передачи функции отображения параметра Example_DieboldLi на ssm функция и указывает, что функция отображения будет вызвана с параметрами вектора входного параметра. Дополнительные входные параметры в функции отображения задают статическую информацию о выражении и зрелости и используются для инициализации функции способом, подходящим для последующего использования в оценке. Для получения дополнительной информации смотрите функцию helper Example_DieboldLi.

Mdl = ssm(@(params)Example_DieboldLi(params,yields,maturities));

Максимальная оценка правдоподобия (MLE) моделей SSM через фильтр Калмана, как известно, чувствительна к начальным значениям параметров. В этом примере мы используем результаты двухэтапного подхода для инициализации оценки.

В частности, начальные значения перешли к SSM estimate функция кодируются в вектор-столбец. В этом примере матрица A модель SSM устанавливается в оцененную матрицу коэффициентов AR 3 на 3 модели VAR (1), сложенную столбцовым способом в первые 9 элементов вектора-столбца .

Из обсуждения выше, матрица B модели SSM является матрицей 3 на 3 с ограничениями, что Q=BB, и тем, что следует за оценкой B является более низким фактором Холецкого Q. Поэтому, чтобы гарантировать, что Q является симметричным, положительно определенным и допускает ненулевые недиагональные ковариации, 6 элементов, сопоставленных с более низким фактором Холецкого Q должно быть выделено в начальном векторе-столбце параметра. Однако в последующем мы инициализируем элементы вектора начального параметра с квадратным корнем предполагаемых инновационных отклонений модели VAR (1).

Другими словами, когда вектор параметра инициализируется, мы принимаем, что ковариационная матрица Q является диагональным, но все еще резервным пространством для нижележащих элементов нижнего фактора Холецкого ковариационной матрицы, таким что Q=BB. Снова, вектор начального параметра расположен таким образом, что элементы B вдоль и ниже основной диагонали сложены столбчатым способом.

Поскольку ковариационная матрица H в формулировке Diebold-Li диагональна, матрица D модели SSM также ограничена диагональю, так что H=DD. Поэтому элементы вектора начального параметра, сопоставленные с D заданы в квадратный корень из диагональных элементов матрицы выборочной ковариации невязок модели VAR (1), один такой элемент для каждой зрелости данных входов выражения (в этом примере 17 зрелостей), снова сложенный столбцом.

Обратите внимание, что C матрица модели SSM не оценивается непосредственно, а скорее является полностью параметризованной функцией предполагаемого параметра скорости затухания λ, и вычисляется внутри функцией отображения. Более того, λ параметр инициализируется до традиционного значения 0.0609 и сохранен в последнем элементе начального вектора-столбца параметра.

Наконец, элементы вектора начального параметра, связанного со средством фактора, просто устанавливаются на средние значения выборки коэффициентов регрессии, полученных OLS на первом шаге исходного двухэтапного подхода.

A0 = EstMdlVAR.AR{1};      % Get the VAR(1) matrix (stored as a cell array)
A0 = A0(:);                % Stack it columnwise
Q0 = EstMdlVAR.Covariance; % Get the VAR(1) estimated innovations covariance matrix
B0 = [sqrt(Q0(1,1)); 0; 0; sqrt(Q0(2,2)); 0; sqrt(Q0(3,3))];
H0 = cov(residuals);       % Sample covariance matrix of VAR(1) residuals
D0 = sqrt(diag(H0));       % Diagonalize the D matrix
mu0 = mean(beta)';
param0 = [A0; B0; D0; mu0; lambda0];

Теперь, когда начальные значения были вычислены, установите некоторые параметры оптимизации и оцените модель с помощью фильтра Калмана, вызывая функцию SSM estimate. В этом примере ковариационная матрица H=DD является диагональным, и поэтому мы принимаем решение обратиться к одномерному лечению многомерного ряда, чтобы улучшить эффективность оценки во время выполнения.

options = optimoptions('fminunc','MaxFunEvals',25000,'algorithm','quasi-newton', ...
    'TolFun' ,1e-8,'TolX',1e-8,'MaxIter',1000,'Display','off');

[EstMdlSSM,params] = estimate(Mdl,yields,param0,'Display','off', ...
    'options',options,'Univariate',true);

lambda = params(end);        % Get the estimated decay rate    
mu = params(end-3:end-1)';   % Get the estimated factor means

Сравнение результатов оценки параметров

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

Сначала сравните оцененную матрицу переходов A модели SSM в матрицу коэффициентов AR (1), полученную из модели VAR.

dispvars = {"SSM State Transition Matrix (A):";...
    "--------------------------------";...
    EstMdlSSM.A};
cellfun(@disp,dispvars)
SSM State Transition Matrix (A):
--------------------------------
    0.9944    0.0286   -0.0221
   -0.0290    0.9391    0.0396
    0.0253    0.0229    0.8415
dispvars = {"Two-Step State Transition Matrix (A):";...
    "--------------------------------";...
    EstMdlVAR.AR{1}};
cellfun(@disp,dispvars)
Two-Step State Transition Matrix (A):
--------------------------------
    0.9901    0.0250   -0.0023
   -0.0281    0.9426    0.0287
    0.0518    0.0125    0.7881

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

Теперь исследуйте состояние нарушения порядка загрузки матрице B и сравните соответствующую ковариационную матрицу инноваций Q=BB полученный от SSM к инновационной ковариации модели VAR (1).

dispvars = {"SSM State Disturbance Loading Matrix (B):";...
    "-----------------------------------------";...
    EstMdlSSM.B};
cellfun(@disp,dispvars)
SSM State Disturbance Loading Matrix (B):
-----------------------------------------
    0.3076         0         0
   -0.0453    0.6170         0
    0.1421    0.0255    0.8824
dispvars = {"SSM State Disturbance Covariance Matrix (Q = BB''):";...
    "--------------------------------------------------";...
    EstMdlSSM.B * EstMdlSSM.B'};
cellfun(@disp,dispvars)
SSM State Disturbance Covariance Matrix (Q = BB''):
--------------------------------------------------
    0.0946   -0.0139    0.0437
   -0.0139    0.3827    0.0093
    0.0437    0.0093    0.7995
dispvars = {"Two-Step State Disturbance Covariance Matrix (Q):";...
    "-------------------------------------------------";...
    EstMdlVAR.Covariance};
cellfun(@disp,dispvars)
Two-Step State Disturbance Covariance Matrix (Q):
-------------------------------------------------
    0.1149   -0.0266   -0.0719
   -0.0266    0.3943    0.0140
   -0.0719    0.0140    1.2152

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

Наконец, сравните средство фактора, полученное из SSM, с средствами двухэтапного подхода.

dispvars = {"SSM Factor Means:";...
    "-----------------";...
    mu};
cellfun(@disp,dispvars)
SSM Factor Means:
-----------------
    8.0246   -1.4423   -0.4188
dispvars = {"Two-Step Factor Means:";...
    "----------------------";...
    mu0'};
cellfun(@disp,dispvars)
Two-Step Factor Means:
----------------------
    8.3454   -1.5724    0.2030

В этом случае оценочные средства находятся в относительно близком согласии для коэффициентов уровня и наклона, хотя кривизна отличается между этими двумя подходами.

Сравнение выводимых факторов

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

В двухэтапном подходе латентные состояния (факторы) являются коэффициентами регрессии, оцененными на шаге OLS.

В подходе SSM smooth функция реализует сглаживание Калмана таким образом, что для t = 1,2,...,T сглаженные состояния заданы как

E[xt|yT,...,y1]

Однако прежде чем мы активируем smooth функция, напоминая из обсуждения выше, что среда SSM должна учитывать корректировки смещения, сделанные в наблюдаемых выражениях во время оценки. В частности, во время оценки функция отображения параметров отклоняет исходные наблюдения, и, следовательно, работает с скорректированными по смещению выражениями yt=yt-Λμ вместо исходных выражений.

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

Поэтому, прежде чем мы вызовем smooth функция, чтобы вывести предполагаемые состояния, мы должны сначала сдвинуть исходные выражения путем вычитания точки пересечения, сопоставленной с предполагаемым смещением, Cμ=Λμ, для компенсации корректировки смещения, которая произошла во время оценки. Однако состояния, выведенные затем, будут соответствовать дефлированным выражениям, когда на самом деле мы заинтересованы в самих фактических состояниях (факторах уровня, наклона и кривизны), а не в их смещенных аналогах. Поэтому после сглаживания отклоненные состояния должны быть повторно скорректированы путем добавления оценочного среднего, μ, к факторам.

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

intercept = EstMdlSSM.C * mu';
deflatedYields = bsxfun(@minus,yields,intercept');
deflatedStates = smooth(EstMdlSSM,deflatedYields);
estimatedStates = bsxfun(@plus,deflatedStates,mu);

Теперь, когда мы предположили состояния, мы можем сравнить индивидуальные коэффициенты уровня, наклона и кривизны, выведенные из SSM и двухэтапных подходов.

Сначала исследуйте уровень, или долгосрочный фактор.

figure
plot(dates, [beta(:,1) estimatedStates(:,1)])
title('Level (Long-Term Factor)')
ylabel('Percent')
datetick x
legend({'Two-Step','State-Space Model'},'location','best')

Figure contains an axes. The axes with title Level (Long-Term Factor) contains 2 objects of type line. These objects represent Two-Step, State-Space Model.

Теперь исследуйте наклон, или краткосрочный фактор.

figure
plot(dates, [beta(:,2) estimatedStates(:,2)])
title('Slope (Short-Term Factor)')
ylabel('Percent')
datetick x
legend({'Two-Step','State-Space Model'},'location','best')

Figure contains an axes. The axes with title Slope (Short-Term Factor) contains 2 objects of type line. These objects represent Two-Step, State-Space Model.

Теперь исследуйте кривизну, или среднесрочный фактор,

figure
plot(dates, [beta(:,3) estimatedStates(:,3)])
title('Curvature (Medium-Term Factor)')
ylabel('Percent')
datetick x
legend({'Two-Step','State-Space Model'},'location','best')

Figure contains an axes. The axes with title Curvature (Medium-Term Factor) contains 2 objects of type line. These objects represent Two-Step, State-Space Model.

а также расчетный параметр скорости затухания λ сопоставлен с кривизной.

dispvars = {"SSM Decay Rate (Lambda):";...
    "------------------------";...
    lambda};
cellfun(@disp,dispvars)
SSM Decay Rate (Lambda):
------------------------
    0.0778

Заметьте, что предполагаемый параметр скорости затухания несколько больше значения, используемого двухэтапным подходом (0,0609).

Напомним, что λ определяет зрелость, при которой загрузки на кривизне максимизируются. В двухэтапном подходе λ фиксируется на уровне 0,0609, отражая несколько произвольное решение максимизировать кривизну загрузки в точности 2,5 года (30 месяцев). В противоположность этому SSM оценивает максимальную загрузку, которая происходит всего лишь менее чем в 2 года (23,1 месяца), что можно увидеть путем построения графика кривизны загрузки, связанной с каждым значением λ. В любом случае его гумповидное поведение как функция зрелости показывает, почему искривление интерпретируется как среднесрочный фактор.

tau = 0:(1/12):max(maturities);    % Maturity (months)
decay = [lambda0 lambda];
loading = zeros(numel(tau), 2);

for i = 1:numel(tau)
    loading(i,:) = ((1-exp(-decay*tau(i)))./(decay*tau(i))-exp(-decay*tau(i))); 
end

figure
plot(tau,loading)
title('Loading on Curvature (Medium-Term Factor)')
xlabel('Maturity (Months)')
ylabel('Curvature Loading')
legend({'\lambda = 0.0609 Fixed by Two-Step', ['\lambda = ' num2str(lambda) ' Estimated by SSM'],},'location','best')

Figure contains an axes. The axes with title Loading on Curvature (Medium-Term Factor) contains 2 objects of type line. These objects represent \lambda = 0.0609 Fixed by Two-Step, \lambda = 0.077764 Estimated by SSM.

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

В качестве окончательного сравнения эффективности в выборке мы теперь сравниваем средства и стандартные отклонения невязок уравнений наблюдений двух подходов способом, подобным таблице 2 [2]. Результаты выражены в базисных точках (б.п.).

При создании таблицы ниже обратите внимание, что матрица чувствительности измерения состояния C в формулировке SSM также является матрицей загрузок Λ найдено в [2].

residualsSSM = yields - estimatedStates*EstMdlSSM.C';
residuals2Step = yields - beta*X';

residualMeanSSM = 100*mean(residualsSSM)';
residualStdSSM = 100*std(residualsSSM)';
residualMean2Step = 100*mean(residuals2Step)';
residualStd2Step = 100*std(residuals2Step)';

dispvars = {"  -------------------------------------------------";...
    "              State-Space Model       Two-Step'";...
    "            -------------------  ------------------";...
    "                       Standard            Standard";...
    "  Maturity    Mean    Deviation    Mean   Deviation";...
    "  (Months)   (bps)      (bps)     (bps)     (bps)  ";...
    "  --------  --------  ---------  -------  ---------";...
    [maturities residualMeanSSM residualStdSSM residualMean2Step residualStd2Step]};
cellfun(@disp,dispvars)
  -------------------------------------------------
              State-Space Model       Two-Step'
            -------------------  ------------------
                       Standard            Standard
  Maturity    Mean    Deviation    Mean   Deviation
  (Months)   (bps)      (bps)     (bps)     (bps)  
  --------  --------  ---------  -------  ---------
    3.0000  -12.6440   22.3639   -7.3922   14.1709
    6.0000   -1.3392    5.0715    2.1914    7.2895
    9.0000    0.4922    8.1084    2.7173   11.4923
   12.0000    1.3059    9.8672    2.5472   11.1200
   15.0000    3.7130    8.7073    4.2189    9.0558
   18.0000    3.5893    7.2946    3.5515    7.6721
   21.0000    3.2308    6.5112    2.7968    7.2221
   24.0000   -1.3996    6.3890   -2.1168    7.0764
   30.0000   -2.6479    6.0614   -3.6923    7.0129
   36.0000   -3.2411    6.5915   -4.4095    7.2674
   48.0000   -1.8508    9.7019   -2.9761   10.6242
   60.0000   -3.2857    8.0349   -4.2314    9.0296
   72.0000    1.9737    9.1370    1.2238   10.3745
   84.0000    0.6935   10.3689    0.1196    9.8012
   96.0000    3.4873    9.0440    3.0626    9.1220
  108.0000    4.1940   13.6422    3.8936   11.7942
  120.0000   -1.3074   16.4545   -1.5043   13.3544

Изучение приведенной выше таблицы показывает, что, хотя СММ не всегда лучше, чем двухэтапный подход во всех зрелостях, он обеспечивает значительно лучшую подгонку в большинстве промежуточных зрелостей от 6 до 60 месяцев.

Прогнозирование и симуляция Монте-Карло

В качестве окончательного рисунка мы теперь выделяем прогнозирование минимальной средней квадратной ошибки (MMSE) и возможности симуляции Монте-Карло функциональности SSM.

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

Используя дефляционные выражения, мы теперь вызываем forecast функция для вычисления прогнозов MMSE по дефлированным выражениям 1,2,..., 12 месяцев в будущее. Фактические прогнозируемые выражения затем вычисляются путем добавления предполагаемого смещения Cμ к дефлированным аналогам.

Обратите внимание, что прогноз кривой выражения будет иметь строку для каждого будущего периода в горизонте прогноза (12 в этом примере) и столбец для каждого срока в каждой кривой выражения (17 в этом примере).

horizon = 12;   % forecast horizon (months)

[forecastedDeflatedYields,mse] = forecast(EstMdlSSM,horizon,deflatedYields);
forecastedYields = bsxfun(@plus,forecastedDeflatedYields,intercept');

Теперь, когда детерминированные прогнозы MMSE были вычислены с помощью forecast функция, теперь мы иллюстрируем, как те же результаты могут быть аппроксимированы с помощью simulate функция.

Однако перед выполнением симуляции Монте-Карло мы должны сначала инициализировать вектор средних значений и ковариационную матрицу начальных состояний (факторов) подобранной модели SSM, чтобы убедиться, что симуляция начинается с самой последней доступной информации. Для этого в следующем сегменте кода вызывается smooth функция для получения сглаженных состояний, полученных обратной рекурсией.

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

[~,~,results] = smooth(EstMdlSSM,deflatedYields);  % FILTER could also be used
EstMdlSSM.Mean0 = results(end).SmoothedStates;     % initialize the mean
cov0 = results(end).SmoothedStatesCov;
EstMdlSSM.Cov0 = (cov0 + cov0')/2;                 % initialize the covariance

Теперь, когда начальное среднее значение и ковариация состояний были установлены, вычислите нерезультатные прогнозы с помощью симуляции Монте-Карло.

В следующем сегменте кода каждый путь расчета представляет будущее развитие моделируемой кривой выражения на 12-месячном прогнозном горизонте. Симуляция повторяется 100 000 раз.

Способом, подобным прогнозам, вычисленным ранее, моделируемая матрица кривой выражения имеет строку для каждого будущего периода в прогнозном горизонте (12 в этом примере) и столбец для каждого срока (17 в этом примере). Однако, в отличие от матрицы прогноза MMSE, моделируемая матрица кривой выражения имеет третью размерность для хранения 100000 моделируемых путей.

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

rng('default')
nPaths = 100000;
simulatedDeflatedYields = simulate(EstMdlSSM, horizon, nPaths);
simulatedYields = bsxfun(@plus, simulatedDeflatedYields, intercept');

Теперь, когда выражения были моделированы, вычислите среднее значение выборки и стандартное отклонение 100 000 испытаний. Эта статистика является выборочным аналогом прогнозов MMSE и стандартных ошибок. Чтобы облегчить вычисление выборочных средств и стандартных отклонений, матрица моделируемых выражений переупорядочена таким образом, что теперь она имеет 100 000 строк, 12 столбцов и 17 страниц.

simulatedYields = permute(simulatedYields,[3 1 2]); % re-order for convenience
forecasts = zeros(horizon,numel(maturities));
standardErrors = zeros(horizon,numel(maturities));

for i = 1:numel(maturities)
    forecasts(:,i) = mean(simulatedYields(:,:,i));
    standardErrors(:,i) = std(simulatedYields(:,:,i));
end

Теперь визуально сравните прогнозы MMSE и соответствующие стандартные ошибки, полученные из forecast функция наряду с функциями, полученными из simulate функция через Монте-Карло. Результаты практически идентичны.

figure
plot(maturities, [forecasts(horizon,:)' forecastedYields(horizon,:)'])
title('12-Month-Ahead Forecasts: Monte Carlo vs. MMSE')
xlabel('Maturity (Months)')
ylabel('Percent')
legend({'Monte Carlo','Minimum Mean Square Error'},'location','best')

Figure contains an axes. The axes with title 12-Month-Ahead Forecasts: Monte Carlo vs. MMSE contains 2 objects of type line. These objects represent Monte Carlo, Minimum Mean Square Error.

figure
plot(maturities, [standardErrors(horizon,:)' sqrt(mse(horizon,:))'])
title('12-Month-Ahead Forecast Standard Errors: Monte Carlo vs. MMSE')
xlabel('Maturity (Months)')
ylabel('Percent')
legend({'Monte Carlo','Minimum Mean Square Error'},'location','best')

Figure contains an axes. The axes with title 12-Month-Ahead Forecast Standard Errors: Monte Carlo vs. MMSE contains 2 objects of type line. These objects represent Monte Carlo, Minimum Mean Square Error.

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

Следующий сегмент кода отображает распределение моделируемого 12-месячного выражения за один, шесть и 12 месяцев до будущего, аналогичное по духу прогнозирующему эксперименту, показанному в таблицах 4-6 [1].

index12 = find(maturities == 12);  % page index of 12-month yield
bins = 0:0.2:12;

figure
subplot(3,1,1)
histogram(simulatedYields(:,1,index12), bins, 'Normalization', 'pdf')
title('Probability Density Function of 12-Month Yield')
xlabel('Yield 1 Month into the Future (%)')

subplot(3,1,2)
histogram(simulatedYields(:,6,index12), bins, 'Normalization', 'pdf')
xlabel('Yield 6 Months into the Future (%)')
ylabel('Probability')

subplot(3,1,3)
histogram(simulatedYields(:,12,index12), bins, 'Normalization', 'pdf')
xlabel('Yield 12 Months into the Future (%)')

Figure contains 3 axes. Axes 1 with title Probability Density Function of 12-Month Yield contains an object of type histogram. Axes 2 contains an object of type histogram. Axes 3 contains an object of type histogram.

Сводные данные

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

Этот пример формулирует популярную модель структуры Diebold-Li только для доходностей в представлении пространства состояний, и из временных рядов кривых выражения выводит латентные состояния в попытке определить базовые факторы, способствующие эволюции процентных ставок. Модель Диболда-Ли является динамической моделью с тремя факторами, новым пониманием которых является интерпретация факторов как уровня, наклона и кривизны.

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

Ссылки

[1] Diebold, F.X., and C. Li. «Прогнозирование срочной структуры выражений государственных облигаций». Журнал эконометрики. Том 130, № 2, 2006, стр. 337-364.

[2] Diebold, F. X., G. D. Rudebusch, and B. Aruoba (2006), «The Macroeconomy and the Yield Curve: A Dynamic Latent Factor Approach». Журнал эконометрики. Том 131, 2006, стр. 309-338.

[3] Нельсон, Р. К. и А. Ф. Зигель. Parsimonious Modeling of Yield Curves (неопр.) (недоступное моделирование). Журнал бизнеса. Том 60, № 4, 1987, с. 473-489.