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

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

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

Следующий пример иллюстрирует использование Модели в пространстве состояний (SSM) и Фильтра Калмана путем подбора кривой популярному Diebold-литию модель [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

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

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

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 является недиагональным. Напротив, однако, модель налагает diagonality на ковариационную матрицу H из воздействий уравнения наблюдения et таким образом, что отклонения наблюдаемых урожаев в различных сроках платежа являются некоррелироваными.

Задайте скрытые состояния как настроенные средним значением факторы

xt=ft-μ

и настроенный прерыванием, или выкачанный, урожаи

yt=yt-Λμ

и займите место в уравнения выше, и система пространства состояний Diebold-лития может быть переписана как

xt=Axt-1+ηt

yt=yt-Λμ=Λxt+et

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

xt=Axt-1+But

yt=Cxt+Dϵt

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

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

ηt=But

et=Dϵt

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

Поэтому в приложении свойства линейного преобразования Гауссовых случайных векторов, ковариации формулировки Diebold-лития связаны с параметрами формулировки 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 и diagonality ограничение ковариационной матрицы H=DD, оба из которых являются особенно подходящими к неявному подходу. Кроме того, функция отображения также позволяет нам оценивать λ параметр уровня затухания также.

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

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

Данные о кривой доходности

Данные об урожае состоят из временных рядов 29 лет ежемесячного не сглаживавшего Fama-счастья Казначейские урожаи нулевого купона США, как используется и обсуждено в [1] и [2], для сроков платежа 3, 6, 9, 12, 15, 18, 21, 24, 30, 36, 48, 60, 72, 84, 96, 108, и 120 месяцев. Урожаи выражены в проценте и зарегистрированы в конце каждого месяца, начав январь 1972 и конечный декабрь 2000 для в общей сложности 348 ежемесячных кривых 17 сроков платежа каждый. Для дополнительных деталей относительно не сглаживавших урожаев Fama-счастья см. библиографию.

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

Как альтернатива, набор данных мог также быть разделен в период в выборке, используемый, чтобы оценить каждую модель и период из выборки, зарезервированный, чтобы оценить производительность прогноза. В концепции такой анализ точности прогноза мог быть проведен способом, подобным опубликованному в Таблицах 4-6 Диболда и Ли [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, и указывает, что функция отображения будет вызвана с входным вектором параметра параметрические усилители. Дополнительные входные параметры к функции отображения задают урожай и информацию о зрелости статически, и используются, чтобы инициализировать функцию способом, подходящим для последующего использования по оценке. Для дополнительных деталей смотрите, что помощник функционирует Example_DieboldLi.

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

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

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

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

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

Начиная с ковариационной матрицы H в Diebold-литии формулировка является диагональной, матрица 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
plot(dates, [beta(:,2) estimatedStates(:,2)])
title('Slope (Short-Term Factor)')
ylabel('Percent')
datetick x
legend({'Two-Step','State-Space Model'},'location','best')

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

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

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

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')

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

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

Исследование приведенной выше таблицы показывает, что, несмотря на то, что SMM не всегда лучше, чем двухступенчатый подход во всех сроках платежа, это обеспечивает значительно лучшую подгонку в большинстве промежуточных сроков платежа с 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, моделируемая матрица кривой доходности имеет третью размерность, чтобы сохранить 100 000 моделируемых путей.

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

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
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')

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

Следующий сегмент кода отображает распределение моделируемого 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 (%)')

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

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

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

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

Библиография

Этот пример основан на следующих бумагах, первые две из которых могут быть найдены по https://www.sas.upenn.edu/~fdiebold/ResearchPapersChronological.htm.

[1] Diebold, F.X и литий, C. (2006), "Предсказывая термин структура урожаев государственной облигации", журнал эконометрики, 130, 337-364.

[2] Diebold, F.X., Rudebusch, G.D. и Aruoba, B. (2006), "Макроэкономика и кривая доходности: динамический скрытый факторный подход", журнал эконометрики, 131, 309-338.

[3] Нельсон, Р.К. и Зигель, A.F (1987), "Экономное моделирование кривых доходности", журнал бизнеса, 60, 4, 473-489.

Кроме того, целый не сглаживавший набор данных кривой доходности Fama-счастья, подмножество которого используется в [1] и [2], может быть найден по https://www.sas.upenn.edu/~fdiebold/papers/paper49/FBFITTED.txt.