Подбор функций кривой процентной ставки

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

Термин структура может относиться как минимум к трем различным кривым: дисконтной кривой, нулевой кривой или прямой кривой.

The IRFunctionCurve объект позволяет вам смоделировать кривую процентной ставки как функцию.

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

  • Нельсон-Зигель

  • Свенсон

  • Сглаживание кубического сплайна с так называемым штрафом за переменную шероховатость (VRP)

Выбор данных

Первый вопрос при моделировании кривой выражения - какие данные следует использовать. Чтобы смоделировать кривую выражения без дефолта, должны использоваться безопциональные рыночные инструменты. Наиболее значимым компонентом данных являются государственные облигации Великобритании (известные как Gilts). Исторические данные извлекаются со следующего сайта:

https://www.dmo.gov.uk

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

https://www.ukfinance.org.uk/

Обратите внимание, что данные должны быть заданы как матрица, где столбцы Settle, Maturity, CleanPrice, и CouponRate и что инструменты должны быть связями или синтетически конвертированы в связи.

Рыночные данные за дату закрытия 30 апреля 2008 года были загружены и сохранены в следующем файле данных (ukdata20080430), который загружается в MATLAB ® по следующей команде:

% Load the data
load ukdata20080430

% Convert repo rates to be equivalent zero coupon bonds
RepoCouponRate = repmat(0,size(RepoRates));
RepoPrice = bndprice(RepoRates, RepoCouponRate, RepoSettle, RepoMaturity);

% Aggregate the data
Settle = [RepoSettle;BondSettle];
Maturity = [RepoMaturity;BondMaturity];
CleanPrice = [RepoPrice;BondCleanPrice];
CouponRate = [RepoCouponRate;BondCouponRate];
Instruments = [Settle Maturity CleanPrice CouponRate];
InstrumentPeriod = [repmat(0,6,1);repmat(2,31,1)];

CurveSettle = datenum('30-Apr-2008');

Подбор модели Нельсона-Зигеля к рыночным данным

Модель Нельсона-Сигеля предполагает, что мгновенная прямая кривая может быть смоделирована следующим образом:

f=β0+β1e-mτ+β2e-mτmτ

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

s=β0+(β1+β2)τm(1-e-mτ)-β2e-mτ

Для получения дополнительной информации см. раздел [1].

The IRFunctionCurve объект предоставляет возможность подгонки кривой Нельсона Зигеля к наблюдаемым рыночным данным с помощью fitNelsonSiegel способ. Подбор кривой выполняется вызовом функции Optimization Toolbox™ lsqnonlin.

The fitNelsonSiegel метод имеет необходимые входы для Curve Type, Кривые Settle, и матрица данных приборов.

Необязательные входные параметры, заданные в аргументе пары "имя-значение", следующие:

  • IRFitOptions Структура: Предоставляет возможность выбрать, какое количество будет минимизировано (цена, выражение или взвешенная цена длительности) и другие параметры оптимизации (для примера, верхних и нижних границ для параметров).

  • Кривые Compounding и Basis (соглашение о дневном отсчете)

  • Дополнительные параметры прибора, Period, Basis, FirstCouponDateи так далее.

NSModel = IRFunctionCurve.fitNelsonSiegel('Zero',CurveSettle,...
    Instruments,'InstrumentPeriod',InstrumentPeriod);

Подгонка модели Свенссона

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

f=β0+β1e-mτ1+β2e-mτ1mτ1+β3e-mτ2mτ2

Как и выше, это может быть интегрировано, чтобы вывести уравнение для нулевой кривой:

s=β0+β1(1-e-mτ1)(-τ1m)+β2((1-e-mτ1)τ1m-emτ1)+β3((1-e-mτ2)τ2m-emτ2)

Для получения дополнительной информации см. раздел [2].

Подбор параметров к этой модели протекает подобно модели Нельсона-Зигеля с использованием fitSvensson способ.

SvenssonModel = IRFunctionCurve.fitSvensson('Zero',CurveSettle,...
    Instruments,'InstrumentPeriod',InstrumentPeriod);

Подгонка сглаживающего сплайна

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

i=1N[Pi-Pˆi(f)Di]2+0Mλt(m)[f(m)]2dm

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

См. [3], [4], [5] ниже.

