optembndbybdt

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

Описание

пример

[Price,PriceTree] = optembndbybdt(BDTTree,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates) вычисляет цену за связи со встроенными опциями от дерева процентной ставки Black-Derman-Toy и возвращает вероятности осуществления в PriceTree.

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

пример

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

Примеры

свернуть все

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

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.

Volatility = 0.10 * ones (3,1);
VolSpec = bdtvolspec(ValuationDate, EndDates, Volatility)
VolSpec = struct with fields:
             FinObj: 'BDTVolSpec'
      ValuationDate: 733043
           VolDates: [3x1 double]
           VolCurve: [3x1 double]
    VolInterpMethod: 'linear'

Создайте TimeSpec.

TimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);

Создайте BDTTree.

BDTTree = bdttree(VolSpec, RateSpec, TimeSpec)
BDTTree = struct with fields:
      FinObj: 'BDTFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 1 2]
        dObs: [733043 733408 733774]
        TFwd: {[3x1 double]  [2x1 double]  [2]}
      CFlowT: {[3x1 double]  [2x1 double]  [3]}
     FwdTree: {[1.0350]  [1.0406 1.0495]  [1.0447 1.0546 1.0667]}

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

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

PriceCallBond = optembndbybdt(BDTTree, CouponRate, BondSettlement, BondMaturity,...
OptSpec, Strike, ExerciseDates, 'Period', 1,'AmericanOp', 1)
PriceCallBond = 101.4750

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

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);

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

Volatility = 0.10 * ones (3,1);
VolSpec = bdtvolspec(ValuationDate, EndDates, Volatility)
VolSpec = struct with fields:
             FinObj: 'BDTVolSpec'
      ValuationDate: 733043
           VolDates: [3x1 double]
           VolCurve: [3x1 double]
    VolInterpMethod: 'linear'

TimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);
BDTTree = bdttree(VolSpec, RateSpec, TimeSpec)
BDTTree = struct with fields:
      FinObj: 'BDTFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 1 2]
        dObs: [733043 733408 733774]
        TFwd: {[3x1 double]  [2x1 double]  [2]}
      CFlowT: {[3x1 double]  [2x1 double]  [3]}
     FwdTree: {[1.0250]  [1.0315 1.0385]  [1.0614 1.0750 1.0917]}

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

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

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

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

    86
    90

PriceTree = struct with fields:
                FinObj: 'BDTPriceTree'
                  tObs: [0 1 2 3]
                 PTree: {1x4 cell}
              ProbTree: {1x4 cell}
                ExTree: {1x4 cell}
            ExProbTree: {1x4 cell}
    ExProbsByTreeLevel: [2x4 double]

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

PriceTree.ExTree{4} 
ans = 2×3

     0     0     0
     1     1     1

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

PriceTree.ExTree{3} 
ans = 2×3

     0     0     0
     0     0     0

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

PriceTree.ExTree{2} 
ans = 2×2

     1     1
     1     0

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

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

PriceTree.ProbTree{2}
ans = 1×2

    0.5000    0.5000

PriceTree.ProbTree{3}
ans = 1×3

    0.2500    0.5000    0.2500

PriceTree.ProbTree{4}
ans = 1×3

    0.2500    0.5000    0.2500

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

PriceTree.ExProbTree{4}
ans = 2×3

         0         0         0
    0.2500    0.5000    0.2500

PriceTree.ExProbTree{3}
ans = 2×3

     0     0     0
     0     0     0

PriceTree.ExProbTree{2}
ans = 2×2

    0.5000    0.5000
    0.5000         0

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

PriceTree.ExProbsByTreeLevel
ans = 2×4

    1.0000    1.0000         0         0
    1.0000    0.5000         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
% Assume the volatility to be 10%
Sigma = 0.1;  
BDTTimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);
BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))');
BDTT = bdttree(BDTVolSpec, RS, BDTTimeSpec);

% 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.
PBDT=  optembndbybdt(BDTT, CouponRate, Settle, Maturity ,OptSpec, Strike,...
ExerciseDates, 'Period', 1)
PBDT = 2×1

  100.0945
  100.0297

Корпорация выпускает трехлетнюю облигацию с обязательством амортизационного фонда, требующим, чтобы компания снижала 1/3 номинальной стоимости после первого года и 1/3 после второго года. Компания имеет опцию, чтобы купить облигации на рынке или вызвать их на уровне 98$. Следующие данные описывают детали, необходимые для оценки связи амортизационного фонда:

Rates = [0.1;0.1;0.1;0.1];
ValuationDate = 'Jan-1-2011';
StartDates = ValuationDate;
EndDates = {'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'; 'Jan-1-2015'};
Compounding = 1;

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

% Build the BDT tree
% Assume the volatility to be 10%
Sigma = 0.1;  
BDTTimeSpec = bdttimespec(ValuationDate, EndDates);
BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))');
BDTT = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec);

% Instrument
% The bond has a coupon rate of 9%, a period of one year and matures in
% 1-Jan-2014. Face decreases 1/3 after the first year and 1/3 after the 
% second year.
CouponRate = 0.09;
Settle = 'Jan-1-2011';
Maturity =  'Jan-1-2014';
Period = 1;
Face = { ...        
            {'Jan-1-2012'  100; ...
             'Jan-1-2013'   66.6666; ...
             'Jan-1-2014'   33.3333};
        };

% Option provision
OptSpec = 'call'; 
Strike = [98 98];
ExerciseDates ={'Jan-1-2012', 'Jan-1-2013'};

% Price of non-sinking fund bond. 
PNSF = bondbybdt(BDTT, CouponRate, Settle, Maturity, Period)
PNSF = 97.5131

Цена связи с опцией, снижающей условие.

PriceSF = optembndbybdt(BDTT, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates,'Period', Period, 'Face', Face)
PriceSF = 96.8364

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

Создайте RateSpec.

Rates = [0.025;0.028;0.030;0.031];
ValuationDate = 'Jan-1-2018';
StartDates = ValuationDate;
EndDates = {'Jan-1-2019'; 'Jan-1-2020'; 'Jan-1-2021'; 'Jan-1-2022'};
Compounding = 1;
RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates',...
StartDates, 'EndDates', EndDates, 'Rates', Rates, 'Compounding', Compounding);

Создайте дерево BDT и примите энергозависимость 5%.

Sigma = 0.05;  
BDTTimeSpec = bdttimespec(ValuationDate, EndDates);
BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))');
BDTT = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec);

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

CouponRate = 0.05;
Settle = 'Jan-1-2018';
Maturity =  'Jan-1-2021';
Period = 1;
    
    Face = { 
                 {'Jan-1-2019'  100; 
                  'Jan-1-2020'   70; ...
                   'Jan-1-2021'   50};
                 };
 
OptSpec = 'call'; 
Strike = [97 95 93];
ExerciseDates ={'Jan-1-2019' 'Jan-1-2020' 'Jan-1-2021'};

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

BondType = 'amortizing';
Pcallbonds = optembndbybdt(BDTT, CouponRate, Settle, Maturity, OptSpec, Strike, ExerciseDates, 'Period', Period,'Face',Face,'BondType', BondType)
Pcallbonds = 99.5122

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

свернуть все

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

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

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

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

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

Примечание

Settle дата каждой связи назначена к ValuationDate из дерева BDT. Аргумент 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 = optembndbybdt(BDTTree,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