exponenta event banner

bndkrdur

Продолжительность ключевой ставки по облигациям при нулевой кривой

Описание

пример

KeyRateDuration = bndkrdur(ZeroData,CouponRate,Settle,Maturity) вычисляет длительность ключевой ставки для одного или более облигаций, заданных нулевой кривой и набором ключевых ставок.

пример

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

Примеры

свернуть все

В этом примере показано, как вычислить продолжительность ключевой ставки облигации для времени ключевой ставки 2, 5, 10 и 30 лет.

ZeroRates = [0.0476 .0466 .0465 .0468 .0473 .0478 ...
.0493 .0539 .0572 .0553 .0530]';

ZeroDates = daysadd('31-Dec-1998',[30 360 360*2 360*3 360*5 ...
360*7 360*10 360*15 360*20 360*25 360*30],1);

ZeroData = [ZeroDates ZeroRates];

krdur = bndkrdur(ZeroData,.0525,'12/31/1998',...
'11/15/2028','KeyRates',[2 5 10 30])
krdur = 1×4

    0.2986    0.8791    4.1353    9.5814

В этом примере показано, как использовать datetime входы для Settle и Maturity а также использовать таблицу для ZeroData вычислить продолжительность ключевой ставки облигации для времени ключевой ставки 2, 5, 10 и 30 лет.

ZeroRates = [0.0476 .0466 .0465 .0468 .0473 .0478 ...
.0493 .0539 .0572 .0553 .0530]';

ZeroDates = daysadd('31-Dec-1998',[30 360 360*2 360*3 360*5 ...
360*7 360*10 360*15 360*20 360*25 360*30],1);

ZeroData = table(datetime(ZeroDates,'ConvertFrom','datenum','Locale','en_US'), ZeroRates);

krdur = bndkrdur(ZeroData,.0525,datetime('12/31/1998','Locale','en_US'),...
datetime('11/15/2028','Locale','en_US'),'KeyRates',[2 5 10 30])
krdur = 1×4

    0.2986    0.8791    4.1353    9.5814

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

свернуть все

Нулевая кривая, заданная как numRatesоколо-2 матрица или numRatesоколо-2 таблица.

Если ZeroData представлен в виде numRatesоколо-2 первый столбец является серийным номером даты MATLAB ®, а второй столбец - сопутствующими нулевыми ставками.

Если ZeroData является таблицей, первым столбцом могут быть серийные номера дат, векторы символов даты или массивы datetime. Второй столбец должен содержать числовые данные, соответствующие нулевым скоростям.

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

Годовая процентная ставка, используемая для определения купонов, подлежащих выплате по облигации, определяемая как десятичное значение с использованием скаляра или NUMBONDSоколо-1 вектор.

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

Дата расчета для всех облигаций и нулевая кривая, заданная как скаляр с использованием серийного номера даты, вектора символов даты или массива datetime. Settle должна быть одинаковой датой расчета для всех облигаций и нулевой кривой.

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

Дата погашения облигаций, указанная как скаляр или NUMBONDSоколо-1 вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.

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

Аргументы пары «имя-значение»

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

Пример: KeyRateDuration = bndkrdur(ZeroData,.0525,'12/31/1998','11/15/2028','KeyRates',[2 5 10 30])

Метод интерполяции, используемый для получения точек из нулевой кривой, заданной как разделенная запятыми пара, состоящая из 'InterpMethod' и вектор символов, использующий одно из следующих значений:

  • 'linear' (по умолчанию)

  • 'cubic'

  • 'pchip'

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

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

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

Скорости для вычисления длительности, указанные как разделенная запятыми пара, состоящая из 'KeyRates' и время до зрелости с использованием скаляра или NUMBONDSоколо-1 вектор.

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

Частота объединения кривой, определяемая как разделенная запятыми пара, состоящая из 'CurveCompounding' и скаляр, использующий одно из следующих значений:

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

  • 2 - Полугодичное компаундирование

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

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

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

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

.

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

