exponenta event banner

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-по-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-по-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около-1 вектор.

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

Когда FirstCouponDate и LastCouponDate

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

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

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

Примечание

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

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

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

Примечание

Для запуска инструмента вперед укажите StartDate как будущая дата.

Если не указать StartDate, дата начала действия - Settle дата.

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 1 - Годовое суммирование

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

  • 3 - Три раза в год

  • 4 - Квартальное суммирование

  • 6 - Компаундирование раз в два месяца

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

Примечание

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

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

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

Дополнительные сведения см. в разделе Базис.

Примечание

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Флаг

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

0

Начисленные проценты, причитающиеся по облигации при расчете.

1

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

2

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

3

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

4

Обычная сумма остаточного денежного потока (номинальная стоимость плюс номинальная сумма купона).

5

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

6

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

7

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

8

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

9

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

10

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

11

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

12

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

13

Сумма основной суммы и номинального купонного денежного потока.

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

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

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

Подробнее

свернуть все

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

Временные факторы помогают определить текущую стоимость потока денежных потоков.

Термин временные факторы относится к степени 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.

Примечание

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

Ссылки

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

[2] Мейл, Дж. «Стандартные методы расчета ценных бумаг: формулы ценных бумаг с фиксированным доходом для аналитических показателей». SIA, том 2, январь 1994 года.

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

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