Оценка и вычисление выражений для ценных бумаг фиксированного дохода

Введение

Продукт Financial Toolbox™ обеспечивает функции для вычислительных начисленных процентов, цены, выражения, выпуклости и длительности ценных бумаг фиксированного дохода. Различные соглашения существуют для определения деталей этих расчетов. Программное обеспечение Financial Toolbox поддерживает соглашения, заданные Индустрией ценных бумаг и Ассоциацией Финансовых рынков (SIFMA), используемый на американских рынках, Ассоциации международного рынка капитала (ICMA), используемой в основном на европейских рынках и Международной Ассоциации Подкачек и Производных (ISDA). По историческим причинам SIFMA упомянут в документации Financial Toolbox как SIA, и ISMA упоминается как Ассоциация международного рынка капитала (ICMA).

Терминология фиксированного дохода

Поскольку терминология варьируется среди текстов на этом предмете, вот некоторые основные определения, которые применяются к этим функциям Financial Toolbox.

Расчетный день связи является датой, когда деньги сначала переходят к другому владельцу; то есть, когда покупатель платит за связь. Это не должно совпадать с датой выпуска, которая является датой, которую связь сначала предлагается для продажи.

Первая дата купона и последняя дата купона являются датами, когда первые и последние купоны заплачены, соответственно. Несмотря на то, что связи обычно платят периодические ежегодные или полугодовые купоны, длина первых и последних периодов купона может отличаться от стандартного периода купона. Тулбокс включает функции цены и выражения, которые обрабатывают эти нечетные первые и/или последние периоды.

Последовательные даты квазикупона определяют длину стандартного периода купона для безопасности фиксированного дохода интереса и не обязательно совпадают с фактическими датами купонного платежа. Тулбокс включает функции, которые вычисляют и фактические даты и даты квазикупона связей с нечетными первыми и/или последними периодами.

Ценные бумаги фиксированного дохода могут быть куплены в даты, которые не совпадают с датами купонного платежа. В этом случае владелец связи не назван на полное значение купона в течение того периода. Когда связь куплена между датами купона, покупатель должен компенсировать продавца пропорциональную долю процентной ставки купона, заработанной с предыдущей даты купонного платежа. Эта пропорциональная доля купонного платежа называется начисленными процентами. Покупная цена, цена, заплаченная за связь, является заключенной в кавычки рыночной ценой плюс начисленные проценты.

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

Период

period связи относится к частоте, с которой выпускающий связи делает купонные платежи держателю.

Период связи 

Значение периода

График платежей

0

Никакие купоны (Облигация с нулевым купоном)

1

Ежегодный

2

Полугодовой

3

Ежегодный тримараном

4

Ежеквартально

6

Два раза в месяц

12

Ежемесячно

Базис

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

Например, числитель фактических/фактических означает, что при определении номера дней между двумя датами, считайте фактический номер дней; знаменатель означает, что вы используете фактический номер дней в данном году в любых вычислениях (или 365 или 366 дней в зависимости от того, является ли данный год високосным годом). Вычисление начисленных процентов для дат между платежами также использует дневной базис количества. Дневным базисом количества является часть Number of interest accrual days / Days in the relevant coupon period.

Поддерживаемые базы ежедневного расчета процентов и базисные значения:

Базисное значение

База ежедневного расчета процентов

0

фактический/фактический (значение по умолчанию) — Номер дней и в период и в год является фактическим номером дней. Кроме того, другим общим фактическим/фактическим базисом является базис 12.

1

30/360 SIA — Часть года вычисляется на основе 360-дневного года с 30-дневными месяцами после применения следующих правил: Если первое свидание и вторая дата являются прошлым днем февраля, вторая дата изменяется на 30-е. Если первое свидание падает на 31-е или является прошлым днем февраля, это изменяется на 30-е. Если после предыдущего теста, первый день является 30-м, и второй день является 31-м, то второй день изменяется на 30-е.

2

фактический/360 — Номер дней в период равен фактическому номеру дней, однако номер дней через год 360.

3

фактический/365 — Номер дней в период равен фактическому номеру дней, однако номер дней через год 365 (даже в високосный год).

4

