Ценовая облигация от дерева процентных ставок Black-Karasinski
[
добавляет дополнительные аргументы пары "имя-значение".Price
,PriceTree
]
= bondbybk(___,Name,Value
)
Цена 4% облигации с помощью дерева процентных ставок Black-Karasinski.
Загрузка deriv.mat
, который обеспечивает BKTree
. The BKTree
структура содержит информацию о времени и процентной ставке, необходимую для ценообразования облигации.
load deriv.mat;
Определите связь с помощью необходимых аргументов. Другие аргументы используют значения по умолчанию.
CouponRate = 0.04; Settle = '01-Jan-2004'; Maturity = '1-Jan-2008';
Использование bondbybk
для вычисления цены облигации.
Period = 1; Price = bondbybk(BKTree, CouponRate, Settle, Maturity, Period)
Price = 99.3296
Цена одиночных ступенчатых купонных облигаций с использованием рыночных данных.
Определите структуру процентной ставки.
Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2010'; StartDates = ValuationDate; EndDates = {'Jan-1-2011'; 'Jan-1-2012';... 'Jan-1-2013'; 'Jan-1-2014'}; Compounding = 1;
Создайте RateSpec
.
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RS = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [4x1 double]
Rates: [4x1 double]
EndTimes: [4x1 double]
StartTimes: [4x1 double]
EndDates: [4x1 double]
StartDates: 734139
ValuationDate: 734139
Basis: 0
EndMonthRule: 1
Создайте инструмент шагового соединения.
Settle = '01-Jan-2010'; Maturity = {'01-Jan-2011';'01-Jan-2012';'01-Jan-2013';'01-Jan-2014'}; CouponRate = {{'01-Jan-2012' .0425;'01-Jan-2014' .0750}}; Period = 1;
Создайте дерево BK с помощью следующих рыночных данных:
VolDates = ['1-Jan-2011'; '1-Jan-2012'; '1-Jan-2013'; '1-Jan-2014']; VolCurve = 0.01; AlphaDates = '01-01-2014'; AlphaCurve = 0.1; BKVolSpec = bkvolspec(RS.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); BKTimeSpec = bktimespec(RS.ValuationDate, VolDates, Compounding); BKT = bktree(BKVolSpec, RS, BKTimeSpec);
Рассчитать цену ступенчатых купонных облигаций.
PBK= bondbybk(BKT, CouponRate, Settle,Maturity , Period)
PBK = 4×1
100.7246
100.0945
101.5900
102.0820
Цена облигации с графиком амортизации с помощью Face
входной параметр для определения расписания.
Определите структуру процентной ставки.
Rates = 0.065; ValuationDate = '1-Jan-2011'; StartDates = ValuationDate; EndDates= '1-Jan-2017'; Compounding = 1;
Создайте RateSpec
.
RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: 0.6853
Rates: 0.0650
EndTimes: 6
StartTimes: 0
EndDates: 736696
StartDates: 734504
ValuationDate: 734504
Basis: 0
EndMonthRule: 1
Создайте инструмент облигации. Облигация имеет купонную ставку 7%, срок один год, и созревает по 1-Jan-2017.
CouponRate = 0.07; Settle ='1-Jan-2011'; Maturity = '1-Jan-2017'; Period = 1; Face = {{'1-Jan-2015' 100;'1-Jan-2016' 90;'1-Jan-2017' 80}};
Создайте дерево BK со следующими рыночными данными:
VolDates = ['1-Jan-2012'; '1-Jan-2013';... '1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017']; VolCurve = 0.01; AlphaDates = '01-01-2017'; AlphaCurve = 0.1; BKVolSpec = bkvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); BKTimeSpec = bktimespec(RateSpec.ValuationDate, VolDates, Compounding); BKT = bktree(BKVolSpec, RateSpec, BKTimeSpec);
Вычислите цену амортизирующей связи.
Price = bondbybk(BKT, CouponRate, Settle, Maturity, 'Period', Period,... 'Face', Face)
Price = 102.3155
Сравните результаты с ценой ванильной связи.
PriceVanilla = bondbybk(BKT, CouponRate, Settle, Maturity, Period)
PriceVanilla = 102.4205
BKTree
- Структура процентной ставкиДревовидная структура процентной ставки, созданная bktree
Типы данных: struct
CouponRate
- Ставка купона по облигациям Ставка купона на облигацию, заданная как NINST
-by- 1
десятичный годовой темп или NINST
-by- 1
массив ячеек, где каждый элемент является NumDates
-by- 2
массив ячеек. Первый столбец NumDates
-by- 2
массив ячеек является датами, и второй столбец связан скоростями. Дата указывает на последний день действия ставки купона.
Типы данных: double
| cell
Settle
- Дата расчетаДата расчета, заданная в виде скаляра или NINST
-by- 1
вектор серийных номеров дат или векторов символов дат.
The Settle
дата для каждой облигации устанавливается в ValuationDate
дерева BK. Аргумент в пользу Settle
игнорируется.
Типы данных: char
| double
Maturity
- Дата погашенияДата зрелости, заданная как NINST
-by- 1
вектор серийных номеров дат или векторов символов дат, представляющих дату погашения для каждой облигации.
Типы данных: char
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
[Price,PriceTree] = bondbybk(BKTree,CouponRate,Settle,Maturity,'Period',4,'Face',10000)
'Period'
- Купоны в год2
в год (по умолчанию) | векторКупоны в год, заданные как разделенная разделенными запятой парами, состоящая из 'Period'
и a NINST
-by- 1
вектор. Значения для Period
являются 1
, 2
, 3
, 4
, 6
, и 12
.
Типы данных: double
'Basis'
- базис подсчета дней0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
Дневной базис инструмента, заданный как разделенная запятыми пара, состоящая из 'Basis'
и a NINST
-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 или менее дней, заданная как разделенная разделенными запятой парами, состоящая из 'EndMonthRule'
и неотрицательное целое число [0
, 1
] использование NINST
-by- 1
вектор.
0
= Игнорировать правило, означающее, что дата платежа всегда является одним и тем же числовым днем месяца.
1
= Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.
Типы данных: logical
'IssueDate'
- Дата выпуска облигацийДата выпуска облигации, заданная как разделенная разделенными запятой парами, состоящая из 'IssueDate'
и a NINST
-by- 1
вектор с использованием последовательного неотрицательного номера даты или вектора символов даты.
Типы данных: double
| char
'FirstCouponDate'
- Нерегулярная дата первого купонаНерегулярная дата первого купона, заданная как разделенная разделенными запятой парами, состоящая из 'FirstCouponDate'
и a NINST
-by- 1
вектор с использованием последовательного неотрицательного номера даты или вектора символов даты.
Когда FirstCouponDate
и LastCouponDate
оба заданы, FirstCouponDate
имеет приоритет при определении структуры купонного платежа. Если вы не задаете FirstCouponDate
Даты платежа денежного потока определяются из других входов.
Типы данных: double
| char
'LastCouponDate'
- Нерегулярная дата последнего купонаНерегулярная дата последнего купона, заданная как разделенная разделенными запятой парами, состоящая из 'LastCouponDate'
и a NINST
-by- 1
вектор с использованием последовательного неотрицательного номера даты или вектора символов даты.
При отсутствии заданного FirstCouponDate
, a заданное LastCouponDate
определяет купонную структуру облигации. Купонная структура облигации усечена в LastCouponDate
, независимо от того, где он падает, и сопровождается только датой движения денежных средств по облигации со сроком погашения. Если вы не задаете LastCouponDate
Даты платежа денежного потока определяются из других входов.
Типы данных: double
| char
'StartDate'
- Форвардная дата начала платежейSettle
дата (по умолчанию) | серийный номер даты | вектор символов датыДата начала платежей (дата, с которой рассматривается денежный поток облигаций), заданная как разделенная разделенными запятой парами, состоящая из 'StartDate'
и a NINST
-by- 1
вектор с использованием серийных номеров дат или векторов символов дат.
Если вы не задаете StartDate
, дата начала вступления в силу является Settle
дата.
Типы данных: char
| double
'Face'
- Номинал100
(по умолчанию) | неотрицательное значение | массив ячеек неотрицательных значенийНоминальное или номинальное значение, заданное как разделенная разделенными запятой парами, состоящая из 'Face'
и a NINST
-by- 1
вектор неотрицательных значений граней или NINST
-by- 1
массив ячеек из значений граней или спецификаций лицевых значений. В последнем случае каждый элемент массива ячеек является NumDates
-by- 2
массив ячеек, где первый столбец - даты, а второй - связанное с ним номинальное значение. Дата указывает последний день, когда значение лица является допустимым.
Типы данных: cell
| double
'Options'
- Опции ценообразования производных инструментовПроизводные опции ценообразования, заданные как разделенная разделенными запятой парами, состоящая из 'Options'
и структуру, которая создается с derivset
.
Типы данных: struct
'AdjustCashFlowsBasis'
- Флаг для корректировки денежных потоков на основе фактического количества дней периодаfalse
(по умолчанию) | значение 0
(false) или 1
ПравдаФлаг для корректировки денежных потоков на основе фактического количества дней периода, заданный как разделенная разделенными запятой парами, состоящая из 'AdjustCashFlowsBasis'
и a NINST
-by- 1
вектор логических единиц со значениями 0
(false) или 1
Правда.
Типы данных: logical
'BusinessDayConvention'
- Договоры о рабочих дняхactual
(по умолчанию) | вектор символов | массив ячеек из векторов символовСоглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention'
и вектор символов или N
-by- 1
(или NINST
-by- 2
если BusinessDayConvention
отличается для каждой ветви) массив ячеек из векторов символов соглашений о рабочих днях. Выбор для соглашения о рабочих днях определяет режим обработки нерабочих дней. Нерабочие дни определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (например, установленные законом праздничные дни). Значения:
actual
- Нерабочие дни фактически игнорируются. Денежные потоки, которые приходятся на нерабочие дни, считаются распределенными на фактическую дату.
follow
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день.
modifiedfollow
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, то вместо этого принимается предыдущий рабочий день.
previous
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день.
modifiedprevious
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.
Типы данных: char
| cell
'Holidays'
- Праздничные дни, используемые в рабочих дняхholidays.m
(по умолчанию) | MATLAB® номера датПраздничные дни, используемые в вычислении рабочих дней, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays'
и номера дат MATLAB с использованием NHolidays
-by- 1
вектор.
Типы данных: double
Price
- Ожидаемые цены облигаций на момент 0Ожидаемые цены облигаций на момент 0, возвращенные как NINST
-by- 1
вектор.
PriceTree
- Древовидная структура цен на приборыДревовидная структура цен на приборы, возвращаемая как структура MATLAB деревьев, содержащая векторы цен на приборы и начисленных процентов, и вектор времени наблюдения для каждого узла. Внутри PriceTree
:
PriceTree.PTree
содержит чистые цены.
PriceTree.AITree
содержит начисленные проценты.
PriceTree.tObs
содержит время наблюдения.
PriceTree.Connect
содержит векторы связности. Каждый элемент массива ячеек описывает, как узлы на этом уровне соединяются с следующим. Для заданного уровня дерева существуют NumNodes
элементы в векторе, и они содержат индекс узла на следующем уровне, с которым соединяется средняя ветвь. Вычитание 1 из этого значения указывает, где соединяется восходящая ветвь, и добавление 1 указывает, где соединяется нисходящая ветвь.
PriceTree.Probs
содержит массивы вероятностей. Каждый элемент массива ячеек содержит вероятности перехода вверх, посередине и вниз для каждого узла уровня.
Облигация с ванильным купоном представляет собой залог, представляющий собой обязательство погасить заемную сумму в установленный срок и производить периодические выплаты процентов до этого времени.
Эмитент облигации производит периодические выплаты процентов до погашения облигации. При погашении эмитент выплачивает держателю облигации основную сумму задолженности ( номинальное значение) и последний процентный платеж.
Повышающая и понижающая облигация является долговым обеспечением с заранее определенной купонной структурой с течением времени.
С помощью этих инструментов купоны увеличиваются (повышаются) или уменьшаются (снижаются) в определенные моменты времени в течение срока действия облигации.
Амортизированная облигация рассматривается как актив, при этом сумма дисконта амортизируется в процентные расходы в течение срока действия облигации.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.