Ценовой свопцион из дерева процентных ставок Black-Derman-Toy
В этом примере показано, как оценить 5-летний свопцион вызова с помощью дерева процентных ставок BDT. Предположим, что процентная ставка и волатильность фиксируются на уровне 6% и 20% ежегодно между датой оценки дерева до его погашения. Создайте дерево со следующими данными.
Rates = 0.06 * ones (10,1); StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009';'jan-1-2010';'jan-1-2011';... 'jan-1-2012';'jan-1-2013';'jan-1-2014';'jan-1-2015';'jan-1-2016']; EndDates =['jan-1-2008';'jan-1-2009';'jan-1-2010';'jan-1-2011';'jan-1-2012';... 'jan-1-2013';'jan-1-2014';'jan-1-2015';'jan-1-2016';'jan-1-2017']; ValuationDate = 'jan-1-2007'; Compounding = 1; % define the RateSpec RateSpec = intenvset('Rates', Rates, 'StartDates', StartDates, 'EndDates', EndDates, ... 'Compounding', Compounding); % use VolSpec to compute interest-rate volatility Volatility = 0.20 * ones (10,1); VolSpec = bdtvolspec(ValuationDate,... EndDates, Volatility); % use TimeSpec to specify the structure of the time layout for a BDT tree TimeSpec = bdttimespec(ValuationDate, EndDates, Compounding); % build the BDT tree BDTTree = bdttree(VolSpec, RateSpec, TimeSpec); % use the following swaption arguments ExerciseDates = 'jan-1-2012'; SwapSettlement = ExerciseDates; SwapMaturity = 'jan-1-2015'; Spread = 0; SwapReset = 1; Principal = 100; OptSpec = 'call'; Strike=.062; Basis=1; % price the swaption [Price, PriceTree] = swaptionbybdt(BDTTree, OptSpec, Strike, ExerciseDates, ... Spread, SwapSettlement, SwapMaturity, 'SwapReset', SwapReset, ... 'Basis', Basis, 'Principal', Principal)
Price = 2.0592
PriceTree = struct with fields:
FinObj: 'BDTPriceTree'
tObs: [0 1 2 3 4 5 6 7 8 9 10]
PTree: {1x11 cell}
В этом примере показано, как оценить 5-летний свопцион вызова с приемом и оплатой ног с помощью дерева процентных ставок BDT. Предположим, что процентная ставка и волатильность фиксируются на уровне 6% и 20% ежегодно между датой оценки дерева до его погашения. Создайте дерево со следующими данными.
Rates = 0.06 * ones (10,1); StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009';'jan-1-2010';'jan-1-2011';... 'jan-1-2012';'jan-1-2013';'jan-1-2014';'jan-1-2015';'jan-1-2016']; EndDates =['jan-1-2008';'jan-1-2009';'jan-1-2010';'jan-1-2011';'jan-1-2012';... 'jan-1-2013';'jan-1-2014';'jan-1-2015';'jan-1-2016';'jan-1-2017']; ValuationDate = 'jan-1-2007'; Compounding = 1;
Определите RateSpec.
RateSpec = intenvset('Rates', Rates, 'StartDates', StartDates, 'EndDates', EndDates, ... 'Compounding', Compounding)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [10x1 double]
Rates: [10x1 double]
EndTimes: [10x1 double]
StartTimes: [10x1 double]
EndDates: [10x1 double]
StartDates: [10x1 double]
ValuationDate: 733043
Basis: 0
EndMonthRule: 1
Использование VolSpec для вычисления волатильности процентных ставок.
Volatility = 0.20 * ones (10,1); VolSpec = bdtvolspec(ValuationDate,EndDates, Volatility);
Использование TimeSpec для определения структуры временного размещения для дерева BDT.
TimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);
Создайте дерево BDT.
BDTTree = bdttree(VolSpec, RateSpec, TimeSpec)
BDTTree = struct with fields:
FinObj: 'BDTFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3 4 5 6 7 8 9]
dObs: [1x10 double]
TFwd: {1x10 cell}
CFlowT: {1x10 cell}
FwdTree: {1x10 cell}
Задайте аргументы свопцирования.
ExerciseDates = 'jan-1-2012'; SwapSettlement = ExerciseDates; SwapMaturity = 'jan-1-2015'; Spread = 0; SwapReset = [1 1]; % 1st column represents receiving leg, 2nd column represents paying leg Principal = 100; OptSpec = 'call'; Strike=.062; Basis= [2 4]; % 1st column represents receiving leg, 2nd column represents paying leg
Оцените свопцион.
[Price, PriceTree] = swaptionbybdt(BDTTree, OptSpec, Strike, ExerciseDates, ... Spread, SwapSettlement, SwapMaturity, 'SwapReset', SwapReset, ... 'Basis', Basis, 'Principal', Principal)
Price = 2.0592
PriceTree = struct with fields:
FinObj: 'BDTPriceTree'
tObs: [0 1 2 3 4 5 6 7 8 9 10]
PTree: {1x11 cell}
BDTTree - Древовидная структура процентной ставкиДревовидная структура процентной ставки, заданная при помощи bdttree.
Типы данных: struct
OptSpec - Определение опции 'call' или 'put' | массив ячеек вектора символов со значениями 'call' или 'put'Определение опции как 'call' или 'put', заданный как NINST-by- 1 массив ячеек из векторов символов. Дополнительные сведения см. в разделе Дополнительные сведения.
Типы данных: char | cell
Strike - Значения скорости страйка-свопаЗначения скорости ударного свопа, заданные как NINST-by- 1 вектор.
Типы данных: double
ExerciseDates - Даты упражнений для свопционаДаты упражнений для свопциона, заданные как NINST-by- 1 вектор или NINST-by- 2 использование серийных номеров дат или векторов символов дат в зависимости от типа опции.
Для европейской опции, ExerciseDates являются NINST-by- 1 вектор дат упражнений. Каждая строка является расписанием для одной опции. При использовании европейской опции существует только одна ExerciseDate на дату истечения срока действия опции.
Для американской опции, ExerciseDates являются NINST-by- 2 вектор контуров дат упражнения. Для каждого инструмента опция может быть реализована на любую дату купона между или включая пару дат в этой строке. Если только один не - NaN указана дата, или если ExerciseDates является NINST-by- 1, опция может быть реализована между ValuationDate дерева и единственного перечисленного ExerciseDate.
Типы данных: double | char | cell
Spread - Количество базисных точек по контрольной ставкеКоличество базисных точек над скоростью ссылки, заданное как NINST-by- 1 вектор.
Типы данных: double
Settle - Дата расчетаДата расчета (представляющая дату расчета для каждого свопа), заданная как NINST-by- 1 вектор серийных номеров дат или векторы символов дат. The Settle дата для каждого свопциона устанавливается в ValuationDate дерева BDT. Аргумент swap Settle игнорируется. Базовый своп начинается со зрелости свопциона.
Типы данных: double | char
Maturity - Дата погашения свопаДата погашения для каждого свопа, заданная как NINST-by- 1 вектор дат с использованием серийных номеров дат или векторов символов дат.
Типы данных: double | char | cell
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
[Price,PriceTree] = swaptionbybdt(BDTTree,OptSpec, ExerciseDates,Spread,Settle,Maturity,'SwapReset',4,'Basis',5,'Principal',10000)'AmericanOpt' - Тип опции0 (Европейский) (по умолчанию) | целое число со значениями 0 или 1(Необязательно) Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'AmericanOpt' и NINST-by- 1 положительные целочисленные флаги со значениями:
0 - Европейский
1 - Американский
Типы данных: double
'SwapReset' - Сброс частоты в год для базового свопа1 (по умолчанию) | числоЧастота сброса в год для базового свопа, заданная как разделенная разделенными запятой парами, состоящая из 'SwapReset' и a NINST-by- 1 вектор или NINST-by- 2 матрица, представляющая частоту сброса в год для каждой ноги. Если SwapReset является NINST-by- 2первый столбец представляет приемную ветвь, а второй столбец представляет платежную ветвь.
Типы данных: double
'Basis' - Основа прибора для подсчета дней0 (фактический/фактический) (по умолчанию) | целое число от 0 на 13Базис отсчета дней, представляющий базис, используемый при аннуализации входа дерева скоростей для каждого инструмента, заданный как разделенная запятой пара, состоящий из 'Basis' и a NINST-by- 1 вектор или NINST-by- 2 матрица, представляющая базис для каждой ноги. Если Basis является NINST-by- 2первый столбец представляет приемную ветвь, а второй столбец представляет платежную ветвь.
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
'Principal' - Условная основная сумма100 (по умолчанию) | числоУсловная основная сумма, заданная как разделенная разделенными запятой парами, состоящая из 'Principal' и a NINST-by- 1 вектор.
Типы данных: double
'Options' - Структура деривативных опционов ценообразованияСтруктура опций ценообразования производных, заданная как разделенная разделенными запятой парами, состоящая из 'Options' и структуру, полученную при использовании derivset.
Типы данных: struct
Price - Ожидаемые цены свопционов на момент 0Ожидаемые цены свопционов в момент 0, возвращенные как NINST-by- 1 вектор.
PriceTree - Древовидная структура цен на приборыДревовидная структура цен на приборы, возвращенная как MATLAB® структура деревьев, содержащих векторы цен на сваптирующие приборы и вектор времени наблюдения для каждого узла. Внутри PriceTree:
PriceTree.PTree содержит чистые цены.
PriceTree.tObs содержит время наблюдения.
Свопцион call swaption или плательщика позволяет покупателю опции заключить процентный своп, при котором покупатель опции платит фиксированную ставку и получает плавающую ставку.
Свопцион put swaption или приемник позволяет покупателю опции заключить процентный своп, при котором покупатель опции получает фиксированную ставку и платит плавающую ставку.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.