exponenta event banner

fitSmoothingSpline

Подгонка сглаживающего сплайна к рыночным данным облигаций

Синтаксис

CurveObj = IRFunctionCurve.fitSmoothingSpline(Type,Settle,Instruments,Lambdafun)
CurveObj = IRFunctionCurve.fitSmoothingSpline(Type,Settle,Instruments,Lambdafun,Name,Value)

Аргументы

Примечание

Для использования программного обеспечения Toolbox™ фитинга кривой необходимо иметь лицензию fitSmoothingSpline способ.

Type

Тип кривой процентной ставки для облигации: Forward, Zero, или Discount.

Settle

Скаляр для Settle дата кривой.

Instruments

Nоколо-4 матрица данных для Instruments где первый столбец Settle дата, второй столбец - Maturity, третий столбец - чистая цена, а четвертый столбец - CouponRate для облигации.

Lambdafun

Функция штрафа, принимающая за входное время и возвращающая значение штрафа. Используйте дескриптор функции для поддержки функции штрафа. Дескриптор функции для штрафной функции, которая принимает один числовой ввод (время до погашения) и возвращает один числовой вывод (штраф, применяемый к кривизне сплайна). Дополнительные сведения об определении дескриптора функции см. в документации по основам программирования MATLAB ®.

Примечание

Сглаживающий сплайн представляет прямую кривую. Сплайн наказывается за кривизну заданием штрафной функции. Эта посадка может быть выполнена только с помощью FitType из DurationWeightedPrice.

Knots

(Необязательно) Вектор расположения узлов (время до зрелости); по умолчанию узлы устанавливаются вектором, состоящим из 0 и время до зрелости всех инструментов ввода. По умолчанию тип сплайна должен быть кубическим, но можно указать любой тип сплайна, явно указав узлы. Определяемые пользователем узлы могут быть заданы с помощью следующей команды, гдеk - порядок: augknt(knots,k).

Compounding

(Необязательно) Скаляр, задающий частоту объединения в год для IRFunctionCurve объект:

  • −1 = Непрерывное объединение (по умолчанию)

  • 1 = Годовое суммирование

  • 2 = Полугодичное объединение

  • 3 = Три раза в год

  • 4 = Квартальное суммирование

  • 6 = Компаундирование раз в два месяца

  • 12 = Ежемесячное суммирование

Basis

(Необязательно) База подсчета дней кривой процентных ставок. Скаляр целых чисел.

  • 0 = факт/факт (по умолчанию)

  • 1 = 30/360 (SIA)

  • 2 = фактически/360

  • 3 = факт/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (европейский)

  • 7 = факт/365 (японский)

  • 8 = факт/факт (ICMA)

  • 9 = факт/360 (ICMA)

  • 10 = факт/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = факт/365 (ISDA)

  • 13 = BUS/252

Дополнительные сведения см. в разделе Базис.

Параметры КИП

Для каждой облигации InstrumentВ качестве пар «имя-значение» можно указать следующие дополнительные параметры прибора. Например, InstrumentBasis различает облигационный инструмент Basis значение из кривой Basis значение.

InstrumentPeriod

(Необязательно) Купоны в год облигации. Вектор целых чисел. Допустимые значения: 0, 1, 2 (по умолчанию), 3, 4, 6 и 12.

InstrumentBasis

(Необязательно) Основание счета дня облигации. Вектор целых чисел.

  • 0 = факт/факт (по умолчанию)

  • 1 = 30/360 (SIA)

  • 2 = фактически/360

  • 3 = факт/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (европейский)

  • 7 = факт/365 (японский)

  • 8 = факт/факт (ICMA)

  • 9 = факт/360 (ICMA)

  • 10 = факт/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = факт/365 (ISDA)

  • 13 = BUS/252

Дополнительные сведения см. в разделе Базис.

InstrumentEndMonthRule

(Необязательно) Правило конца месяца. Вектор. Это правило применяется только в том случае, если Maturity - дата окончания месяца, имеющая 30 или менее дней. 0 = игнорировать правило, означающее, что дата купонной выплаты облигации всегда совпадает с числовым днем месяца. 1 = set rule on (по умолчанию), что означает, что дата купонной выплаты облигации всегда является последним фактическим днем месяца.

InstrumentIssueDate

(Необязательно) Дата выпуска документа.

InstrumentFirstCouponDate

(Необязательно) Дата, когда облигация осуществляет свой первый купонный платеж; используется, когда облигация имеет нерегулярный первый купонный период. Когда FirstCouponDate и LastCouponDate оба указаны, FirstCouponDate имеет приоритет при определении структуры купонных выплат. Если не указать FirstCouponDateдаты оплаты денежного потока определяются из других входных данных.