Были различные предложения по спецификации лямбды штрафной функции. Один из подходов, за который выступает [4] и который в настоящее время используется Управлением по управлению долгом Великобритании, является функцией штрафов следующей формы:

log(λ(m))=L-(L-S)e-mμ

Параметры L, S и mu обычно оцениваются из исторических данных.

The IRFunctionCurve объект может использоваться, чтобы подогнать сглаживающее сплайн представление прямой кривой с функцией штрафа с помощью метода fitSmoothingSpline.

Необходимыми входами, как и для вышеприведенных методов, являются CurveType, Кривые Settle, Instruments матрица и указатель на функцию (Lambdafun) содержащая штрафную функцию.

Опциональные параметры аналогичны fitNelsonSiegel и fitSvensson.

% Parameters chosen to be roughly similar to [4] below.
L = 9.2;
S = -1;
mu = 1;

lambdafun = @(t) exp(L - (L-S)*exp(-t/mu)); % Construct penalty function
t = 0:.1:25; % Construct data to plot penalty function
y = lambdafun(t);
figure
semilogy(t,y);
title('Penalty Function for VRP Approach')
ylabel('Penalty')
xlabel('Time')

Figure contains an axes. The axes with title Penalty Function for VRP Approach contains an object of type line.

VRPModel = IRFunctionCurve.fitSmoothingSpline('Forward',CurveSettle,...
    Instruments,lambdafun,'Compounding',-1,...
    'InstrumentPeriod',InstrumentPeriod);

Использование подобранных кривых и результаты построения графика

После построения кривой используются методы для извлечения форвардной и нулевой ставок и коэффициентов дисконтирования. Эта кривая также может быть преобразована в RateSpec структура с использованием toRateSpec способ. The RateSpec может затем использоваться со многими другими функциями в Financial Instruments Toolbox™

PlottingDates = CurveSettle+20:30:CurveSettle+365*25;
TimeToMaturity = yearfrac(CurveSettle,PlottingDates);

NSForwardRates = NSModel.getForwardRates(PlottingDates);
SvenssonForwardRates = SvenssonModel.getForwardRates(PlottingDates);
VRPForwardRates = VRPModel.getForwardRates(PlottingDates);

figure
hold on
plot(TimeToMaturity,NSForwardRates,'r')
plot(TimeToMaturity,SvenssonForwardRates,'g')
plot(TimeToMaturity,VRPForwardRates,'b')
title('UK Instantaneous Nominal Forward Curve')
xlabel('Years Ahead')
legend({'Nelson Siegel','Svensson','VRP'})

Figure contains an axes. The axes with title UK Instantaneous Nominal Forward Curve contains 3 objects of type line. These objects represent Nelson Siegel, Svensson, VRP.

Сравнение с этой ссылкой

Эта ссылка обеспечивает живой взгляд на производную кривую доходности, опубликованную Великобританией

https://www.bankofengland.co.uk

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

Этот пример основан на следующих статьях и журналах:

[1] Nelson, C.R., Siegel, A.F., (1987), «Parsimonious Modeling of Yield Curves». Журнал бизнеса. 60, стр. 473-89.

[2] Свенссон, L.E.O. (1994), «Оценка и интерпретация форвардных процентных ставок: Швеция 1992-4». Международный валютный фонд, рабочий документ МВФ, 1994/114 год.

[3] Фишер, М., Нычка, Д., Зервос, Д. (1995), «Подбор срочной структуры процентных ставок с сглаживанием сплайнов». Совет управляющих Федеральной резервной системы, рабочий документ Федерального резервного совета, 95-1.

[4] Anderson, N., Sleath, J. (1999), «New Estimes of the UK Real and Nominal Yield Curves». Ежеквартальный бюллетень Банка Англии. Ноябрь, стр 384-92.

[5] Вагонер, Д. (1997), «Сплайн методы для извлечения кривых процентной ставки из цен купонных облигаций». Рабочий документ Федерального резервного совета, 97-10.

[6] «Кривые выражения нулевого купона: техническая документация». Документы БИС № 25, октябрь 2005 года.

[7] Bolder, D.J., Gusba, S (2002), «Exponentials, Polynomials and Fourier Series: More Yield Curve Modeling at the Bank of Canada». Рабочие документы 02-29, Банк Канады.

[8] Bolder, D.J., Streliski, D (1999), «Yield Curve Modeling in the Bank of Canada». Технические отчеты 84, Банк Канады.