optembndbyhjm

Ценовые связи со встроенными опциями деревом процентной ставки Хита-Джарроу-Мортона

Синтаксис

[Price,PriceTree] = optembndbyhjm(HJMTree,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates)
[Price,PriceTree] = optembndbyhjm(___,Name,Value)

Описание

пример

[Price,PriceTree] = optembndbyhjm(HJMTree,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates) вычисляет цену за связи со встроенными опциями от дерева процентной ставки Хита-Джарроу-Мортона.

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

пример

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

Примеры

свернуть все

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

Rates = [0.05;0.06;0.07];
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', Rates, '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.

VolSpec = hjmvolspec('Constant', 0.01)
VolSpec = struct with fields:
          FinObj: 'HJMVolSpec'
    FactorModels: {'Constant'}
      FactorArgs: {{1x1 cell}}
      SigmaShift: 0
      NumFactors: 1
       NumBranch: 2
         PBranch: [0.5000 0.5000]
     Fact2Branch: [-1 1]

Создайте TimeSpec.

TimeSpec = hjmtimespec(ValuationDate, EndDates, Compounding)
TimeSpec = struct with fields:
           FinObj: 'HJMTimeSpec'
    ValuationDate: 733043
         Maturity: [3x1 double]
      Compounding: 1
            Basis: 0
     EndMonthRule: 1

Создайте HJMTree.

HJMTree = hjmtree(VolSpec, RateSpec, TimeSpec)
HJMTree = struct with fields:
      FinObj: 'HJMFwdTree'
     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: {[3x1 double]  [2x1x2 double]  [1x2x2 double]}

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

BondSettlement = 'jan-1-2007';
BondMaturity   = 'jan-1-2010'; 
CouponRate = 0.06;
Period = 1;
OptSpec = 'call'; 
Strike = [98];  
ExerciseDates = '01-Jan-2010'; 
AmericanOpt = 1;

[PriceCallBond,PT] = optembndbyhjm(HJMTree, CouponRate, BondSettlement, BondMaturity,...
OptSpec, Strike, ExerciseDates, 'Period', 1,'AmericanOp',1)
PriceCallBond = 95.9492
PT = struct with fields:
    FinObj: 'HJMPriceTree'
      tObs: [0 1 2 3]
     PBush: {[95.9492]  [1x1x2 double]  [1x2x2 double]  [98 98 98 98]}

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

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
Volatility = [.2; .19; .18; .17];
CurveTerm = [ 1;  2;   3;   4];
HJMTimeSpec = hjmtimespec(ValuationDate, EndDates);
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec, RS, HJMTimeSpec);

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

  100.0484
   99.8009

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

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

Создайте RateSpec.

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

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

Sigma = 0.1;
HJMTimeSpec = hjmtimespec(ValuationDate, EndDates, Compounding);
HJMVolSpec = hjmvolspec('Constant', Sigma);
HJMT = hjmtree(HJMVolSpec, RateSpec, HJMTimeSpec)
HJMT = struct with fields:
      FinObj: 'HJMFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 1 2 3]
        dObs: [734504 734869 735235 735600]
        TFwd: {[4x1 double]  [3x1 double]  [2x1 double]  [3]}
      CFlowT: {[4x1 double]  [3x1 double]  [2x1 double]  [4]}
     FwdTree: {[4x1 double]  [3x1x2 double]  [2x2x2 double]  [1x4x2 double]}

Задайте инструмент амортизационного фонда. Связь имеет купонную ставку 4,5%, период одного года и назревает в 1 января 2013. Столкнитесь с уменьшениями 1/3 после первого года.

CouponRate = 0.045;
Settle = 'Jan-1-2011';
Maturity =  'Jan-1-2013';
Period = 1;
Face = { {'Jan-1-2012'  100; ...
          'Jan-1-2013'   66.6666}};

Задайте условие опции.

OptSpec = 'call';
Strike = 99;
ExerciseDates = 'Jan-1-2012';

Цена связи неамортизационного фонда.

PNSF = bondbyhjm(HJMT, CouponRate, Settle, Maturity, Period)
PNSF = 100.5663

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

PriceSF = optembndbyhjm(HJMT, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period, 'Face', Face)
PriceSF = 98.8736

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

свернуть все

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основание дневного количества, заданное как пара, разделенная запятой, состоящая из 'Basis' и NINST-by-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-by-1 вектор. Это правило применяется только, когда Maturity является датой конца месяца в течение месяца, имея 30 или меньше дней.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поверхность или номинальная стоимость, заданная как пара, разделенная запятой, состоящая из 'Face' и NINST-by-1 вектор.

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

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

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

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

свернуть все

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

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

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

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

Больше о

свернуть все

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

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

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

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

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

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

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

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

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

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

Введенный в R2008a