optembndbybk

Ценовые связи со встроенными опциями Черным-Karasinski деревом процентной ставки

Описание

пример

[Price,PriceTree] = optembndbybk(BKTree,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates) вычисляет цену за связи со встроенными опциями от Черного-Karasinski дерева процентной ставки и возвращает вероятности осуществления в PriceTree.

optembndbybk вычисляет цены связей ванили со встроенными опциями, продвинулся облигации на предъявителя со встроенными опциями, амортизировав связи со встроенными опциями, и связи амортизационного фонда с вызовом встроили опцию. Для получения дополнительной информации смотрите Больше О.

пример

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

Примеры

свернуть все

Создайте BKTree со следующими данными:

ZeroRates = [ 0.035;0.04;0.045];
Compounding = 1;
StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009'];
EndDates   = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
ValuationDate = 'jan-1-2007';

Создайте RateSpec.

RateSpec = intenvset('Rates', ZeroRates, 'StartDates', ValuationDate, 'EndDates', ...
EndDates, 'Compounding', Compounding, 'ValuationDate', ValuationDate)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [3x1 double]
            Rates: [3x1 double]
         EndTimes: [3x1 double]
       StartTimes: [3x1 double]
         EndDates: [3x1 double]
       StartDates: 733043
    ValuationDate: 733043
            Basis: 0
     EndMonthRule: 1

Создайте VolSpec.

VolDates = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
VolCurve = 0.01;
AlphaDates = 'jan-1-2010';
AlphaCurve = 0.1;
BKVolSpec = bkvolspec(ValuationDate, VolDates, VolCurve, AlphaDates, AlphaCurve)
BKVolSpec = struct with fields:
             FinObj: 'BKVolSpec'
      ValuationDate: 733043
           VolDates: [3x1 double]
           VolCurve: [3x1 double]
         AlphaCurve: 0.1000
         AlphaDates: 734139
    VolInterpMethod: 'linear'

Создайте TimeSpec.

BKTimeSpec = bktimespec(ValuationDate, EndDates, Compounding);

Создайте BKTree.

BKTree = bktree(BKVolSpec, RateSpec, BKTimeSpec)
BKTree = struct with fields:
      FinObj: 'BKFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 1 2]
        dObs: [733043 733408 733774]
      CFlowT: {[3x1 double]  [2x1 double]  [3]}
       Probs: {[3x1 double]  [3x3 double]}
     Connect: {[2]  [2 3 4]}
     FwdTree: {[1.0350]  [1.0458 1.0450 1.0442]  [1x5 double]}

Вычислить цену американской связи с правом досрочного погашения, которая платит ежегодный купон 5,25%, назревает 1 января 2010 и является вызываемым 1 января 2008 и 1 января 2010.

BondSettlement = 'jan-1-2007';
BondMaturity   = 'jan-1-2010'; 
CouponRate = 0.0525;
Period = 1;
OptSpec = 'put'; 
Strike = [100];  
ExerciseDates = {'jan-1-2008' '01-Jan-2010'}; 
AmericanOpt = 1;

PricePutBondBK = optembndbybk(BKTree, CouponRate, BondSettlement, BondMaturity,...
OptSpec, Strike, ExerciseDates,'Period', 1, 'AmericanOpt', 1)
PricePutBondBK = 102.3820

Создайте BKTree со следующими данными:

ZeroRates = [ 0.025;0.03;0.045];
Compounding = 1;
StartDates = ['jan-1-2007';'jan-1-2008';'jan-1-2009'];
EndDates   = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
ValuationDate = 'jan-1-2007';

Создайте RateSpec.

RateSpec = intenvset('Rates', ZeroRates, 'StartDates', ValuationDate, 'EndDates', ...
EndDates, 'Compounding', Compounding, 'ValuationDate', ValuationDate);

Создайте дерево BK со следующими данными.

VolDates = ['jan-1-2008';'jan-1-2009';'jan-1-2010'];
VolCurve = 0.01;
AlphaDates = 'jan-1-2010';
AlphaCurve = 0.1;
BKVolSpec = bkvolspec(ValuationDate, VolDates, VolCurve, AlphaDates, AlphaCurve);

BKTimeSpec = bktimespec(ValuationDate, EndDates, Compounding);
BKTree = bktree(BKVolSpec, RateSpec, BKTimeSpec);

Задайте вызываемые инструменты связи.

Settle = '01-Jan-2007';
Maturity = {'01-Jan-2008';'01-Jan-2010'};
CouponRate = {{'01-Jan-2008' .0315;'01-Jan-2010' .0350}};  
OptSpec='call';
Strike= [86;90];
ExerciseDates= {'01-Jan-2008';'01-Jan-2010'};

Оцените инструменты.

