cfamounts

Денежный поток и картирование времени для портфеля облигаций

В R2017b изменена спецификация необязательных входных параметров. Хотя синтаксис предыдущих упорядоченных входов все еще поддерживается, он может больше не поддерживаться в будущем релизе. Используйте необязательные входы пары "имя-значение": Period, Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate, StartDate, Face, AdjustCashFlowsBasis, BusinessDayConvention, CompoundingFrequency, DiscountBasis, Holidays, и PrincipalType.

Описание

пример

[CFlowAmounts,CFlowDates,TFactors,CFlowFlags,CFPrincipal] = cfamounts(CouponRate,Settle,Maturity) возвращает матрицы сумм денежного потока, дат денежного потока, временных факторов и флагов денежных потоков для портфеля NUMBONDS ценные бумаги с фиксированной доходностью.

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

пример

[CFlowAmounts,CFlowDates,TFactors,CFlowFlags,CFPrincipal] = cfamounts(___,Name,Value) добавляет необязательные аргументы имя-значение.

Примеры

свернуть все

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

Settle = '01-Nov-1993';
Maturity = ['15-Dec-1994';'15-Jun-1995'];
CouponRate= [0.06; 0.05];
Period = [4; 2];
Basis = [1; 0];
[CFlowAmounts, CFlowDates, TFactors, CFlowFlags] = ...
cfamounts(CouponRate,Settle, Maturity, Period, Basis)
CFlowAmounts = 2×6

   -0.7667    1.5000    1.5000    1.5000    1.5000  101.5000
   -1.8989    2.5000    2.5000    2.5000  102.5000       NaN

CFlowDates = 2×6

      728234      728278      728368      728460      728552      728643
      728234      728278      728460      728643      728825         NaN

TFactors = 2×6

         0    0.2404    0.7403    1.2404    1.7403    2.2404
         0    0.2404    1.2404    2.2404    3.2404       NaN

CFlowFlags = 2×6

     0     3     3     3     3     4
     0     3     3     3     4   NaN

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

Settle = datetime('01-Nov-1993','Locale','en_US');
Maturity = ['15-Dec-1994';'15-Jun-1995'];
CouponRate= [0.06; 0.05];
Period = [4; 2];
Basis = [1; 0];
[CFlowAmounts, CFlowDates, TFactors, CFlowFlags] = cfamounts(CouponRate,...
Settle, Maturity, Period, Basis)
CFlowAmounts = 2×6

   -0.7667    1.5000    1.5000    1.5000    1.5000  101.5000
   -1.8989    2.5000    2.5000    2.5000  102.5000       NaN

CFlowDates = 2x6 datetime
Columns 1 through 5

   01-Nov-1993   15-Dec-1993   15-Mar-1994   15-Jun-1994   15-Sep-1994
   01-Nov-1993   15-Dec-1993   15-Jun-1994   15-Dec-1994   15-Jun-1995

Column 6

   15-Dec-1994
   NaT        

TFactors = 2×6

         0    0.2404    0.7403    1.2404    1.7403    2.2404
         0    0.2404    1.2404    2.2404    3.2404       NaN

CFlowFlags = 2×6

     0     3     3     3     3     4
     0     3     3     3     4   NaN

В этом примере показано, как вычислить структуру денежного потока и временные факторы для портфеля облигаций, который содержит корпоративную облигацию, выплачивающую проценты ежеквартально и казначейскую облигацию, выплачивающую проценты раз в полгода. Этот пример использует следующие пары "имя-значение" для Period, Basis, BusinessDayConvention, и AdjustCashFlowsBasis.

Settle = '01-Jun-2010';
Maturity = ['15-Dec-2011';'15-Jun-2012'];
CouponRate= [0.06; 0.05];
Period = [4; 2];
Basis = [1; 0];
 
[CFlowAmounts, CFlowDates, TFactors, CFlowFlags] = ...
cfamounts(CouponRate,Settle, Maturity, 'Period',Period, ... 
'Basis', Basis, 'AdjustCashFlowsBasis', true,...
'BusinessDayConvention','modifiedfollow')
CFlowAmounts = 2×8

   -1.2667    1.5000    1.5000    1.5000    1.5000    1.5000    1.5000  101.5000
   -2.3077    2.4932    2.5068    2.4932    2.5000  102.5000       NaN       NaN

CFlowDates = 2×8

      734290      734304      734396      734487      734577      734669      734761      734852
      734290      734304      734487      734669      734852      735035         NaN         NaN

TFactors = 2×8

         0    0.0778    0.5778    1.0778    1.5778    2.0778    2.5778    3.0778
         0    0.0769    1.0769    2.0769    3.0769    4.0769       NaN       NaN

