Ценовая облигация от дерева процентных ставок 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.