Продукт 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 | фактический/фактический (значение по умолчанию) — Номер дней и в период и в год является фактическим номером дней. Кроме того, другим общим фактическим/фактическим базисом является базис |
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 — дневная часть количества вычисляется с помощью следующей формулы: |
13 | шина/252 — номер дней в период равен фактическому номеру рабочих дней. Номер рабочих дней через год 252. |
Примечание
Несмотря на то, что концепция дневного количества звучит обманчиво простой, фактическое вычисление дневных количеств может быть комплексным. Можно найти хорошее обсуждение дневных количеств и формул для вычисления их в Главе 5 Стигума и Робинсона, Денежного рынка и Вычислений Связи в Библиографии.
Правило конца месяца влияет на структуру купонного платежа связи. Когда правило будет в действительности, безопасность, которая платит купон в прошлый фактический день месяца, будет всегда платить купоны в прошлый день месяца. Это означает, например, что полугодовая связь, которая платит купон 28 февраля в годах непрыжка, заплатит купоны 31 августа во всех годах и 29 февраля в високосные годы.
Правило конца месяца
Значение правила конца месяца | Значение |
---|---|
1 | Управляйте в действительности. |
0 | Правило не в действительности. |
Несмотря на то, что не все функции Financial Toolbox требуют тех же входных параметров, они все принимают следующий единый набор входных параметров.
Общие входные параметры
Входной параметр | Значение |
---|---|
| Расчетный день |
| Дата погашения |
| Период купонного платежа |
| Базис дневного количества |
| Платежное правило конца месяца |
| Дата выпуска облигаций |
| Первая дата купонного платежа |
| Последняя дата купонного платежа |
Из общих входных параметров, только 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 порядок очередности для определения синхронизирующей даты:
Первая дата купона
Последняя дата купона
Дата погашения
Другими словами, функция 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)
Обратите внимание на то, что полугодовая периодическая длительность Маколея (PerDuratio
n) дважды пересчитанная на год длительность Маколея (YearDuration
).
Длительность ключевой процентной ставки позволяет вам оценить чувствительность и цену связи, чтобы не быть параллельными изменениям в точечной или кривой нулевой ширины путем разложения процентного риска вдоль точечной или кривой нулевой ширины. Длительность ключевой процентной ставки относится к процессу выбора набора ключевых процентных ставок и вычисления длительности для каждого уровня. А именно, для каждой ключевой процентной ставки, в то время как другие уровни считаются постоянные, ключевая процентная ставка смещена вверх и вниз (и промежуточные даты потока наличности интерполированы), и затем приведенная стоимость безопасности, учитывая переключенные кривые вычисляется.
Вычисление bndkrdur
поддержки:
Где PV является текущим значением инструмента, PV_up и PV_down являются новыми значениями после того, как дисконтная кривая была потрясена, и ShiftValue является изменением в процентной ставке. Например, если ключевые процентные ставки 3 месяцев, 1, 2, 3, 5, 7, 10, 15, 20, 25, 30 лет были выбраны, то 30-летняя связь может иметь соответствующую длительность ключевой процентной ставки:
3M | 1Y | 2Y | 3Y | 5Y | 7Y | 10Y | 15Y | 20Y | 25Y | 30Y |
.01 | .04 | .09 | .21 | .4 | .65 | 1.27 | 1.71 | 1.68 | 1.83 | 7.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
bndconvp
| bndconvy
| bnddurp
| bnddury
| bndkrdur