Ценовая облигация от дерева процентных ставок Black-Derman-Toy
[ добавляет дополнительные аргументы пары "имя-значение".Price,PriceTree]
= bondbybdt(___,Name,Value)
Цена 10% облигации с помощью дерева процентных ставок BDT.
Загрузка deriv.mat, который обеспечивает BDTTree. The BDTTree структура содержит информацию о времени и процентной ставке, необходимую для ценообразования облигации.
load deriv.mat;Определите связь с помощью необходимых аргументов. Другие аргументы используют значения по умолчанию.
CouponRate = 0.10; Settle = '01-Jan-2000'; Maturity = '01-Jan-2003'; Period = 1;
Использование bondbybdt для вычисления цены облигации.
Price = bondbybdt(BDTTree, CouponRate, Settle, Maturity, Period)
Price = 95.5030
Цена одиночных ступенчатых купонных облигаций с использованием рыночных данных.
Определите структуру процентной ставки.
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;
Создайте дерево BDT и примите волатильность 10% с помощью следующих рыночных данных:
Sigma = 0.1; BDTTimeSpec = bdttimespec(ValuationDate, EndDates); BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))'); BDTT = bdttree(BDTVolSpec, RS, BDTTimeSpec)
BDTT = struct with fields:
FinObj: 'BDTFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734139 734504 734869 735235]
TFwd: {[4x1 double] [3x1 double] [2x1 double] [3]}
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
FwdTree: {[1.0350] [1.0444 1.0543] [1.0469 1.0573 1.0700] [1x4 double]}
Рассчитать цену ступенчатых купонных облигаций.
PBDT= bondbybdt(BDTT, CouponRate, Settle,Maturity , Period)
PBDT = 4×1
100.7246
100.0945
101.5900
102.0820
Цена двух облигаций с графиками амортизации с помощью Face входной параметр для определения расписания.
Определите структуру процентной ставки.
Rates = 0.035; ValuationDate = '1-Nov-2011'; StartDates = ValuationDate; EndDates = '1-Nov-2017'; Compounding = 1;
Создайте RateSpec.
RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding);
Создайте инструмент облигации. Облигации имеют купонную ставку 4% и 3,85%, сроком на один год и со сроком погашения по 1-Nov-2017.
CouponRate = [0.04; 0.0385]; Settle ='1-Nov-2011'; Maturity = '1-Nov-2017'; Period = 1;
Определите график амортизации.
Face = {{'1-Nov-2015' 100;'1-Nov-2016' 85;'1-Nov-2017' 70};
{'1-Nov-2015' 100;'1-Nov-2016' 90;'1-Nov-2017' 80}};Создайте дерево BDT и примите волатильность равной 10%.
MatDates = {'1-Nov-2012'; '1-Nov-2013';'1-Nov-2014';'1-Nov-2015';'1-Nov-2016';'1-Nov-2017'};
BDTTimeSpec = bdttimespec(ValuationDate, MatDates);
Volatility = 0.1;
BDTVolSpec = bdtvolspec(ValuationDate, MatDates, Volatility*ones(1,length(MatDates))');
BDTT = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec);Вычислите цену амортизирующих облигаций.
Price = bondbybdt(BDTT, CouponRate, Settle, Maturity, 'Period',Period,... 'Face', Face)
Price = 2×1
102.4791
101.7786
BDTTree - Структура процентной ставкиДревовидная структура процентной ставки, созданная bdttree
Типы данных: struct
CouponRate - Ставка купона по облигациям Ставка купона на облигацию, заданная как NINST-by- 1 десятичный годовой темп или NINST-by- 1 массив ячеек, где каждый элемент является NumDates-by- 2 массив ячеек. Первый столбец NumDates-by- 2 массив ячеек является датами, и второй столбец связан скоростями. Дата указывает на последний день действия ставки купона.
Типы данных: double | cell
Settle - Дата расчетаДата расчета, заданная в виде скаляра или NINST-by- 1 вектор серийных номеров дат или векторов символов дат.
The Settle дата для каждой облигации устанавливается в ValuationDate дерева BDT. Аргумент в пользу Settle игнорируется.
Типы данных: char | double
Maturity - Дата погашенияДата зрелости, заданная как NINST-by- 1 вектор серийных номеров дат или векторов символов дат, представляющих дату погашения для каждой облигации.
Типы данных: char | double
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
[Price,PriceTree] = bondbybdt(BDTTree,CouponRate,Settle,Maturity,'Period',4,'Face',10000)'Period' - Купоны в год2 в год (по умолчанию) | векторКупоны в год, заданные как разделенная разделенными запятой парами, состоящая из 'Period' и 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 содержит время наблюдения.
Облигация с ванильным купоном представляет собой залог, представляющий собой обязательство погасить заемную сумму в установленный срок и производить периодические выплаты процентов до этого времени.
Эмитент облигации производит периодические выплаты процентов до погашения облигации. При погашении эмитент выплачивает держателю облигации основную сумму задолженности ( номинальное значение) и последний процентный платеж.
Повышающая и понижающая облигация является долговым обеспечением с заранее определенной купонной структурой с течением времени.
С помощью этих инструментов купоны увеличиваются (повышаются) или уменьшаются (снижаются) в определенные моменты времени в течение срока действия облигации.
Амортизированная облигация рассматривается как актив, при этом сумма дисконта амортизируется в процентные расходы в течение срока действия облигации.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.