[Price, PriceTree]= optembndbybk(BKTree, CouponRate,  Settle, Maturity, OptSpec, Strike,...
ExerciseDates, 'Period', 1,'AmericanOp', 1)
Price = 2×1

   86.0000
   88.3060

PriceTree = struct with fields:
                FinObj: 'BKPriceTree'
                  tObs: [0 1 2 3]
                 PTree: {1x4 cell}
              ProbTree: {[1]  [0.1667 0.6667 0.1667]  [1x5 double]  [1x5 double]}
                ExTree: {1x4 cell}
            ExProbTree: {1x4 cell}
    ExProbsByTreeLevel: [2x4 double]
               Connect: {[2]  [2 3 4]}

Исследуйте выход PriceTree.ExTree. PriceTree.ExTree содержит массивы индикатора осуществления. Каждым элементом массива ячеек является массив, содержащий 1где опция осуществлена и 0где это не.

PriceTree.ExTree{4} 
ans = 2×5

     0     0     0     0     0
     1     1     1     1     1

Нет никакого осуществления для инструмента 1, и инструмент 2 осуществлен во всех узлах.

PriceTree.ExTree{3} 
ans = 2×5

     0     0     0     0     0
     0     0     0     0     0

Нет никакого осуществления для инструмента 1 или инструмента 2.

PriceTree.ExTree{2} 
ans = 2×3

     1     1     1
     0     0     0

Существует осуществление для инструмента 1 во всех узлах, и инструмент 2 не осуществлен.

Затем просмотрите вероятность достижения каждого узла от корневого узла с помощью PriceTree.ProbTree.

PriceTree.ProbTree{2}
ans = 1×3

    0.1667    0.6667    0.1667

PriceTree.ProbTree{3}
ans = 1×5

    0.0203    0.2206    0.5183    0.2206    0.0203

PriceTree.ProbTree{4}
ans = 1×5

    0.0203    0.2206    0.5183    0.2206    0.0203

Затем просмотрите вероятности осуществления с помощью PriceTree.ExProbTree. PriceTree.ExProbTree содержит вероятности осуществления. Каждым элементом в массиве ячеек является массив, содержащий 0, где нет никакого осуществления или вероятности достижения того узла, где осуществление происходит.

PriceTree.ExProbTree{4}
ans = 2×5

         0         0         0         0         0
    0.0203    0.2206    0.5183    0.2206    0.0203

PriceTree.ExProbTree{3}
ans = 2×5

     0     0     0     0     0
     0     0     0     0     0

PriceTree.ExProbTree{2}
ans = 2×3

    0.1667    0.6667    0.1667
         0         0         0

Просмотрите вероятности осуществления на каждом древовидном уровне с помощью PriceTree.ExProbsByTreeLevel. PriceTree.ExProbsByTreeLevel массив с каждой строкой, содержащей вероятность осуществления для данной опции в каждый древовидный раз наблюдения.

PriceTree.ExProbsByTreeLevel
ans = 2×4

    1.0000    1.0000         0         0
         0         0         0    1.0000

Оцените следующие одну ступенчатые вызываемые связи с помощью следующих данных: данные для структуры термина процентной ставки следующие:

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;

% Create RateSpec
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,...
'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding);

% Instrument
Settle = '01-Jan-2010';
Maturity = {'01-Jan-2013';'01-Jan-2014'};
CouponRate = {{'01-Jan-2012' .0425;'01-Jan-2014' .0750}};  
OptSpec='call';
Strike=100;
ExerciseDates='01-Jan-2012';  %Callable in two years

% Build the tree with the following data
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);

% The first row corresponds to the price of the callable bond with maturity 
% of three years. The second row corresponds to the price of the callable bond
% with maturity of four years.
PBK= optembndbybk(BKT, CouponRate,  Settle, Maturity ,OptSpec, Strike,...
ExerciseDates, 'Period', 1)
PBK = 2×1

  100.0945
  100.0945

В этом примере показано, как оценить амортизирующую вызываемую связь и ваниль, вызываемая связь с помощью BK образовывает решетку модель.

Создайте RateSpec.

Rates = [0.035; 0.042147; 0.047345; 0.052707];
ValuationDate = 'Jan-1-2012';
StartDates = ValuationDate;
EndDates = {'Jan-1-2013'; 'Jan-1-2014'; 'Jan-1-2015'; 'Jan-1-2016'};
Compounding = 1;
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,...
'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding);

Создайте дерево BK.

VolDates = ['1-Jan-2013'; '1-Jan-2014'; '1-Jan-2015'; '1-Jan-2016'];
VolCurve = 0.01;
AlphaDates = '01-01-2016';
AlphaCurve = 0.1;

BKVolSpec = bkvolspec(RS.ValuationDate, VolDates, VolCurve,... 
AlphaDates, AlphaCurve);
BKTimeSpec = bktimespec(RS.ValuationDate, VolDates, Compounding);
BKT = bktree(BKVolSpec, RS, BKTimeSpec);