CFlowFlags = 2×8

     0     3     3     3     3     3     3     4
     0     3     3     3     3     4   NaN   NaN

В этом примере показано, как использовать cfamounts с CouponRate расписание. Для CouponRate и Face которые изменяются в течение срока действия облигации, графиков для CouponRate и Face может быть задан как NINST-by-1 массив ячеек, где каждый элемент является NumDates-by-2 матрица, где первый столбец является датами, а второй - связанными скоростями.

CouponSchedule = {[datenum('15-Mar-2012') .04;datenum('15- Mar -2013') .05;...
datenum('15- Mar -2015') .06]}
CouponSchedule = 1x1 cell array
    {3x2 double}

cfamounts(CouponSchedule,'01-Mar-2011','15-Mar-2015' )
ans = 1×10

   -1.8453    2.0000    2.0000    2.0000    2.5000    2.5000    3.0000    3.0000    3.0000  103.0000

В этом примере показано, как использовать cfamounts с Face расписание. Для CouponRate и Face которые изменяются в течение срока действия облигации, графиков для CouponRate и Face может быть задан как NINST-by-1 массив ячеек, где каждый элемент является NumDates-by-2 матрица, где первый столбец является датами, а второй - связанными скоростями.

FaceSchedule = {[datenum('15-Mar-2012') 100;datenum('15- Mar -2013') 90;...
datenum('15- Mar -2015') 80]}
FaceSchedule = 1x1 cell array
    {3x2 double}

cfamounts(.05,'01-Mar-2011','15-Mar-2015', 'Face', FaceSchedule)
ans = 1×10

   -2.3066    2.5000    2.5000   12.5000    2.2500   12.2500    2.0000    2.0000    2.0000   82.0000

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

[CFlowAmounts,CFDates,TFactors,CFFlags,CFPrincipal] = cfamounts(.05,'04-Nov-2010',...
{'15-Jul-2014';'15-Jul-2015'},'Face',{[datenum('15-Jul-2013') 100;datenum('15-Jul-2014')...
90;datenum('15-Jul-2015') 80]})
CFlowAmounts = 2×11

   -1.5217    2.5000    2.5000    2.5000    2.5000    2.5000   12.5000    2.2500   92.2500       NaN       NaN
   -1.5217    2.5000    2.5000    2.5000    2.5000    2.5000   12.5000    2.2500   12.2500    2.0000   82.0000

CFDates = 2×11

      734446      734518      734699      734883      735065      735249      735430      735614      735795         NaN         NaN
      734446      734518      734699      734883      735065      735249      735430      735614      735795      735979      736160

TFactors = 2×11

         0    0.3913    1.3913    2.3913    3.3913    4.3913    5.3913    6.3913    7.3913       NaN       NaN
         0    0.3913    1.3913    2.3913    3.3913    4.3913    5.3913    6.3913    7.3913    8.3913    9.3913

CFFlags = 2×11

     0     3     3     3     3     3    13     3     4   NaN   NaN
     0     3     3     3     3     3    13     3    13     3     4

CFPrincipal = 2×11

     0     0     0     0     0     0    10     0    90   NaN   NaN
     0     0     0     0     0     0    10     0    10     0    80

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

свернуть все

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

CouponRate является 0 для нулевых купонных облигаций.

Примечание

CouponRate и Face может измениться в течение срока службы связи. Расписания для CouponRate и Face может быть задан как NBONDS-by- 1 массив ячеек, где каждый элемент является NumDates-by- 2 матрица или массив ячеек, где первый столбец является датами (серийные номера дат или векторы символов), а второй столбец связан скоростями. Дата указывает на последний день действия ставки купона или значения. Это означает, что соответствующий CouponRate и Face значение применяется «на или раньше» указанной даты окончания.

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

Дата расчета облигации в виде скаляра или NBONDS-by- 1 вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени. The Settle дата должна быть перед Maturity дата.

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

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

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

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

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

Пример: [CFlowAmounts, CFlowDates, TFactors, CFlowFlags] = ... cfamounts(CouponRate,Settle, Maturity,'Period',4,'Basis',3,'AdjustCashFlowsBasis',true,'BusinessDayConvention','modifiedfollow')

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

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

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

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

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

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

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

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

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

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

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

Примечание

Когда FirstCouponDate и LastCouponDate

оба заданы, FirstCouponDate имеет приоритет при определении структуры купонного платежа. Если FirstCouponDate не задан, тогда LastCouponDate определяет купонную структуру облигации.

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

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

Примечание