Основа кривой, указанная как разделенная запятыми пара, состоящая из 'CurveBasis' и скаляр, использующий одно из следующих значений:

  • 0 = факт/факт

  • 1 = 30/360 (SIA)

  • 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 = BUS/252

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

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

Количество купонных выплат в год, указанное как пара, разделенная запятыми, состоящая из 'Period' и скаляр или NUMBONDSоколо-1 вектор с использованием значений: 0, 1, 2, 3, 4, 6, или 12.

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

Количество дней прибора, указанное как пара, разделенная запятыми, состоящая из 'Basis' и скаляр или NUMBONDSоколо-1 вектор с использованием поддерживаемого значения:

  • 0 = факт/факт

  • 1 = 30/360 (SIA)

  • 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 = BUS/252

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

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

Флаг правила конца месяца, заданный как пара, разделенная запятыми, состоящая из 'EndMonthRule' и скаляр или NUMBONDSоколо-1 вектор. Это правило применяется только в том случае, если Maturity - дата окончания месяца, имеющая 30 или менее дней.

  • 0 = Игнорировать правило, означающее, что дата выплаты бонусного купона всегда совпадает с числовым днем месяца.

  • 1 = Установить правило, означающее, что дата выплаты бонусного купона всегда является последним фактическим днем месяца.

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

Дата выпуска облигаций, указанная как пара, разделенная запятыми, состоящая из 'IssueDate' и скаляр или NUMBONDSоколо-1 вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.

Если не указать IssueDateдаты оплаты денежного потока определяются из других входных данных.

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

Неправильная или нормальная дата первого купона, указанная как пара, разделенная запятыми, состоящая из 'FirstCouponDate' и скаляр или NUMBONDSоколо-1 вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.

Если не указать FirstCouponDateдаты оплаты денежного потока определяются из других входных данных.

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

Неправильная или нормальная дата последнего купона, указанная как пара, разделенная запятыми, состоящая из 'LastCouponDate' и скаляр или NUMBONDSоколо-1 вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime.

Если не указать LastCouponDateдаты оплаты денежного потока определяются из других входных данных.

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

Прямая дата начала платежей, указанная как пара, разделенная запятыми, состоящая из 'StartDate' и скаляр или NUMBONDSоколо-1 вектор с использованием серийных номеров дат, векторов символов даты или массивов datetime. StartDate - когда действительно начинается облигация (дата, с которой рассматривается денежный поток облигации). Для форвардного запуска инструмента укажите эту дату в качестве будущей даты.

Если не указать StartDate, дата начала действия - Settle дата.

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

Номинальная стоимость облигации, указанная как разделенная запятыми пара, состоящая из 'Face' и скаляр или NUMBONDSоколо-1 вектор.

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

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

свернуть все

Продолжительность ключевой ставки, возвращенная как numBondsоколо-numRates матрица.

Алгоритмы

bndkrdur вычисляет длительность ключевой ставки для одного или более облигаций, заданных нулевой кривой и набором ключевых ставок. По умолчанию ключевыми ставками являются все ставки нулевой кривой. Для каждой ключевой ставки длительность вычисляется сдвигом нулевой кривой вверх и вниз на заданную величину (ShiftValue) по этой конкретной ключевой ставке, вычисляя текущую стоимость облигации в каждом случае с новыми нулевыми кривыми, а затем оценивая следующее:

krduri = (PVdown - PVup) ( PV  ×  SheyValue  × 2)

Примечание

Сдвиг к кривой вычисляется путем смещения конкретной ключевой ставки на ShiftValue и затем интерполяцию значений кривой в интервале между предыдущей и следующей ключевыми скоростями. Для первой ключевой ставки любые значения кривой до даты равны ShiftValue; аналогично, для последней ключевой ставки любые значения кривой после даты равны ShiftValue.

Ссылки

[1] Голуб, Б., Тилман, Л. Управление рисками: Подходы к рынкам с фиксированным доходом. Уайли, 2000.

[2] Такман, Б. Ценные бумаги с фиксированным доходом: инструменты для современных рынков. Уайли, 2002.

Представлен до R2006a