InstrumentLastCouponDate

(Необязательно) Дата последнего купона облигации до даты погашения; используется, когда облигация имеет нерегулярный последний купонный период. При отсутствии указанного FirstCouponDate, указанный LastCouponDate определяет структуру купона облигации. Купонная структура облигации усечена в LastCouponDateнезависимо от того, куда она попадает, и следует только дата денежного потока погашения облигации. Если не указать LastCouponDateдаты оплаты денежного потока определяются из других входных данных.

InstrumentFace

(Необязательно) Номинал или номинал. По умолчанию = 100.

Примечание

При использовании Instrument пары имя-значение, можно указать простой процент для облигации, указав InstrumentPeriod значение как 0. Если InstrumentBasis и InstrumentPeriod не указаны для облигации, используются следующие значения по умолчанию: Basis является 0 (акт/акт) и Period является 2.

Описание

Fcurve = IRFunctionCurve.fitSmoothingSpline(Type, Settle, Instruments, Lambdafun,Name,Value) подгоняет сглаживающий сплайн к рыночным данным для облигации. Необходимо ввести необязательные аргументы для Basis, Compounding, и Knots как пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Примеры

свернуть все

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

Settle = repmat(datenum('30-Apr-2008'),[6 1]);
Maturity = [datenum('07-Mar-2009');datenum('07-Mar-2011');...
datenum('07-Mar-2013');datenum('07-Sep-2016');...
datenum('07-Mar-2025');datenum('07-Mar-2036')];

CleanPrice = [100.1;100.1;100.8;96.6;103.3;96.3];
CouponRate = [0.0400;0.0425;0.0450;0.0400;0.0500;0.0425];
Instruments = [Settle Maturity CleanPrice CouponRate];
PlottingPoints = datenum('07-Mar-2009'):180:datenum('07-Mar-2036');
Yield = bndyield(CleanPrice,CouponRate,Settle,Maturity);

% use the AUGKNT function to construct the knots for a cubic spline at every 5 years
CustomKnots = augknt(0:5:30,4);
SmoothingModel = IRFunctionCurve.fitSmoothingSpline('Zero',datenum('30-Apr-2008'),...
Instruments,@(t) 1000,'knots', CustomKnots);

% create the plot
plot(PlottingPoints, getParYields(SmoothingModel, PlottingPoints),'b')
hold on
scatter(Maturity,Yield,'black')
datetick('x')

Figure contains an axes. The axes contains 2 objects of type line, scatter.

Используйте fitSmoothinSpline метод для соответствия кривой процентной ставки и модели Lambdafun функция штрафа. Сначала загрузите данные.

load ukdata20080430

Преобразуйте ставки репо в эквивалентные нулевые купонные облигации.

RepoCouponRate = repmat(0,size(RepoRates));
RepoPrice = bndprice(RepoRates, RepoCouponRate, RepoSettle, RepoMaturity);

Агрегируйте данные.

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

Выберите параметры для Lambdafun входной аргумент.

L = 9.2;
S = -1;
mu = 1;

Определите Lambdafun функция штрафа.

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

Используйте fitSmoothinSpline метод для соответствия кривой процентной ставки и модели Lambdafun функция штрафа.

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

			 Type: Forward
		   Settle: 733528 (30-Apr-2008)
	  Compounding: -1
			Basis: 0 (actual/actual)

Постройте график сглаживающей сплайн кривой процентных ставок для форвардных ставок.

PlottingDates = CurveSettle+20:30:CurveSettle+365*25;
TimeToMaturity = yearfrac(CurveSettle,PlottingDates);
VRPForwardRates = getForwardRates(VRPModel, PlottingDates);
figure;plot(TimeToMaturity,VRPForwardRates)
title('Smoothing Spline model of UK instantaneous nominal forward curve')

Алгоритмы

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

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

См. разделы [3], [4], [5] ниже.

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

Ссылки

[1] Нельсон, К. Р., Сигел, А. Ф. «Парсимное моделирование кривых доходности». Журнал бизнеса. Том 60, 1987, стр. 473-89.

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

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

[4] Андерсон, Н., Слит, Дж. «Новые оценки реальных и номинальных кривых доходности Великобритании». Ежеквартальный бюллетень Банка Англии, ноябрь 1999 года, стр. 384-92.

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

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

[7] Болдер, Д. Дж., Гусба, С. «Экспоненты, полиномы и серии Фурье: моделирование кривой доходности в Банке Канады». Рабочие документы 2002-29, Банк Канады.

[8] Болдер, Д. Дж., Стрелиски, Д. «Моделирование кривой доходности в Банке Канады». Технические отчеты 84, 1999, Банк Канады.

Представлен в R2008b