Задайте вызываемую связь.

CouponRate = 0.05;
Settle = 'Jan-1-2012';
Maturity =  'Jan-1-2016';
Period = 1;
    
    Face = { 
                 {'Jan-1-2014'  100; 
                  'Jan-1-2015'   70;
                  'Jan-1-2016'   50};
                 };
 
OptSpec = 'call'; 
Strike = [97 95 93];
ExerciseDates ={'Jan-1-2014' 'Jan-1-2015' 'Jan-1-2016'};

Оцените вызываемую связь амортизации с помощью дерева BDT.

BondType = 'amortizing';
Pcallbonds = optembndbybk(BKT, CouponRate,  Settle, Maturity ,OptSpec, Strike,...
ExerciseDates, 'Period', 1,'Face',Face,'BondType', BondType)
Pcallbonds = 98.7475

Входные параметры

свернуть все

Древовидная структура процентной ставки, заданная при помощи bktree.

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

Уровень облигационного купона в виде NINST- 1 десятичный годовой показатель или NINST- 1 массив ячеек, где каждым элементом является NumDates- 2 cellArray. Первый столбец NumDates- 2 массив ячеек является датами, и второй столбец является сопоставленными уровнями. Дата указывает в последний день, что купонная ставка допустима.

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

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

Примечание

Settle дата каждой связи назначена к ValuationDate из дерева BK. Аргумент Settle связи проигнорирован.

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

Дата погашения в виде NINST- 1 вектор из последовательных чисел даты или векторов символов даты.

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

Определение опции в виде NINST- 1 массив ячеек из символьных векторов.

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

Значение цены исполнения опциона опции в виде NINST- 1 или NINST- NSTRIKES в зависимости от типа опции:

  • Европейская опция — NINST- 1 вектор из значений цены исполнения опциона.

  • Опция Бермуд — NINST количеством забастовок (NSTRIKES) матрица значений цены исполнения опциона. Каждая строка является расписанием для одной опции. Если опция имеет меньше, чем NSTRIKES осуществите возможности, конец строки дополнен NaNs.

  • Американская опция — NINST- 1 вектор из значений цены исполнения опциона для каждой опции.

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

Даты осуществления опции в виде NINST- 1, NINST- 2, или NINST- NSTRIKES использование последовательных чисел даты или векторов символов даты, в зависимости от типа опции:

  • Для европейской опции используйте NINST- 1 вектор из дат. Для европейской опции существует только один ExerciseDates на дате окончания срока действия опции.

  • Для опции Бермуд используйте NINST- NSTRIKES вектор из дат.

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

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: Price = optembndbybk(BKTree,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates,'Period',1,'AmericanOp',1)

Тип опции в виде разделенной запятой пары, состоящей из 'AmericanOpt' и NINST- 1 положительное целое число отмечает с помощью значений:

  • 0 — Европеец/Бермуды

  • 1 — Американец

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

Купоны в год в виде разделенной запятой пары, состоящей из 'Period' и NINST- 1 вектор.

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

Базис дневного количества в виде разделенной запятой пары, состоящей из 'Basis' и NINST- 1 вектор из целых чисел.

  •  0 = фактический/фактический

  •  1 = 30/360 (СИА)

  •  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 = ШИНА/252

Для получения дополнительной информации смотрите Базис.

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

Правило конца месяца отмечает в виде разделенной запятой пары, состоящей из 'EndMonthRule' и неотрицательное целое число с помощью NINST- 1 вектор. Это правило применяется только когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней.

  • 0 = Проигнорируйте правило, подразумевая, что платежный день облигационного купона всегда является тем же числовым днем месяца.

  • 1 = Установите правило о, подразумевая, что платежный день облигационного купона всегда является прошлым фактическим днем месяца.

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

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

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

Неправильная первая дата купона в виде разделенной запятой пары, состоящей из 'FirstCouponDate' и NINST- 1 вектор с помощью последовательных чисел даты или векторов символов даты.

Когда FirstCouponDate и LastCouponDate оба заданы, FirstCouponDate более приоритетен в определении структуры купонного платежа. Если вы не задаете FirstCouponDate, платежные дни потока наличности определяются из других входных параметров.

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

Неправильная последняя дата купона в виде разделенной запятой пары, состоящей из 'LastCouponDate' и NINST- 1 вектор с помощью последовательных чисел даты или векторов символов даты.

В отсутствие заданного FirstCouponDate, заданный LastCouponDate определяет структуру купона связи. Структура купона связи является усеченной в LastCouponDate, независимо от того, где это падает и сопровождается только датой потока наличности зрелости связи. Если вы не задаете LastCouponDate, платежные дни потока наличности определяются из других входных параметров.

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

