Продукт Financial Toolbox™ обеспечивает функции для вычислительных начисленных процентов, цены, урожая, выпуклости и длительности ценных бумаг фиксированного дохода. Различные соглашения существуют для определения деталей этих вычислений. Программное обеспечение Financial Toolbox поддерживает соглашения, заданные Индустрией ценных бумаг и Ассоциацией Финансовых рынков (SIFMA), используемый на американских рынках, Ассоциации международного рынка капитала (ICMA), используемой в основном на европейских рынках и Международной Ассоциации Подкачек и Производных (ISDA). По историческим причинам SIFMA упомянут в документации Financial Toolbox как SIA, и ISMA упоминается как Ассоциация международного рынка капитала (ICMA).
Поскольку терминология отличается среди текстов на этом предмете, вот некоторые основные определения, которые применяются к этим функциям Financial Toolbox. Глоссарий содержит дополнительные определения.
Расчетный день связи является датой, когда деньги сначала переходят к другому владельцу; то есть, когда покупатель платит за связь. Это не должно совпадать с датой выпуска, которая является датой, которую связь сначала предлагается для продажи.
Первая дата купона и последняя дата купона являются датами, когда первые и последние купоны заплачены, соответственно. Несмотря на то, что связи обычно платят периодические ежегодные или полугодовые купоны, длина первых и последних периодов купона может отличаться от стандартного периода купона. Тулбокс включает функции цены и урожая, которые обрабатывают эти нечетные первые и/или последние периоды.
Последовательные даты квазикупона определяют длину стандартного периода купона для безопасности фиксированного дохода интереса и не обязательно совпадают с фактическими датами купонного платежа. Тулбокс включает функции, которые вычисляют и фактические даты и даты квазикупона связей с нечетными первыми и/или последними периодами.
Ценные бумаги фиксированного дохода могут быть куплены в даты, которые не совпадают с датами купонного платежа. В этом случае владелец связи не назван на полную стоимость купона в течение того периода. Когда связь куплена между датами купона, покупатель должен компенсировать продавца пропорциональную долю процентной ставки купона, заработанной с предыдущей даты купонного платежа. Эта пропорциональная доля купонного платежа называется начисленными процентами. Покупная цена, цена, заплаченная за связь, является заключенной в кавычки рыночной ценой плюс начисленные проценты.
Дата погашения связи является датой, когда выпускающий возвращает итоговую номинальную стоимость, также известную как значение освобождения или номинальную стоимость, покупателю. Доход до срока погашения связи является номинальной комбинированной ставкой возврата, который приравнивает приведенную стоимость всех будущих потоков наличности (купоны и принципал) к текущей рыночной цене связи.
Период связи относится к частоте, с которой выпускающий связи делает купонные платежи держателю.
Период связи
Значение периода | График платежей |
---|---|
0 | Никакие купоны (Облигация с нулевым купоном) |
1 | Ежегодный |
2 | Полугодовой |
3 | Ежегодный тримараном |
4 | Ежеквартально |
6 | Два раза в месяц |
12 | Ежемесячно |
Основание связи относится к основанию или базе ежедневного расчета процентов для связи. Основание обычно выражается как часть, в которой числитель определяет номер дней между двумя датами, и знаменатель определяет номер дней в году. Например, числитель фактических/фактических означает, что при определении номера дней между двумя датами, считайте фактический номер дней; знаменатель означает, что вы используете фактический номер дней в данном году в любых вычислениях (или 365 или 366 дней в зависимости от того, является ли данный год високосным годом).
База ежедневного расчета процентов определяет, как начисленные проценты вычисляются и определяют, как потоки наличности для связи обесценены, этим означает производить вычисления цены и урожая. Кроме того, соглашение SIA состоит в том, чтобы использовать фактическую/фактическую базу ежедневного расчета процентов для дисконтирования потоков наличности во всех случаях.
Основание связи
Базисное значение | Значение | Описание |
---|---|---|
| фактический/фактический | Фактические дни сохранены за фактические дни в период купона. Знаменатель 365 за большинство лет и 366 в високосный год. |
1 | 30/360 (СИА) | Каждый месяц содержит 30 дней; год содержит 360 дней. Платежи настроены для связей, которые платят купоны в прошлый день февраля. |
2 | фактический/360 | Фактические дни сохранены над 360. |
3 | фактический/365 | Фактические дни сохранены над 365, даже в високосные годы. |
4 | 30/360 PSA | Номер дней в каждом месяце определяется к 30 (включая февраль). Если дата начала периода является или 31-й из месяца или в последний день февраля, дата начала установлена в 30-е. Если дата начала является 30-й из месяца, и дата окончания является 31-й, дата окончания установлена в 30-е. Номер дней через год 360. |
5 | 30/360 ISDA (Международная Ассоциация Дилеров по свопам) | Вариант 30/360 с незначительными различиями для вычисления номера дней за месяц. |
6 | Европеец 30E/360 | Вариант 30/360, используемого, в основном, в Европе. |
7 | фактические/365 японцы | Все годы содержат 365 дней. Дни прыжка проигнорированы. |
8 | фактический/фактический (ICMA) | Фактические дни сохранены за фактические дни в период купона. Знаменатель 365 за большинство лет и 366 в високосный год. Это основание принимает ежегодный период соединения. |
9 | фактический/360 (ICMA) | Фактические дни сохранены над 360. Это основание принимает ежегодный период соединения. |
10 | фактический/365 (ICMA) | Фактические дни сохранены над 365, даже в високосные годы. Это основание принимает ежегодный период соединения. |
11 | 30/360 (ICMA) | Номер дней в каждом месяце определяется к 30. Если дата начала или дата окончания периода является 31-й из месяца, та дата назначена к 30-му. Номер дней через год 360. |
12 | фактический/365 (ISDA) | В этот день часть количества равна сумме номера дней накопления процентов, падая с високосным годом, разделенным на 366 и номера дней накопления процентов, не находящихся в пределах високосного года, разделенного на 365. |
13 | ШИНА/252 | Номер рабочих дней между предыдущим купонным платежом и данными об урегулировании, разделенными на 252. Рабочие дни BUS/252 являются невыходными, непраздничными днями. Файл |
Для получения дополнительной информации смотрите основание.
Несмотря на то, что концепция дневного количества звучит обманчиво простой, фактическое вычисление дневных количеств может быть комплексным. Можно найти хорошее обсуждение дневных количеств и формул для вычисления их в Главе 5 Стигума и Робинсона, Денежного рынка и Вычислений Связи в Библиографии.
Правило конца месяца влияет на структуру купонного платежа связи. Когда правило будет в действительности, безопасность, которая платит купон в прошлый фактический день месяца, будет всегда платить купоны в прошлый день месяца. Это означает, например, что полугодовая связь, которая платит купон 28 февраля в годах непрыжка, заплатит купоны 31 августа во всех годах и 29 февраля в високосные годы.
Правило конца месяца
Значение правила конца месяца | Значение |
---|---|
| Управляйте в действительности. |
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
-by-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).
Чтобы проиллюстрировать, следующий пример вычисляет пересчитанного на год Маколея и измененную длительность и периодическую длительность Маколея для связи с урегулированием (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