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-by- 2 матрица или numRates-by- 2 таблица.

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

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

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

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

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

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

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

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

Типы данных: 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-by- 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-by- 1 вектор с использованием значений: 0, 1, 2, 3, 4, 6, или 12.

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

Счетчик дней инструмента, заданный как разделенная разделенными запятой парами, состоящая из 'Basis' и скаляр или NUMBONDS-by- 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-by- 1 вектор. Это правило применяется только тогда, когда Maturity - дата окончания месяца для месяца, имеющего 30 или менее дней.

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы не задаете StartDate, дата начала вступления в силу является Settle дата.

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

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

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

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

свернуть все

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

Алгоритмы

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

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

Примечание

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

Ссылки

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

[2] Takman, B. Акции с фиксированным доходом: инструменты для современных рынков. Уайли, 2002.

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