Суммы и время денежного потока для облигаций и ступенчатых купонов
Этот пример генерирует ступенчатые денежные потоки для трех различных облигаций, все платящие проценты раз в полгода. Срок службы облигаций составляет около 18-19 лет каждый:
Облигация A имеет две конвертации, но первая происходит на дату расчета и немедленно истекает.
Облигация B имеет три конвертации с датами конвертации точно на даты купона.
Облигация C имеет три конвертации, с некоторыми датами конвертации не на даты купона. Имеет самую длинную зрелость. Этот случай показывает, что затрагиваются только денежные потоки за полные периоды после дат конвертации, как показано здесь:
Следующая таблица иллюстрирует характеристики процентной ставки этого портфеля облигаций.
Определите спецификации облигаций.
Settle = datenum('02-Aug-1992'); ConvDates = [datenum('02-Aug-1992'), datenum('15-Jun-2003'),... nan; datenum('15-Jun-1997'), datenum('15-Jun-2001'),... datenum('15-Jun-2005'); datenum('14-Jun-1997'), datenum('14-Jun-2001'),... datenum('14-Jun-2005')]; Maturity = [datenum('15-Jun-2010'); datenum('15-Jun-2010'); datenum('15-Jun-2011')]; CouponRates = [0.075 0.08875 0.0925 nan; 0.075 0.08875 0.0925 0.1; 0.025 0.05 0.0750 0.1]; Basis = 1; Period = 2; EndMonthRule = 1; Face = 100;
Использование stepcpncfamounts
для вычисления денежных потоков и сроков.
[CFlows, CDates, CTimes] = stepcpncfamounts(Settle, Maturity, ConvDates, CouponRates)
CFlows = 3×39
-1.1639 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 104.6250 NaN NaN
-0.9836 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.4375 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 4.6250 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 105.0000 NaN NaN
-0.3279 1.2500 1.2500 1.2500 1.2500 1.2500 1.2500 1.2500 1.2500 1.2500 2.5000 2.5000 2.5000 2.5000 2.5000 2.5000 2.5000 2.5000 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 3.7500 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 105.0000
CDates = 3×39
727778 727913 728095 728278 728460 728643 728825 729008 729191 729374 729556 729739 729921 730104 730286 730469 730652 730835 731017 731200 731382 731565 731747 731930 732113 732296 732478 732661 732843 733026 733208 733391 733574 733757 733939 734122 734304 NaN NaN
727778 727913 728095 728278 728460 728643 728825 729008 729191 729374 729556 729739 729921 730104 730286 730469 730652 730835 731017 731200 731382 731565 731747 731930 732113 732296 732478 732661 732843 733026 733208 733391 733574 733757 733939 734122 734304 NaN NaN
727778 727913 728095 728278 728460 728643 728825 729008 729191 729374 729556 729739 729921 730104 730286 730469 730652 730835 731017 731200 731382 731565 731747 731930 732113 732296 732478 732661 732843 733026 733208 733391 733574 733757 733939 734122 734304 734487 734669
CTimes = 3×39
0 0.7377 1.7377 2.7377 3.7377 4.7377 5.7377 6.7377 7.7377 8.7377 9.7377 10.7377 11.7377 12.7377 13.7377 14.7377 15.7377 16.7377 17.7377 18.7377 19.7377 20.7377 21.7377 22.7377 23.7377 24.7377 25.7377 26.7377 27.7377 28.7377 29.7377 30.7377 31.7377 32.7377 33.7377 34.7377 35.7377 NaN NaN
0 0.7377 1.7377 2.7377 3.7377 4.7377 5.7377 6.7377 7.7377 8.7377 9.7377 10.7377 11.7377 12.7377 13.7377 14.7377 15.7377 16.7377 17.7377 18.7377 19.7377 20.7377 21.7377 22.7377 23.7377 24.7377 25.7377 26.7377 27.7377 28.7377 29.7377 30.7377 31.7377 32.7377 33.7377 34.7377 35.7377 NaN NaN
0 0.7377 1.7377 2.7377 3.7377 4.7377 5.7377 6.7377 7.7377 8.7377 9.7377 10.7377 11.7377 12.7377 13.7377 14.7377 15.7377 16.7377 17.7377 18.7377 19.7377 20.7377 21.7377 22.7377 23.7377 24.7377 25.7377 26.7377 27.7377 28.7377 29.7377 30.7377 31.7377 32.7377 33.7377 34.7377 35.7377 36.7377 37.7377
Визуализация денежных потоков третьей облигации (2,5 - 5 - 7,5 - 10) с помощью cfplot
функция.
cfplot(CDates(3,:),CFlows(3,:)); xlabel('Dates in Serial Number Format') ylabel('Relative Amounts of Cash Flows') title('CashFlow of 2.5 - 5 - 7.5 - 10 Stepped Coupon Bond')
Settle
- Дата расчетаДата расчета, заданная в виде скаляра или NSTP
-by- 1
вектор серийных номеров дат.
Settle
должно быть раньше Maturity
.
Типы данных: double
Maturity
- Дата погашенияДата зрелости, заданная в виде скаляра или NSTP
-by- 1
вектор серийных номеров дат, представляющий дату погашения для каждой облигации.
Типы данных: double
ConvDates
- Даты преобразованияДаты преобразования, заданные как NSTP
-by-max (NCONV
) матрица, содержащая даты преобразования после Settle
. Размер матрицы равен количеству инструментов на максимальное количество преобразований. Заполните неопределенные записи NaN
.
Типы данных: double
CouponRates
- Ставка купона по облигациям Ставка купона на облигацию, заданная как NSTP
-by-max (NCONV+1
) матрица, содержащая ставки купонов для каждой облигации в портфеле в десятичной форме. Размер матрицы равен количеству инструментов по максимальному количеству преобразований + 1. Первый столбец этой матрицы содержит скорости, применимые между Settle
и первую дату преобразования (дата в первом столбце ConvDates
). Заполните неопределенные записи NaN
ConvDates
имеет одинаковое число строк как CouponRates
для отражения того же количества облигаций. Однако ConvDates
имеет на один столбец меньше, чем CouponRates
. Эта ситуация проиллюстрирована на
Settle---------ConvDate1-----------ConvDate2------------Maturity Rate1 Rate2 Rate3
Типы данных: double
Period
- Купоны в год2
в год (по умолчанию) | вектор(Необязательно) Купоны в год в виде NSTP
-by- 1
вектор. Значения для Period
являются 1
, 2
, 3
, 4
, 6
, и 12
.
Типы данных: double
Basis
- базис подсчета дней0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
(Необязательно) Дневной базис каждого инструмента, заданный как NSTP
-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
- Флаг правила конца месяца для генерации дат при Maturity
является датой конца месяца для месяца, имеющего 30 или менее дней1
(в действии) (по умолчанию) | неотрицательное целое число [0,1]
(Необязательно) Флаг правила конца месяца для генерации дат при Maturity
- дата конца месяца для месяца, имеющего 30 или менее дней, заданная для каждой связи в качестве неотрицательного целого числа [0
, 1
] использование NSTP
-by- 1
вектор.
0
= Игнорировать правило, означающее, что дата платежа всегда является одним и тем же числовым днем месяца.
1
= Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.
Типы данных: logical
Face
- Номинал100
(по умолчанию) | вектор неотрицательных значений(Необязательно) Номинальное значение, заданная для каждой облигации как NSTP
-by- 1
вектор неотрицательных значений граней.
Типы данных: double
CFlows
- Суммы денежного потокаСуммы денежного потока, возвращенные как вектор, где первой записью в каждом векторе-строке являются (отрицательные) начисленные проценты, причитающиеся при расчете. Если начисленные проценты не причитаются, первый столбец равен нулю.
CDates
- Даты движения денежных средствДаты денежного потока, возвращенные как вектор в форме серийного номера даты. Всегда присутствуют по крайней мере два столбцов: одна для расчета и одна для погашения.
CTimes
- Коэффициент времени Коэффициент времени для полугодового преобразования цены/доходности SIA, возвращенный как вектор. Пересчет цены/доходности SIA составляет DiscountFactor = (1 + Yield/2).^(-TFactor)
. Временные факторы указаны в единицах полугодовых купонных периодов. Для конвенций ISMA: DiscountFactor = (1 + Yield).^(-TFactor)
. Временные факторы указаны в единицах годовых купонных периодов. При вычислении временных коэффициентов используйте фактические/фактические соглашения SIA для всех вычислений временных коэффициентов.
Примечание
Для облигаций с фиксированными купонами используйте cfamounts
. Если вы используете облигацию с фиксированным купоном с stepcpncfamounts
, MATLAB® программа генерирует ошибку.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.