В этом примере показано, как использовать IRFunctionCurve
объекты смоделировать термин структура процентных ставок (также называемый кривой доходности). Это может контрастироваться с моделированием термина структура с векторами из дат и данных и интерполяции между точками (который может в настоящее время быть сделан с функциональным prbyzero
). Термин структура может отнестись по крайней мере к трем различным кривым: дисконтная кривая, кривая нулевой ширины или прямая кривая.
IRFunctionCurve
объект позволяет вам моделировать кривую процентной ставки как функцию.
Этот пример исследует использование IRFunctionCurve
возразите, чтобы смоделировать структуру термина без значений по умолчанию процентных ставок в Соединенном Королевстве. Три различных форм для термина структура реализованы и обсуждены более подробно позже:
Нельсон-Сигель
Свенсон
Сглаживание Кубического Сплайна с так называемым Переменным штрафом шероховатости (VRP)
Первый вопрос в моделировании кривой доходности - то, какие данные должны использоваться. Чтобы смоделировать кривую доходности без значений по умолчанию, инструменты рынка без опций, без значений по умолчанию должны использоваться. Старшим значащим компонентом данных являются британские Государственные облигации (известный как Гарантированные ценные бумаги). Исторические данные получены от следующего сайта:
Данные Repo используются, чтобы создать короткий конец кривой доходности. Данные Repo получены от следующего сайта:
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');
Модель Нельсона-Сигеля предлагает, чтобы мгновенная прямая кривая могла быть смоделирована со следующим:
Это может быть интегрировано, чтобы вывести уравнение для кривой нулевой ширины (см. [6] для получения дополнительной информации об уравнениях и деривации):
См. [1] для получения дополнительной информации.
IRFunctionCurve
объект предусматривает возможность соответствовать кривой Нельсона Зигеля к наблюдаемым данным о рынке с fitNelsonSiegel
метод. Подбор кривой сделан путем вызывания функции Optimization Toolbox™ lsqnonlin
.
fitNelsonSiegel
функция потребовала входных параметров для Кривой Type
, Изогните Settle
, и матрица инструментальных данных.
Дополнительные входные параметры, заданные в аргументе пары "имя-значение":
IRFitOptions
структура: Предусматривает возможность выбрать, какое количество быть минимизированным (цена, выражение или длительность взвесили цену), и другие параметры оптимизации (например, верхние и нижние границы для параметров).
Изогните Compounding
и Basis
(база ежедневного расчета процентов)
Дополнительные инструментальные параметры, Period
, Basis
, FirstCouponDate
, и так далее.
NSModel = IRFunctionCurve.fitNelsonSiegel('Zero',CurveSettle,... Instruments,'InstrumentPeriod',InstrumentPeriod);
Очень похожая модель к модели Нельсона-Сигеля является моделью Свенсона, которая добавляет два дополнительных параметра с учетом большей гибкости в термине структура. Эта модель предлагает, чтобы форвардный курс мог быть смоделирован со следующей формой:
Как выше, это может быть интегрировано, чтобы вывести уравнение для кривой нулевой ширины:
См. [2] для получения дополнительной информации.
Подбор кривой параметрам к этой модели переходит подобным способом к модели Нельсона-Сигеля использование fitSvensson
функция.
SvenssonModel = IRFunctionCurve.fitSvensson('Zero',CurveSettle,... Instruments,'InstrumentPeriod',InstrumentPeriod);
Термин структура может также быть смоделирован со сплайном, а именно, один способ смоделировать термин структура путем представления прямой кривой кубическим сплайном. Чтобы гарантировать, что сплайн достаточно является гладким, штраф наложен относящийся к искривлению (вторая производная) сплайна:
где первый термин является различием между наблюдаемой ценой P и предсказанной ценой, P_hat, (взвешенный длительностью связи, D) суммированный по всем связям в наборе данных, и второй термин является термином штрафа (где lambda является функцией штрафа, и f является сплайном).
Были различные предложения по спецификации lambda функции штрафа. Один подход, защищенный [4], и в настоящее время используемый Службой управления государственным долгом Великобритании, является функцией штрафа следующей формы:
Параметры L, S, и mu обычно оцениваются от исторических данных.
IRFunctionCurve
объект может использоваться, чтобы соответствовать представлению сплайна сглаживания прямой кривой с функцией штрафа использование функционального fitSmoothingSpline
.
Необходимыми входными параметрами, как для функций выше, является CurveType
, CurveSettle
, 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')
VRPModel = IRFunctionCurve.fitSmoothingSpline('Forward',CurveSettle,... Instruments,lambdafun,'Compounding',-1,... 'InstrumentPeriod',InstrumentPeriod);
Если кривая создается, функции используются, чтобы извлечь Прямые и Нулевые Уровни и Коэффициенты дисконтирования. Эта кривая может также быть преобразована в RateSpec
структура с помощью toRateSpec
функция. 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'})
Эта ссылка обеспечивает живой взгляд на выведенную кривую доходности, опубликованную Великобританией
https://www.bankofengland.co.uk
Этот пример основан на следующих бумагах и статьях в журнале:
[1] Нельсон, C.R., Зигель, A.F. "Экономное Моделирование Кривых доходности". Журнал Бизнеса. 60, стр 473-89, 1987.
[2] Свенсон, L.E.O. "Оценивая и интерпретируя прямые процентные ставки: Швеция 1992-4". Международный валютный фонд, рабочий документ МВФ, 1994/114, 1994.
[3] Фишер, M., Nychka, D., Zervos, D. "Соответствуя термину структура процентных ставок со сглаживанием сплайнов". Совет управляющих Федеральной резервной системы, рабочего документа федерального резервного управления, 95-1, 1995.
[4] Андерсон, N., Sleath, J. "Новые Оценки Великобритании Действительные и Номинальные Кривые доходности". Банк Англии Ежеквартальный Бюллетень. Ноябрь, стр 384-92, 1999.
[5] Извозчик, D. "Методы сплайна для извлечения кривых процентной ставки от цен облигации на предъявителя". Рабочий документ федерального резервного управления, 97-10, 1997.
[6] "Кривые доходности нулевого купона: техническая документация". Бумаги BIS № 25, октябрь 2005.
[7] Более полужирный, D.J., Gusba, S. "Экспоненциалы, полиномы и ряд Фурье: больше моделирования кривой доходности в Банке Канады". Рабочие документы 02-29, Банк Канады, 2002.
[8] Более полужирный, D.J., Стрелиский, D. "Моделирование кривой доходности в Банке Канады". Технические отчеты 84, Банк Канады, 1999.