30/360 PSA — Номер дней в каждом месяце определяется к 30 (включая февраль). Если дата начала периода является или 31-й из месяца или в последний день февраля, дата начала установлена в 30-е, в то время как, если дата начала является 30-й из месяца и даты окончания, является 31-м, дата окончания установлена в 30-е. Номер дней через год 360.

5

30/360 ISDA — Номер дней в каждом месяце определяется к 30, за исключением февраля, где это - фактический номер дней. Если дата начала периода является 31-й из месяца, дата начала установлена в 30-е, в то время как, если дата начала является 30-й из месяца и даты окончания, является 31-м, дата окончания установлена в 30-е. Номер дней через год 360.

6

30E/360 — Номер дней в каждом месяце определяется к 30 за исключением февраля, где это равно фактическому номеру дней. Если дата начала или дата окончания периода является 31-й из месяца, та дата назначена к 30-му. Номер дней через год 360.

7

фактические/365 японцы — Номер дней в период равен фактическому номеру дней, за исключением дней прыжка (29-го февраля), которые проигнорированы. Номер дней через год 365 (даже в високосный год).

8

фактический/фактический ICMA — Номер дней и в период и в год является фактическим номером дней, и частота соединения является ежегодной.

9

фактический/360 ICMA — Номер дней в период равен фактическому номеру дней, однако номер дней через год 360, и частота соединения является ежегодной.

10

фактический/365 ICMA — Номер дней в период равен фактическому номеру дней, однако номер дней через год 365 (даже в високосный год), и частота соединения является ежегодной.

11

30/360 ICMA — Номер дней в каждом месяце определяется к 30, за исключением февраля, где это равно фактическому номеру дней. Если дата начала или дата окончания периода является 31-й из месяца, та дата назначена к 30-му. Номер дней через год 360, и частота соединения является ежегодной.

12

фактический/365 ISDA — дневная часть количества вычисляется с помощью следующей формулы: (Actual number of days in period that fall in a leap year / 366) + (Actual number of days in period that fall in a normal year / 365). Базис 12 также упоминается как фактический/фактический ISDA.

13

шина/252 — номер дней в период равен фактическому номеру рабочих дней. Номер рабочих дней через год 252.

Примечание

Несмотря на то, что концепция дневного количества звучит обманчиво простой, фактическое вычисление дневных количеств может быть комплексным. Можно найти хорошее обсуждение дневных количеств и формул для вычисления их в Главе 5 Стигума и Робинсона, Денежного рынка и Вычислений Связи в Библиографии.

Правило конца месяца

Правило конца месяца влияет на структуру купонного платежа связи. Когда правило будет в действительности, безопасность, которая платит купон в прошлый фактический день месяца, будет всегда платить купоны в прошлый день месяца. Это означает, например, что полугодовая связь, которая платит купон 28 февраля в годах непрыжка, заплатит купоны 31 августа во всех годах и 29 февраля в високосные годы.

Правило конца месяца

Значение правила конца месяца

Значение

1 (значение по умолчанию)

Управляйте в действительности.

0

Правило не в действительности.

Среда

Несмотря на то, что не все функции Financial Toolbox требуют тех же входных параметров, они все принимают следующий единый набор входных параметров.

Общие входные параметры

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

Значение

Settle

Расчетный день

Maturity

Дата погашения

Period

Период купонного платежа

Basis

Базис дневного количества

EndMonthRule

Платежное правило конца месяца

IssueDate

Дата выпуска облигаций

FirstCouponDate

Первая дата купонного платежа

LastCouponDate

Последняя дата купонного платежа

Из общих входных параметров, только Settle и Maturity требуются. Все другие являются дополнительными. Они установлены в значения по умолчанию, если вы явным образом не устанавливаете их. По умолчанию, FirstCouponDate и LastCouponDate неприменимы. Другими словами, если вы не задаете FirstCouponDate и LastCouponDate, связь принята, чтобы иметь нечетные первые или последние периоды купона. В этом случае связь является стандартной связью со структурой купонного платежа, базирующейся только на дате погашения.

Значения параметров по умолчанию

Чтобы проиллюстрировать использование значений по умолчанию в функциях Financial Toolbox, рассмотрите cfdates функция, которая вычисляет фактические платежные дни потока наличности портфеля ценных бумаг фиксированного дохода независимо от того, нормальны ли первые и/или последние периоды купона, долго, или коротки.