Когда FirstCouponDate и LastCouponDate оба заданы, FirstCouponDate имеет приоритет при определении структуры купонного платежа. Если FirstCouponDate не задан, тогда LastCouponDate определяет купонную структуру облигации.

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

Форвардная дата начала купонных выплат после Settle дата, заданная как разделенная разделенными запятой парами, состоящая из 'StartDate' и скаляр или NBONDS-by- 1 вектор с использованием серийных номеров дат, векторов символов дат или массивов данных времени.

Примечание

Чтобы сделать инструмент стартовым, задайте StartDate как будущая дата.

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

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

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

Примечание

CouponRate и Face может измениться в течение срока службы связи. Расписания для CouponRate и Face может быть задан как NBONDS-by- 1 массив ячеек, где каждый элемент является NumDates-by- 2 матрица или массив ячеек, где первый столбец является датами (серийные номера дат или векторы символов), а второй столбец связан скоростями. Дата указывает на последний день действия ставки купона или значения. Это означает, что соответствующий CouponRate и Face значение применяется «на или раньше» указанной даты окончания.

Когда соответствующий Face значение используется для вычисления cashflow купона на указанную дату окончания. Три вещи происходят в указанную дату окончания:

  1. Последний купон, соответствующий текущей Face значение оплачено.

  2. Основной дифференциал (между током и следующим Face значение) оплачивается.

  3. Дата отмечает начало периода следующим Face значение, для которого денежный поток происходит только позже.

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

Корректирует денежные потоки в соответствии с суммой начисления на основе фактического счетчика дней периода, заданного как разделенная разделенными запятой парами, состоящая из 'AdjustCashFlowsBasis' и скаляр или NBONDS-by- 1 вектор.

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

Соглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention' и скаляр или NBONDS-by- 1 массив ячеек из векторов символов соглашений о рабочих днях, которые будут использоваться при вычислении дат оплаты. Выбор для соглашения о рабочих днях определяет, как обрабатываются дни небизнеса. Дни небизнеса определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (для примера, уставных праздников). Значения:

  • 'actual' - Дни небизнеса эффективно игнорируются. Денежные потоки, которые приходятся на нерабочие дни, считаются распределенными на фактическую дату.

  • 'follow' - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными на следующий рабочий день.

  • 'modifiedfollow' - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, то вместо этого принимается предыдущий рабочий день.

  • 'previous' - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными в предыдущий рабочий день.

  • 'modifiedprevious' - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.

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

Частота компаундирования для вычисления выражения, заданная как разделенная разделенными запятой парами, состоящая из 'CompoundingFrequency' и скаляр или NBONDS-by- 1 вектор. Значения:

  • 1 - Ежегодное компаундирование

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

  • 3 - Смешивание три раза в год

  • 4 - ежеквартальное компаундирование

  • 6 - Двухмесячное компаундирование

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

Примечание

По умолчанию SIA основ (0- 7) и BUS/252 используйте полугодовое соглашение о компаундировании и основы ICMA (8- 12) использовать ежегодное соглашение о компаундировании.

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

Базис, используемый для вычисления коэффициентов дисконтирования для вычисления выражения, заданный как разделенная разделенными запятой парами, состоящая из 'DiscountBasis' и скаляр или NBONDS-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

Для получения дополнительной информации см. раздел Базиса.

Примечание

Если в Basis определен базис подсчета дней SIA входной параметр и нет значения, назначенного для DiscountBasisповедение по умолчанию для основ SIA, чтобы использовать actual/actual счетчик дней для вычисления коэффициентов дисконтирования.

Если используется базис подсчета дней или BUS/252 ICMA определяется в Basis входной параметр и нет значения, назначенного для DiscountBasis, указанные основы из Basis используются входные параметры.

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

Даты праздников, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays' и a NHOLIDAYS-by- 1 вектор MATLAB® дат с использованием серийных номеров дат, векторов символов дат или массивов datetime. Праздничные дни используются в вычислительных рабочих днях.

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

Тип участника, когда Face расписание, заданное как разделенная разделенными запятой парами, состоящая из 'PrincipalType' и значение 'sinking' или 'bullet' использование скаляра или NBONDS-by- 1 вектор.

Если 'sinking'основные денежные потоки возвращаются на протяжении всего срока действия облигации.

Если 'bullet'основной денежный поток возвращается только к сроку погашения.

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

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

свернуть все

Суммы денежного потока, возвращенные как NBONDS-by- NCFS (количество денежных потоков) матрица. Первая запись в каждом векторе-строке - это начисленные проценты, причитающиеся при расчете. Эта сумма может быть нулем, положительной или отрицательной. Если начисленные проценты не причитаются, первый столбец равен нулю. Если облигация торгуется экс-купоном, начисленные проценты будут отрицательными.