Передайте срок начала работы платежей (дата, с которой поток наличности связи рассматривается) в виде разделенной запятой пары, состоящей из 'StartDate' и NINST- 1 вектор с помощью последовательных чисел даты или векторов символов даты.

Если вы не задаете StartDate, эффективной датой начала является Settle дата.

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

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

Примечание

Инструменты без Face расписание обработано или как связи ванили или продвинулось облигации на предъявителя со встроенными опциями.

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

Тип базовой связи в виде разделенной запятой пары, состоящей из 'BondType' и NINST- 1 массив ячеек из символьных векторов или массив строк, задающий, является ли базовой связь ванили, связь амортизации или вызываемая связь амортизационного фонда. Поддерживаемые типы:

  • 'vanilla'стандартная вызываемая или связь с правом досрочного погашения со скалярным Face значение и один купон или продвинулись купоны.

  • 'callablesinking' связь с расписанием Face значения и условие досрочного выкупа амортизационного фонда с синглом или ступенчатыми купонами.

  • 'amortizing' амортизирующая вызываемая или связь с правом досрочного погашения с расписанием Face значения с одним или ступенчатыми купонами.

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

Производные оценивая опции в виде разделенной запятой пары, состоящей из 'Options' и структура, которая создается с derivset.

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

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

свернуть все

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

Структура, содержащая деревья векторов из цен на инструменты, вектора времен наблюдения для каждого узла и вероятностей осуществления. Значения:

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

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

  • PriceTree.ExTree содержит массивы индикатора осуществления. Каждым элементом массива ячеек является массив, содержащий 1где опция осуществлена и 0где это не.

  • PriceTree.ProbTree содержит вероятность достижения каждого узла от корневого узла.

  • PriceTree.ExProbTree содержит вероятности осуществления. Каждым элементом в массиве ячеек является массив, содержащий 0где нет никакого осуществления или вероятности достижения того узла, где осуществление происходит.

  • PriceTree.ExProbsByTreeLevel массив с каждой строкой, содержащей вероятность осуществления для данной опции в каждый древовидный раз наблюдения.

Больше о

свернуть все

Связь ванили со встроенной опцией

Облигация на предъявителя ванили является безопасностью, представляющей обязательство возместить одолженную сумму в назначенное время и сделать периодические выплаты процентов до того времени.

Выпускающий связи делает периодические выплаты процентов, пока связь не назревает. В зрелости выпускающий выплачивает держателю связи основную сумму, бывшую должную (номинальную стоимость) и последнюю выплату процентов. Связь ванили со встроенной опцией - то, где опционный контракт имеет базовый актив связи ванили.

Ступенчатая облигация на предъявителя с вызываемыми и функциями с правом досрочного погашения

Связь повышения и понижения является долговой безопасностью с предопределенной структурой купона в зависимости от времени.

С этими инструментами увеличение купонов (подходит) или уменьшается (уходят) в конкретные моменты времени во время жизни связи. Ступенчатые облигации на предъявителя могут иметь функции опций (вызовите, и помещает).

Связь амортизационного фонда с вызовом встроенная опция

Связь амортизационного фонда является облигацией на предъявителя с условием амортизационного фонда.

Это условие обязывает выпускающего амортизировать фрагменты принципала до зрелости, влияя на цены облигаций со времени основных изменений выплаты. Это означает, что инвесторы получают купон и фрагмент принципала, платившегося в зависимости от времени. Эти типы связей уменьшают кредитный риск, поскольку он понижает вероятность инвесторов, не получающих их основную оплату в зрелости.

Связь может иметь условие колл-опциона амортизационного фонда, разрешающее выпускающему ликвидировать обязательство амортизационного фонда или путем покупки связей, которые будут искуплены с рынка или путем вызова связи через вызов амортизационного фонда, какой бы ни является более дешевым. Если процентные ставки высоки, то выпускающий выкупает количество требования связей с рынка, поскольку связи являются дешевыми, но если процентные ставки являются низкими (цены облигаций высоки), то, скорее всего, выпускающий покупает облигации по досрочной цене. В отличие от функции вызова, однако, если связь имеет условие колл-опциона амортизационного фонда, это - обязательство, не опция, для выпускающего, чтобы выкупить шаг проблемы, как утверждено. Из-за этого связь амортизационного фонда торгует по более низкой цене, чем связь неамортизационного фонда.

Амортизация вызываемой или связи с правом досрочного погашения

Амортизирующие вызываемые или связи с правом досрочного погашения работают под запланированным Face.

Амортизирующая вызываемая связь дает выпускающему право отозвать связь, но вместо того, чтобы платить Face означайте в зрелости, она возмещает часть принципала наряду с купонными платежами. Амортизирующая связь с правом досрочного погашения, возмещает часть принципала наряду с купонными платежами и дает держателю облигаций право продать связь назад выпускающему.

Введенный в R2008a