Полный синтаксис вызова с полным списком входных параметров

CFlowDates = cfdates(Settle, Maturity, Period, Basis, ... 
EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate)

в то время как минимальный синтаксис вызова требует только урегулирования и дат погашения

CFlowDates = cfdates(Settle, Maturity)

Один пример связи

Как пример, предположите, что у вас есть связь с этими характеристиками:

Settle          = '20-Sep-1999'
Maturity        = '15-Oct-2007'
Period          = 2
Basis           = 0
EndMonthRule    = 1
IssueDate       = NaN
FirstCouponDate = NaN
LastCouponDate  = NaN

Period, Basis, и EndMonthRule установлены в их значения по умолчанию и IssueDate, FirstCouponDate, и LastCouponDate установлены в NaN.

Официально, NaN стандарт арифметики IEEE® для Не числа и используется, чтобы указать на результат неопределенной операции (например, делится на нуль нулем). Однако NaN также удобный заполнитель. В функциях SIA программного обеспечения Financial Toolbox, NaN указывает на присутствие неприменимого значения. Это говорит функциям Financial Toolbox игнорировать входное значение и применять значение по умолчанию. Установка IssueDate, FirstCouponDate, и LastCouponDate к NaN в этом примере говорит cfdates принимать, что облигация была выпущена перед урегулированием и что существуют никакие нечетные первые или последние периоды купона.

Установив эти значения, все эти вызовы cfdates приведите к тому же результату.

cfdates(Settle, Maturity)
cfdates(Settle, Maturity, Period)
cfdates(Settle, Maturity, Period, [])
cfdates(Settle, Maturity, [], Basis)
cfdates(Settle, Maturity, [], [])
cfdates(Settle, Maturity, Period, [], EndMonthRule)
cfdates(Settle, Maturity, Period, [], NaN)
cfdates(Settle, Maturity, Period, [], [], IssueDate)
cfdates(Settle, Maturity, Period, [], [], IssueDate, [], [])
cfdates(Settle, Maturity, Period, [], [], [], [],LastCouponDate)
cfdates(Settle, Maturity, Period, Basis, EndMonthRule, ... 
IssueDate, FirstCouponDate, LastCouponDate)

Таким образом отъезд конкретного незаданного входа оказывает то же влияние как передача пустой матрицы ([]) или передача NaN – все три говорят cfdates (и другие функции Financial Toolbox), чтобы использовать значение по умолчанию для конкретного входного параметра.

Пример портфеля связи

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

Теперь предположите, что у вас есть портфель двух связей.

Settle   = '20-Sep-1999'
Maturity = ['15-Oct-2007'; '15-Oct-2010']

Эти вызовы cfdates весь набор период купона к его значению по умолчанию (  Period = 2) для обеих связей.

cfdates(Settle, Maturity, 2)
cfdates(Settle, Maturity, [2 2])
cfdates(Settle, Maturity, [])
cfdates(Settle, Maturity, NaN)
cfdates(Settle, Maturity, [NaN NaN])
cfdates(Settle, Maturity)

Первые два вызова явным образом устанавливают Period = 2. Начиная с Maturity 2- 1 вектор из дат погашения, cfdates знает, что у вас есть портфель 2D связи.

Первый вызов задает сингл (то есть, скаляр) 2 для Period. Передача скаляра говорит cfdates применять вход со скалярным знаком ко всем связям в портфеле. Это - пример неявного скалярного расширения. Расчетный день был неявен расширенный до скаляра также.

Второй вызов также применяет период купона по умолчанию путем явной передачи двухэлементного вектора из 2's. Третий вызов передает пустую матрицу, который cfdates интерпретирует как недопустимый период, для которого используется значение по умолчанию. Четвертый вызов подобен, за исключением того, что NaN был передан. Пятый вызов передает два NaNи оказывает то же влияние как третье. Последняя возможность передает минимальный входной набор.

Наконец, рассмотрите следующие вызовы cfdates для того же портфеля 2D связи.

cfdates(Settle, Maturity, [4 NaN])
cfdates(Settle, Maturity, [4 2])

Первый вызов явным образом устанавливает Period = 4 для первой связи и неявно устанавливает Period = 2 по умолчанию для второй связи. Второй вызов оказывает то же влияние как первое, но явным образом устанавливает периодичность для обеих связей.

