fitSmoothingSpline

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

Описание

пример

CurveObj = IRFunctionCurve.fitSmoothingSpline(Type,Settle,Instruments,Lambdafun) соответствует сплайну сглаживания, чтобы продать данные для связи.

Примечание

У вас должна быть лицензия на программное обеспечение Curve Fitting Toolbox™, чтобы использовать fitSmoothingSpline метод.

пример

CurveObj = IRFunctionCurve.fitSmoothingSpline(___,Name,Value) добавляют дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

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

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 object. The axes object contains 2 objects of type line, scatter.

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

Во-первых, загрузите данные.

load ukdata20080430

Преобразуйте repo уровни, чтобы быть эквивалентными облигациями с нулевым купоном.

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

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

Используйте 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')

Figure contains an axes object. The axes object with title Smoothing Spline Model of UK Instantaneous Nominal Forward Curve contains an object of type line.

Входные параметры

свернуть все

Тип процентной ставки изгибается для связи, заданной при помощи скалярного вектора символов.

Типы данных: char

Уладьте дату кривой процентной ставки, заданное использование скалярного вектора символов даты или последовательного номера даты.

Типы данных: double | char

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

Типы данных: double

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

Примечание

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

Типы данных: function_handle

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: CurveObj = IRFunctionCurve.fitSmoothingSpline('Zero',datenum('30-Apr-2008'),Instruments,@(t) 1000,'knots',CustomKnots)
Аргументы в виде пар имя-значение для всех инструментов связи

свернуть все

Соединение частоты в год для IRFunctionCurve объект в виде разделенной запятой пары, состоящей из 'Compounding' и скалярное числовое использование одного из поддерживаемых значений:

  • −1 = Непрерывное соединение

  • 0 = Простой процент (никакое соединение)

  • 1 = Ежегодное соединение

  • 2 = Полугодовое соединение

  • 3 = Соединение три раза в год

  • 4 = Ежеквартально соединение

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

  • 12 = Ежемесячно соединение

Типы данных: double

Дневной базис количества процентной ставки изгибается в виде разделенной запятой пары, состоящей из 'Basis' и скалярное целое число.

  • 0 — фактический/фактический

  • 1 — 30/360 (СИА)

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

  • 3 — фактический/365

  • 4 — 30/360 (PSA)

  • 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 — ШИНА/252

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

Типы данных: double

Аргументы в виде пар имя-значение для каждого инструмента связи

свернуть все

Купоны в год для связи в виде разделенной запятой пары, состоящей из 'InstrumentPeriod' и скалярное числовое значение.

Типы данных: double

Дневной базис количества связи в виде разделенной запятой пары, состоящей из 'InstrumentBasis' и скалярное целое число.

  • 0 — фактический/фактический

  • 1 — 30/360 (СИА)

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

  • 3 — фактический/365

  • 4 — 30/360 (PSA)

  • 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 — ШИНА/252

Примечание

InstrumentBasis отличает инструмент связи Basis значение от кривой процентной ставки Basis значение.

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

Типы данных: double

Правило конца месяца в виде разделенной запятой пары, состоящей из 'InstrumentEndMonthRule' и логическое значение. Это правило применяется только когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней.

  • 0 = проигнорируйте правило, подразумевая, что дата купонного платежа связи всегда является тем же числовым днем месяца.

  • 1 = set правило о (значении по умолчанию), означая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца.

Типы данных: логический

Инструментальная дата выпуска в виде разделенной запятой пары, состоящей из 'InstrumentIssueDate' и скалярный вектор символов даты или последовательный номер даты.

Типы данных: char | double

Дата, когда связь делает свой первый купонный платеж (используемый, когда связь имеет неправильный первый период купона) в виде разделенной запятой пары, состоящей из 'InstrumentFirstCouponDate' и скалярный вектор символов даты или последовательный номер даты. Когда InstrumentFirstCouponDate и InstrumentLastCouponDate оба заданы, InstrumentFirstCouponDate более приоритетен в определении структуры купонного платежа. Если вы не задаете InstrumentFirstCouponDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: char | double

Последняя дата купона связи перед датой погашения (используемый, когда связь имеет неправильный последний период купона) в виде разделенной запятой пары, состоящей из 'InstrumentLastCouponDate' и скалярный вектор символов даты или последовательный номер даты. В отсутствие заданного InstrumentFirstCouponDate, заданный InstrumentLastCouponDate определяет структуру купона связи. Структура купона связи является усеченной в InstrumentLastCouponDate, независимо от того, где это падает и сопровождается только датой потока наличности зрелости связи. Если вы не задаете InstrumentLastCouponDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: char | double

Поверхность или номинальная стоимость в виде разделенной запятой пары, состоящей из 'InstrumentFace' и числовой скаляр.

Типы данных: double

Примечание

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

Выходные аргументы

свернуть все

Сглаживание модели сплайновой кривой, возвращенной как структура.

Алгоритмы

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

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

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

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

Ссылки

[1] Нельсон, C.R., Зигель, A.F. “Экономное моделирование кривых доходности”. Журнал Бизнеса. Издание 60, 1987, стр 473–89.

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

[3] Фишер, M., Nychka, D., Zervos, D. “Соответствуя термину структура процентных ставок со сглаживанием сплайнов”. Совет управляющих Федеральной резервной системы, Рабочего документа 1995-1 Федерального резервного управления.

[4] Андерсон, N., Sleath, J. “Новые оценки Великобритании действительные и номинальные кривые доходности”. Банк Англии Ежеквартальный Бюллетень, ноябрь 1999, стр 384–92.

[5] Извозчик, D. “Методы сплайна для извлечения кривых процентной ставки от цен облигации на предъявителя”. Рабочий документ 1997-10 федерального резервного управления.

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

[7] Более полужирный, D.J., Gusba, S. “Экспоненциалы, полиномы и ряд Фурье: больше моделирования кривой доходности в Банке Канады”. Рабочие документы 2002-29, Банк Канады.

[8] Более полужирный, D.J., Стрелиский, D. “Моделирование кривой доходности в Банке Канады”. Технические отчеты 84, 1999, Банк Канады.

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