Даты денежного потока для портфеля облигаций, возвращенные как NBONDS-by- NCFS матрица. Каждая строка представляет одну облигацию в портфеле. Каждый элемент в столбце представляет дату денежного потока этой облигации.

Если все перечисленные выше входы (Settle, Maturity, IssueDate, FirstCouponDate, LastCouponDate, и StartDate) являются серийными номерами дат или векторов символов дат, затем CFlowDates возвращается как серийный номер даты. Если любой из этих входов является массивами datetime, то CFlowDates возвращается как массив datetime.

Матрица временных факторов для портфеля облигаций, возвращаемая как NBONDS-by- NCFS матрица. Каждая строка соответствует вектору временных факторов для каждой связи. Каждый элемент в столбце соответствует определенному временному фактору, сопоставленному с каждым денежным потоком облигации.

Временные коэффициенты для преобразования цены/доходности и временные коэффициенты указаны в единицах целых полугодовых купонных периодов плюс любой дробный период с использованием фактического счетчика дней. Для получения дополнительной информации о time factors см. Раздел «Временные факторы».

Флаги денежных потоков для портфеля облигаций, возвращенные как NBONDS-by- NCFS матрица. Каждая строка соответствует вектору флагов денежного потока для каждой облигации. Каждый элемент в столбце соответствует определенному флагу, сопоставленному с каждым денежным потоком облигации. Флаги определяют тип каждого денежного потока (для примера, номинального купонного денежного потока, переднего, или конечного частичного, или «заглушного» купона, денежного потока со сроком погашения).

Флаг

Тип денежного потока

0

Начисленные проценты к погашению по облигации.

1

Начальная сумма денежного потока меньше нормы из-за периода купона «заглушка». Период заглушки создается, когда время от даты выпуска до даты первого купона короче обычного.

2

Больше, чем обычно, начальная сумма денежного потока, потому что первый купонный период больше, чем обычно.

3

Номинальная сумма купонного денежного потока.

4

Нормальная сумма денежного потока по срокам погашения (номинальное значение плюс номинальная сумма купона).

5

Конечная сумма купона (последний купонный период аномально короткий, а фактический денежный поток на срок меньше обычного).

6

Больший, чем обычно, денежный поток на срок, поскольку последний купонный период больше, чем обычно.

7

Денежный поток со сроком погашения по купонной облигации, если у облигации меньше одного купонного периода до погашения.

8

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

9

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

10

Денежный поток на срок по нулевой купонной облигации.

11

Потопляющая основная сумма и начальная сумма денежного потока меньше нормы из-за периода купона «заглушка». Период заглушки создается, когда время от даты выпуска до даты первого купона короче обычного.

12

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

13

Потопляющий основной и номинальный купонный денежный поток.

Основные денежные потоки, возвращенные как NBONDS-by- NCFS матрица.

Если PrincipalType является 'sinking', CFPrincipal выход указывает, когда возвращается участник.

Если PrincipalType является 'bullet', CFPrincipal все нули и, в Maturity, соответствующий Face значение.

Подробнее о

свернуть все

Временные факторы

Time factors помогают определить текущее значение потока денежных потоков.

Термин time factors refer к экспоненте TF в уравнении дисконтирования

PV=i=1n(CF(1+zf)TF),

где:

PV =

Текущее значение денежного потока.

CF =

Сумма денежного потока.

z =

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

f =

Частота котировок для выражения. По умолчанию это 2 для Basis значения 0 на 7 и 13 и 1 для Basis значения 8 на 12. Значение по умолчанию можно переопределить, задав CompoundingFrequency Пара "имя-значение".

TF =

Коэффициент времени для данного денежного потока. Коэффициент времени вычисляется с помощью частоты компаундирования и базиса скидок. Если эти значения не заданы, то значения по умолчанию следующие: CompoundingFrequency по умолчанию является 2 для Basis значения 0 на 7 и 13 и 1 для Basis значения 8 на 12.

DiscountBasis является 0 для Basis значения 0 на 7 и 13 и значение входного Basis для Basis значения 8 на 12.

Примечание

The Basis всегда используется для вычисления начисленных процентов.

Ссылки

[1] Кргин, Д. Справочник по глобальным расчетам фиксированного дохода. Уайли, 2002.

[2] Mayle, J. «Стандартные методы расчета ценных бумаг: формулы ценных бумаг с фиксированным доходом для аналитических мер». SIA, Vol 2, Jan 1994.

[3] Стигум, М., Робинсон, Ф. Денежный рынок и расчет облигаций. МакГро-Хилл, 1996.

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