Дополнительный вход Period использовался для иллюстративной цели только. Обрабатывающий значение по умолчанию процесс, проиллюстрированный в примерах, применяется к любому из дополнительных входных параметров.

Вычисления даты купона

Вычисление дат купона, или фактические или квази даты, является известно сложным. Программное обеспечение Financial Toolbox следует соглашениям SIA в вычислениях даты купона.

Первый шаг в нахождении дат купона, сопоставленных со связью, должен определить ссылку или дату синхронизации (синхронизирующая дата). В среде SIA порядок очередности для определения синхронизирующей даты:

  1. Первая дата купона

  2. Последняя дата купона

  3. Дата погашения

Другими словами, функция Financial Toolbox сначала исследует FirstCouponDate входной параметр. Если FirstCouponDate задан, даты купонного платежа и даты квазикупона вычисляются относительно FirstCouponDate; если FirstCouponDate не задано, пуст ([]), или NaN, затем LastCouponDate исследован. Если LastCouponDate задан, даты купонного платежа и даты квазикупона вычисляются относительно LastCouponDate. Если оба FirstCouponDate и LastCouponDate не заданы, пусты ([]), или NaN, Maturity (необходимый входной параметр), служит датой синхронизации.

Дайте к соглашениям

Существуют два, уступают и соглашения фактора времени, которые используются в программном обеспечении Financial Toolbox – они определяются входом basis. А именно, основывает 0 к 7 приняты, чтобы иметь полугодовое соединение, в то время как базисы 8 к 12 приняты, чтобы иметь ежегодное соединение независимо от периода купонных платежей связи (включая облигации с нулевым купоном). Кроме того, любая связанная с выражением чувствительность (то есть, длительность и выпуклость), когда заключено в кавычки на периодическом базисе, следует этому тому же соглашению. (См. bndconvp, bndconvy, bnddurp, bnddury, и bndkrdur.)

Оценка функций

В этом примере показано, как легко можно вычислить цену связи с нечетным первым периодом с помощью функции bndprice. Примите, что у вас есть связь с этими характеристиками:

Settle          = '11-Nov-1992';
Maturity        = '01-Mar-2005';
IssueDate       = '15-Oct-1992';
FirstCouponDate = '01-Mar-1993';
CouponRate      = 0.0785;
Yield           = 0.0625;

Позвольте период купонного платежа (Period = 2), базис дневного количества (Basis = 0), и правило конца месяца (EndMonthRule = 1) принимать значения по умолчанию. Кроме того, примите, что существует никакая нечетная последняя дата купона и что номинальная стоимость связи составляет 100$. Вызывание функции

[Price, AccruedInt] = bndprice(Yield, CouponRate, Settle, ... 
Maturity, [], [], [], IssueDate, FirstCouponDate)

возвращает цену 113,60$ и начисленные проценты 0,59$.

Подобные функции вычисляют цены с регулярными платежами, нечетными первыми и последними периодами и ценами Казначейских векселей и обесцененных ценных бумаг, таких как облигации с нулевым купоном.

Примечание

bndprice и другие функции используют нелинейные формулы, чтобы вычислить цену безопасности. Поэтому программное обеспечение Financial Toolbox использует метод Ньютона при решении для независимой переменной в формуле. См. любой элементарный учебник численных методов для математики, лежащей в основе метода Ньютона.

Дайте к функциям

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

Settle          = '12-Jan-2000';
Maturity        = '01-Oct-2001';
IssueDate       = '01-Jan-2000';
FirstCouponDate = '15-Jan-2000';
LastCouponDate  = '15-Apr-2000';

Примите номинальную стоимость 100$. Задайте покупную цену 95,70$, купонную ставку 4%, ежеквартальные купонные платежи и 30/360 базу ежедневного расчета процентов (Basis = 1).

Price        = 95.7;
CouponRate   = 0.04;
Period       = 4;
Basis        = 1;
EndMonthRule = 1;

Вызывание функции

Yield = bndyield(Price, CouponRate, Settle, Maturity, Period,... 
Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate)

возвращается

Yield = 0.0659 (6.60%).

