В этом примере показано, как использовать IRFunctionCurve объекты для моделирования срочной структуры процентных ставок (также называемой кривой доходности). Это можно противопоставить моделированию структуры терминов векторами дат и данных и интерполяции между точками (что в настоящее время можно сделать с помощью функции prbyzero).
Термин «структура» может относиться как минимум к трем различным кривым: кривой дисконтирования, нулевой кривой или прямой кривой.
IRFunctionCurve объект позволяет моделировать кривую процентной ставки как функцию.
В этом примере рассматривается использование IRFunctionCurve для моделирования структуры процентных ставок в Соединенном Королевстве, свободной от дефолта. Для термина «структура» используются три различные формы, которые будут более подробно рассмотрены ниже:
Нельсон-Зигель
Свенсон
Сглаживание кубического сплайна с так называемым штрафом за переменную шероховатость (VRP)
Первый вопрос при моделировании кривой доходности заключается в том, какие данные следует использовать. Для моделирования кривой доходности, свободной от дефолта, должны использоваться рыночные инструменты, свободные от дефолта и опциона. Наиболее значимой составляющей данных являются государственные облигации Великобритании (известные как Gilts). Исторические данные извлекаются со следующего сайта:
Данные репо используются для построения короткого конца кривой доходности. Данные репо извлекаются из следующего сайта:
Обратите внимание, что данные должны быть указаны как матрица, где столбцы 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);
Структура терминов также может быть смоделирована сплайном, в частности, одним из способов моделирования структуры терминов является представление прямой кривой кубическим сплайном. Для обеспечения достаточной гладкости сплайна назначается штраф, связанный с кривизной (второй производной) сплайна:
(m)] 2dm
где первый член - разница между наблюдаемой ценой P и прогнозируемой ценой, P_hat, (взвешенная по длительности облигации, D), суммированная по всем облигациям в наборе данных, а второй член - штрафной член (где лямбда - штрафная функция, а f - сплайн).
См. разделы [3], [4], [5] ниже.
Были высказаны различные предложения относительно спецификации лямбды штрафной функции. Один подход, поддерживаемый [4] и используемый в настоящее время Управлением по управлению долгами Великобритании, представляет собой функцию штрафа в следующей форме:
) e-мкм
Параметры L, S и mu обычно оцениваются на основе исторических данных.
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')

VRPModel = IRFunctionCurve.fitSmoothingSpline('Forward',CurveSettle,... Instruments,lambdafun,'Compounding',-1,... 'InstrumentPeriod',InstrumentPeriod);
После построения кривой используются методы извлечения форвардных и нулевых ставок и коэффициентов дисконтирования. Эта кривая также может быть преобразована в RateSpec структура с использованием toRateSpec способ. RateSpec затем может использоваться со многими другими функциями в финансовых инструментах 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
Этот пример основан на следующих статьях и статьях журнала:
Нельсон, К. Р., Сигел, А. Ф., (1987), «Парсимное моделирование кривых выхода». Журнал бизнеса. 60, стр. 473-89.
[2] Свенссон, Л.Э. (1994), «Оценка и интерпретация форвардных процентных ставок: Швеция 1992-4». Международный валютный фонд, рабочий документ МВФ, 1994/114 год.
[3] Фишер, М., Нычка, Д., Зервос, Д. (1995), «Подбор терминологической структуры процентных ставок сглаживающими шлицами». Совет управляющих Федеральной резервной системы, Рабочий документ Совета Федеральной резервной системы, 95-1.
[4] Андерсон, Н., Слит, Дж. (1999), «Новые оценки кривых реальной и номинальной доходности Великобритании». Ежеквартальный бюллетень Банка Англии. Ноябрь, стр. 384-92.
[5] Waggoner, D. (1997), «Сплайн-методы извлечения кривых процентных ставок из цен купонных облигаций». Рабочий документ Совета Федеральной резервной системы, 97-10.
[6] «Кривые доходности с нулевым купоном: техническая документация». Документы БМР № 25, октябрь 2005 года.
[7] Болдер, Д. Дж., Гусба, S (2002), «Экспоненты, полиномы и серии Фурье: моделирование кривой доходности в Банке Канады». Рабочие документы 02-29, Банк Канады.
[8] Болдер, Д. Дж., Стрелиски, D (1999), «Моделирование кривой доходности в Банке Канады». Технические отчеты 84, Банк Канады.
IRBootstrapOptions | IRDataCurve | IRFitOptions | IRFunctionCurve