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- 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Значение аргументы. 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

Преобразуйте 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