Чувствительность фиксированного дохода

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

  • bnddurp и bnddury поддержите анализ длительности и выпуклости на основе рыночных котировок и примите, что параллель переключает кривую доходности облигации на нижний регистр.

  • bndkrdur длительность ключевой процентной ставки поддержек на основе кривой доходности рынка и может смоделировать непараллель, переключает кривую доходности облигации на нижний регистр.

Вычисление длительности и выпуклости для связей

Тулбокс включает функции, чтобы выполнить анализ чувствительности, такой как выпуклость и Маколей и измененная длительность для ценных бумаг фиксированного дохода. Длительность Маколея потока дохода, такого как облигация на предъявителя, измеряется, сколько времени в среднем владелец ожидает прежде, чем получить оплату. Это - взвешенное среднее платежей времен, сделаны, с весами во время T равняйтесь приведенной стоимости денег, полученных во время T. Модифицированная длительность является длительностью Маколея, обесцененной процентной ставкой на период; то есть, разделенный на (1+rate/frequency). Macaulay duration является мерой ценовой чувствительности, чтобы дать к изменениям. Эта длительность измеряется в годах и является средневзвешенным временем к зрелости инструмента.

Чтобы проиллюстрировать, следующий пример вычисляет пересчитанного на год Маколея и измененную длительность и периодическую длительность Маколея для связи с урегулированием (12 января 2000) и зрелостью (01 октября 2001) даты как выше, 5%-я купонная ставка и доход до срока погашения на 4,5%. Для простоты любые дополнительные входные параметры принимают значения по умолчанию (то есть, полугодовые купоны и дневное количество basis = 0 (фактических/фактических) структур купонного платежа, синхронизируемых с датой погашения и оплатой конца месяца, управляют в действительности).

CouponRate = 0.05;
Yield = 0.045;

[ModDuration, YearDuration, PerDuration] = bnddury(Yield,... 
CouponRate, Settle, Maturity)

Длительность

ModDuration  = 1.6107 (years)
YearDuration = 1.6470 (years)
PerDuration  = 3.2940 (semiannual periods)

Обратите внимание на то, что полугодовая периодическая длительность Маколея (PerDuration) дважды пересчитанная на год длительность Маколея (YearDuration).

Вычисление длительности ключевой процентной ставки для связей

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

Вычисление bndkrdur поддержки:

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

Где PV является текущим значением инструмента, PV_up и PV_down являются новыми значениями после того, как дисконтная кривая была потрясена, и ShiftValue является изменением в процентной ставке. Например, если ключевые процентные ставки 3 месяцев, 1, 2, 3, 5, 7, 10, 15, 20, 25, 30 лет были выбраны, то 30-летняя связь может иметь соответствующую длительность ключевой процентной ставки:

3M1Y2Y3Y5Y7Y10Y15Y20Y25Y30Y
.01.04.09.21.4.651.271.711.681.837.03

Длительность ключевой процентной ставки составляет в целом приблизительно равный длительность связи.

Например, вычислите длительность ключевой процентной ставки Казначейской облигации США с датой погашения от 15 августа 2028 и купонной ставки 5,5%.

Settle = datenum('18-Nov-2008'); 
CouponRate = 5.500/100;
Maturity = datenum('15-Aug-2028'); 
Price = 114.83;

Для ZeroData информация о текущей точечной кривой для этой связи, обратитесь к https://www.treas.gov/offices/domestic-finance/debt-management/interest-rate/yield.shtml:

ZeroDates = daysadd(Settle ,[30 90 180 360 360*2 360*3 360*5 ...
360*7 360*10 360*20 360*30]);
ZeroRates = ([0.06 0.12 0.81 1.08 1.22 1.53 2.32 2.92 3.68 4.42 4.20]/100)';

Вычислите длительность ключевой процентной ставки для определенного набора уровней (выберите это на основе сроков платежа доступных инструментов хеджирования):

krd = bndkrdur([ZeroDates ZeroRates],CouponRate,Settle,Maturity,'keyrates',[2 5 10 20])
krd =

    0.2865    0.8729    2.6451    8.5778

Отметьте, сумма длительности ключевой процентной ставки приблизительно равняется длительности связи:

[sum(krd) bnddurp(Price,CouponRate,Settle,Maturity)]
ans =

   12.3823   12.3919

Смотрите также

| | | |

Связанные примеры

Больше о