fitSmoothingSpline

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

Синтаксис

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

Аргументы

Примечание

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

Type

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

Settle

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

Instruments

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

Lambdafun

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

Примечание

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

Knots

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

Compounding

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

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

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

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

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

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

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

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

Basis

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

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

  •  1 = 30/360 (СИА)

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

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

Инструментальные параметры

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

InstrumentPeriod

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

InstrumentBasis

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

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

  •  1 = 30/360 (СИА)

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

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

InstrumentEndMonthRule

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

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

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

Используйте метод 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] Нельсон, 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