exponenta event banner

swaptionbybdt

Ценовой свопцион из дерева процентных ставок Black-Derman-Toy

Описание

пример

[Price,PriceTree] = swaptionbybdt(BDTTree,OptSpec,Strike,ExerciseDates,Spread,Settle,Maturity) свопция цен с использованием дерева Black-Derman-Toy.

пример

[Price,PriceTree] = swaptionbybdt(___,Name,Value) добавляет необязательные аргументы пары имя-значение.

Примеры

свернуть все

В этом примере показано, как оценить 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.

Типы данных: struct

Определение опции как 'call' или 'put', указано как NINSTоколо-1 клеточный массив символьных векторов. Дополнительные сведения см. в разделе Дополнительные сведения.

Типы данных: char | cell

Значения ставки страйк-свопа, указанные как NINSTоколо-1 вектор.

Типы данных: double

Сроки выполнения свопциона, указанные как NINSTоколо-1 вектор или NINSTоколо-2 использование серийных номеров дат или векторов символов дат в зависимости от типа опции.

  • Для европейского варианта: ExerciseDates являются NINSTоколо-1 вектор дат упражнений. Каждая строка является расписанием для одного варианта. При использовании европейского варианта существует только один ExerciseDate на дату истечения срока действия опциона.

  • Для американского варианта, ExerciseDates являются NINSTоколо-2 вектор границ даты упражнения. Для каждого инструмента опцион может быть реализован на любую дату купона между или включая пару дат в этой строке. Если только один не -NaN дата указана, или если ExerciseDates является NINSTоколо-1, опцион может быть реализован между ValuationDate дерева и одного перечисленного ExerciseDate.

Типы данных: double | char | cell

Количество базисных пунктов над эталонной ставкой, указанное как NINSTоколо-1 вектор.

Типы данных: double

Дата расчета (представляющая дату расчета для каждого свопа), указанная как NINSTоколо-1 вектор серийных номеров дат или векторы символов дат. Settle для каждого свопциона устанавливается дата ValuationDate дерева BDT. Аргумент подкачки Settle игнорируется. Андерлаинг свопа начинается со срока погашения свопциона.

Типы данных: double | char

Дата погашения для каждого свопа, указанная как NINSTоколо-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' и NINSTоколо-1 положительные целочисленные флаги со значениями:

  • 0 - Европейский

  • 1 - американский

Типы данных: double

Частота сброса в год для базового свопа, указанного как пара, разделенная запятыми, состоящая из 'SwapReset' и NINSTоколо-1 вектор или NINSTоколо-2 матрица, представляющая частоту сброса в год для каждого лег. если SwapReset является NINSTоколо-2первый столбец представляет принимающую ветвь, в то время как второй столбец представляет платящую ветвь.

Типы данных: double

База подсчета дней, представляющая основу, используемую при ежегодной оценке входного дерева форвардных ставок для каждого инструмента, определяемого как пара, разделенная запятыми, состоящая из 'Basis' и NINSTоколо-1 вектор или NINSTоколо-2 матрица, представляющая основу для каждого лег. если Basis является NINSTоколо-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' и NINSTоколо-1 вектор.

Типы данных: double

Структура опционов ценообразования деривативов, указанная как пара, разделенная запятыми, состоящая из 'Options' и структура, полученная при использовании derivset.

Типы данных: struct

Выходные аргументы

свернуть все

Ожидаемые цены свопционов в момент времени 0, возвращенные как NINSTоколо-1 вектор.

Древовидная структура цен инструментов, возвращаемая как структура MATLAB ® деревьев, содержащих векторы цен инструментов свопциона и вектор времени наблюдения для каждого узла. ВPriceTree:

  • PriceTree.PTree содержит чистые цены.

  • PriceTree.tObs содержит время наблюдения.

Подробнее

свернуть все

Свопцион вызовов

Свопцион колл или свопцион плательщика позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона платит фиксированную ставку и получает плавающую ставку.

Свопцион пут

Свопцион пут или свопцион получателя позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона получает фиксированную ставку и оплачивает плавающую ставку.

Представлен до R2006a