После финансового кризиса 2008 года многим финансовым фирмам были введены дополнительные положения о платежеспособности, в которых особое внимание уделялось оценке рынка и учету обязательств. Многие фирмы, в частности страховые компании и пенсионные фонды, оформляют аннуитетные контракты и несут долгосрочные обязательства, требующие сложных подходов к моделированию и прогнозированию кривых выражения.
Кроме того, поскольку значение долгосрочных обязательств значительно увеличивается в условиях низкой процентной ставки, вероятность очень низких выражений должна быть точно смоделирована. В таких ситуациях использование фильтра Калмана с его способностью включать изменяющиеся во времени коэффициенты и выводить ненаблюдаемые факторы, способствующие эволюции наблюдаемых выражений, часто подходит для оценки параметров модели кривой выражения и последующей симуляции и прогнозирования выражений, которые лежат в основе страхового и пенсионного анализа.
Следующий пример иллюстрирует использование Модели Пространства Состояний (SSM) и фильтра Калмана, подгоняя популярную модель Diebold-Li только для выходов [2] к ежемесячным временным рядам кривых доходности, полученных из данных государственных облигаций. В примере освещаются возможности оценки, симуляции, сглаживания и прогнозирования функциональности SSM, доступной в Econometrics Toolbox™, и сравнивается его оценка эффективности с оценкой более традиционных эконометрических методов.
Пример сначала представляет модель Диболда-Ли, затем описывает параметрическое представление пространства состояний, поддерживаемое функциональностью SSM Econometrics Toolbox, а затем иллюстрирует, как модель Диболда-Ли может быть сформулирована в представлении пространства состояний. После того, как сформулированный в представлении пространства состояний, пример воспроизводит результаты оценки в выборке, опубликованные в [2], и сравнивает результаты, полученные с результатами двухэтапного подхода, как изложено в [1].
Пример завершается простым рисунком прогнозирования минимальной средней квадратной ошибки (MMSE) и возможностей симуляции Монте-Карло функциональности SSM.
Модель Диболда-Ли является вариантом модели Нельсона-Сигеля [3], полученной путем репараметризации исходной формулировки. Для даты наблюдения и время до зрелости , модель Диболда-Ли характеризует выражение как функция четырех параметров:
в котором - долгосрочный фактор, или уровень, - краткосрочный фактор, или уклон, и - среднесрочный фактор, или искривление. определяет зрелость, при которой загрузка на кривизну максимизируется, и управляет экспоненциальной скоростью распада модели.
The ssm
функция Econometrics Toolbox позволяет пользователям задавать заданную задачу в представлении пространства состояний. После того, как параметрическая форма SSM задана, дополнительные связанные функции позволяют пользователям оценивать параметры модели через максимальную правдоподобность, получать сглаженные и фильтрованные состояния через обратную и прямую рекурсию, соответственно, получать оптимальные прогнозы ненаблюдаемых (скрытых) состояний и наблюдаемых данных и моделировать выборку путей скрытых состояний и наблюдаемых данных через Монте-Карло.
Для вектора состояния и вектор наблюдения параметрическая форма SSM Econometrics Toolbox выражена в следующем представлении линейного пространства состояний:
где и являются некоррелированными процессами вектора белого шума с единичной дисперсией. В приведенном выше представлении SSM первое уравнение упоминается как уравнение состояния, а второе как уравнение наблюдения. Параметры модели , , и называются переходом между состояниями, состояниями нарушения порядка загрузки, чувствительностью к измерениям и инновационными матрицами наблюдений, соответственно.
Хотя функции SSM в Econometrics Toolbox будут включать изменяющиеся во времени (динамические) параметры , , и значения и размерности которого изменяются со временем, в модели Диболда-Ли эти параметры являются инвариантными по времени (статическими).
Представленное выше Модель Диболда-Ли сформулирована таким образом, что коэффициенты уровня, наклона и кривизны следуют вектору авторегрессивному процессу первого порядка, или VAR (1), и как таковая модель сразу же образует систему в пространстве состояний. Используя обозначение Diebold, Rudebusch и Aruoba [2], уравнение перехода состояния, которое управляет динамикой вектора состояния (коэффициент уровня, наклона и кривизны), записывается как
Соответствующее уравнение наблюдения (измерения) записывается как
В векторно-матричном обозначении модель Диболда-Ли переписывается как следующая система в пространстве состояний для вектора 3-D средних скорректированных факторов и наблюдаемые выражения :
где ортогональный, Гауссов белый шум обрабатывает и определяются таким образом, чтобы
Более того, модель Диболда-Ли сформулирована так, что коэффициент уравнения состояния возмущает коррелируют, и, следовательно, соответствующую ковариационную матрицу не является диагональным. Однако, напротив, модель накладывает диагональность на ковариационную матрицу уравнения наблюдения нарушений порядка таким образом, отклонения наблюдаемых выражений в различных зрелостях являются некоррелированными.
Задайте скрытые состояния как средние скорректированные множители
и регулируемый перехватом, или дефляционный, дает
и подставьте в уравнения выше, и системы в пространстве состояний Диболда-Ли могут быть переписаны как
Теперь сравните систему в пространстве состояний Diebold-Li с формулировкой, поддерживаемой функциональностью SSM Econometrics Toolbox,
Из вышеприведенных систем в пространстве состояний мы сразу видим, что матрица переходов является тем же самым в обеих формулировках и что матрица Diebold-Li является просто матрицей чувствительности измерения состояния в рецептуре SSM.
Связь между нарушениями порядка, однако, и, следовательно, параметризация и матрицы формулировки SSM, более тонкие. Чтобы увидеть эту связь, заметьте, что
Поскольку нарушения порядка в каждой модели должны быть одинаковыми, ковариация в формулировке Diebold-Li должен равняться ковариации масштабированного процесса SSM белого шума . Точно так же ковариация должен равняться процессу . Более того, начиная с и Нарушения порядка в формулировке SSM заданы как некоррелированные процессы вектора белого шума с дисперсией единиц, их матрицы ковариации являются тождествами матрицами.
Поэтому в применении свойства линейного преобразования Гауссовых случайных векторов ковариации композиции Diebold-Li связаны с параметрами формулировки SSM, такими что
Чтобы сформулировать модель Диболда-Ли способом, поддающимся оценке Econometrics Toolbox, пользователи должны сначала создать модель SSM с ssm
функция. Кроме того, модель SSM может быть создана с неизвестными параметрами, заданными явно или неявно.
Чтобы создать модель SSM явно, все необходимые матрицы , , , и должны быть поставлены. В явном подходе неизвестные параметры появляются как NaN
значения для указания наличия и размещения неизвестных значений; каждый NaN
запись соответствует уникальному параметру для оценки.
Хотя создание модели явно путем непосредственного определения параметров , , , и иногда более удобно, чем неявно задавать модель, утилита явного подхода ограничена тем, что каждый оцененный параметр влияет и однозначно ассоциируется с одним элементом массива матрицы коэффициентов.
Чтобы создать модель неявно, пользователи должны задать функцию отображения параметров, которая преобразует вектор входного параметра в параметры модели , , , и . В неявном подходе функция отображения сама по себе задает модель и особенно удобна для оценки сложных моделей и для наложения различных параметрических ограничений.
Кроме того, среда SSM не хранит ненулевые смещения переменных состояния или каких-либо параметров, сопоставленных с компонентами регрессии в уравнении наблюдения. Вместо этого, компонент регрессии оценивается путем отклонения наблюдений . Точно так же другие связанные функции SSM, такие как filter
, smooth
, forecast
, и simulate
, предположим, что наблюдения уже спущены вручную или предварительно обработаны, чтобы принять во внимание любые смещения или регрессионый компонент в уравнении наблюдения.
Поскольку модель Диболда-Ли включает ненулевое смещение (среднее значение) для каждого из трех факторов, который представляет простой, но распространенный регрессионный компонент, этот пример использует функцию отображения. Более того, функция отображения также накладывает ограничение симметрии на ковариационную матрицу и ограничение по диагонали ковариационной матрицы , оба из которых особенно хорошо подходят для неявного подхода. В сложение функция отображения также позволяет нам оценить параметр скорости затухания также.
Обратите внимание, что эта формулировка пространства состояний и соответствующий подход к включению регрессионого компонента не является уникальной. Для примера смещения фактора также могут быть включены путем увеличения размерности вектора состояний.
В подходе, взятом в этом примере, включение смещений факторов в уравнение состояния представления 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:
Несмотря на то, что Econometrics Toolbox поддерживает как одномерную, так и многомерную оценку AR, в последующем модель VAR (1) подбирается к 3-D временным рядам факторов. Для согласованности с формулировкой SSM, которая работает со средними скорректированными факторами, модель VAR (1) включает аддитивную константу, учитывающую среднее значение каждого фактора.
EstMdlVAR = estimate(varm(3,1), beta);
Как обсуждалось выше, модель Диболда-Ли оценивается с помощью неявного подхода, в котором задана функция отображения параметра. Эта функция отображения отображает вектор параметра в параметры модели SSM, дефлирует наблюдения, чтобы учесть средства каждого фактора и накладывает ограничения на ковариационные матрицы.
Следующая строка кода создает модель SSM путем передачи функции отображения параметра Example_DieboldLi
на ssm
функция и указывает, что функция отображения будет вызвана с параметрами вектора входного параметра. Дополнительные входные параметры в функции отображения задают статическую информацию о выражении и зрелости и используются для инициализации функции способом, подходящим для последующего использования в оценке. Для получения дополнительной информации смотрите функцию helper Example_DieboldLi
.
Mdl = ssm(@(params)Example_DieboldLi(params,yields,maturities));
Максимальная оценка правдоподобия (MLE) моделей SSM через фильтр Калмана, как известно, чувствительна к начальным значениям параметров. В этом примере мы используем результаты двухэтапного подхода для инициализации оценки.
В частности, начальные значения перешли к SSM estimate
функция кодируются в вектор-столбец. В этом примере матрица модель SSM устанавливается в оцененную матрицу коэффициентов AR 3 на 3 модели VAR (1), сложенную столбцовым способом в первые 9 элементов вектора-столбца .
Из обсуждения выше, матрица модели SSM является матрицей 3 на 3 с ограничениями, что , и тем, что следует за оценкой является более низким фактором Холецкого . Поэтому, чтобы гарантировать, что является симметричным, положительно определенным и допускает ненулевые недиагональные ковариации, 6 элементов, сопоставленных с более низким фактором Холецкого должно быть выделено в начальном векторе-столбце параметра. Однако в последующем мы инициализируем элементы вектора начального параметра с квадратным корнем предполагаемых инновационных отклонений модели VAR (1).
Другими словами, когда вектор параметра инициализируется, мы принимаем, что ковариационная матрица является диагональным, но все еще резервным пространством для нижележащих элементов нижнего фактора Холецкого ковариационной матрицы, таким что . Снова, вектор начального параметра расположен таким образом, что элементы вдоль и ниже основной диагонали сложены столбчатым способом.
Поскольку ковариационная матрица в формулировке Diebold-Li диагональна, матрица модели SSM также ограничена диагональю, так что . Поэтому элементы вектора начального параметра, сопоставленные с заданы в квадратный корень из диагональных элементов матрицы выборочной ковариации невязок модели VAR (1), один такой элемент для каждой зрелости данных входов выражения (в этом примере 17 зрелостей), снова сложенный столбцом.
Обратите внимание, что матрица модели 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
. В этом примере ковариационная матрица является диагональным, и поэтому мы принимаем решение обратиться к одномерному лечению многомерного ряда, чтобы улучшить эффективность оценки во время выполнения.
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.
Сначала сравните оцененную матрицу переходов модели 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
Заметьте, насколько близки результаты. В частности, замечают большие положительные диагональные элементы, указывающие на стойкую самодинамику каждого фактора, в то же время и малые недиагональные элементы, указывающие на слабую кросс-факторную динамику.
Теперь исследуйте состояние нарушения порядка загрузки матрице и сравните соответствующую ковариационную матрицу инноваций полученный от 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 сглаженные состояния заданы как
Однако прежде чем мы активируем smooth
функция, напоминая из обсуждения выше, что среда SSM должна учитывать корректировки смещения, сделанные в наблюдаемых выражениях во время оценки. В частности, во время оценки функция отображения параметров отклоняет исходные наблюдения, и, следовательно, работает с скорректированными по смещению выражениями вместо исходных выражений.
Кроме того, поскольку регулировка известна только функции отображения, оцененная модель SSM не имеет явных знаний о каких-либо корректировках, внесенных в исходные выражения. Поэтому другие связанные функции SSM, такие как filter
, smooth
, forecast
, и simulate
должен правильно учитывать любые смещения или регрессионный компонент, сопоставленный с предикторами, включенными в уравнение наблюдения.
Поэтому, прежде чем мы вызовем smooth
функция, чтобы вывести предполагаемые состояния, мы должны сначала сдвинуть исходные выражения путем вычитания точки пересечения, сопоставленной с предполагаемым смещением, , для компенсации корректировки смещения, которая произошла во время оценки. Однако состояния, выведенные затем, будут соответствовать дефлированным выражениям, когда на самом деле мы заинтересованы в самих фактических состояниях (факторах уровня, наклона и кривизны), а не в их смещенных аналогах. Поэтому после сглаживания отклоненные состояния должны быть повторно скорректированы путем добавления оценочного среднего, , к факторам.
Этот процесс сдувания наблюдений, а затем раздувания состояний, чтобы раскрутить дефляцию, является важной, но тонкой точкой.
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/Калмана, при котором все параметры модели оцениваются одновременно.
В качестве окончательного сравнения эффективности в выборке мы теперь сравниваем средства и стандартные отклонения невязок уравнений наблюдений двух подходов способом, подобным таблице 2 [2]. Результаты выражены в базисных точках (б.п.).
При создании таблицы ниже обратите внимание, что матрица чувствительности измерения состояния в формулировке 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 месяцев в будущее. Фактические прогнозируемые выражения затем вычисляются путем добавления предполагаемого смещения к дефлированным аналогам.
Обратите внимание, что прогноз кривой выражения будет иметь строку для каждого будущего периода в горизонте прогноза (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 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-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.