exponenta event banner

oasbyhw

Определение скорректированного разброса опций с использованием модели Корпус-Белый

Описание

пример

[OAS,OAD,OAC] = oasbyhw(HWTree,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates) вычисляет опционально скорректированный разброс с использованием модели Корпус-Белый.

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

пример

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

Примеры

свернуть все

В этом примере показано, как вычислять OAS и OAD с использованием модели HW (Hull-White) с использованием следующих данных.

ValuationDate = 'October-25-2010';
Rates = [0.0355; 0.0382; 0.0427; 0.0489];
StartDates = ValuationDate;
EndDates = datemnth(ValuationDate, 12:12:48)';
Compounding = 1;

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

% specify VolsSpec and TimeSpec
Sigma = 0.05;
Alpha = 0.01;
VS = hwvolspec(ValuationDate, EndDates, Sigma*ones(size(EndDates)),...
EndDates, Alpha*ones(size(EndDates)));
TS = hwtimespec(ValuationDate, EndDates, Compounding);

% build the HW tree
HWTree = hwtree(VS, RateSpec, TS);

% instrument information
CouponRate = 0.045;
Settle = ValuationDate;
Maturity = '25-October-2014';
OptSpec = 'call';
Strike = 100;
ExerciseDates = {'25-October-2010','25-October-2013'};
Period = 1;
AmericanOpt = 0;
Price = 97;

% compute the OAS
[OAS, OAD] = oasbyhw(HWTree, Price, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period, 'AmericanOpt', AmericanOpt)
OAS = -12.8538
OAD = 3.2910

В этом примере показано, как вычислить цену вызываемой облигации с помощью дерева Халл-Уайт.

Используйте следующие данные облигации:

Settle = datenum('20-Aug-2014');

% Bond Properties
Maturity = datenum('01-Apr-2034');
CouponRate = .0625;
CallDates = datemnth('01-Oct-2014',6*(0:19));
CallStrikes = [102.85 102.7 102.55 102.4 102.25 102.1 101.95 101.8 ...
    101.65 101.5 101.35 101.2 101.05 100.9 100.75 100.6 100.45 100.3 ...
    100.15 100];

Используйте следующие данные нулевой кривой:

CurveDates = datemnth(Settle,12*[1 2 3 5 7 10 20 30]');
ZeroRates = [.11 0.30 0.64 1.44 2.07 2.61 3.29 3.55]'/100;

Определите RateSpec и построить дерево аппаратных средств.

RateSpec = intenvset('StartDate',Settle,'EndDates',CurveDates,'Rates',ZeroRates);

% HW Model Properties
alpha = .1;
sigma = .01;

TimeSpec = hwtimespec(Settle,cfdates(Settle,Maturity,12),2);
VolSpec = hwvolspec(Settle,Maturity,sigma,Maturity,alpha);

HWTree = hwtree(VolSpec,RateSpec,TimeSpec,'method','HW2000')
HWTree = struct with fields:
      FinObj: 'HWFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [1x236 double]
        dObs: [1x236 double]
      CFlowT: {1x236 cell}
       Probs: {1x235 cell}
     Connect: {1x235 cell}
     FwdTree: {1x236 cell}

Вычислите OAS для облигации.

Price = 103.25;
OAS = oasbyhw(HWTree, Price, CouponRate, Settle, Maturity, 'call', CallStrikes, CallDates)
OAS = 234.8209

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

В этом примере показано, как вычислить OAS для амортизирующей вызываемой связи с использованием модели решетки HW.

Создать 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);

Создайте дерево аппаратных средств.

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

HWVolSpec = hwvolspec(RS.ValuationDate, VolDates, VolCurve,... 
AlphaDates, AlphaCurve);
HWTimeSpec = hwtimespec(RS.ValuationDate, EndDates, Compounding);
HWT = hwtree(HWVolSpec, RS, HWTimeSpec);

Определите вызываемую связь.

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'};

Вычислите OAS для вызываемой амортизирующей связи с помощью дерева аппаратных средств.

Price = 55;
BondType = 'amortizing';
OAS = oasbyhw(HWT,Price, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period, 'Face', Face,'BondType', BondType)
OAS = 2.4023e+03

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

свернуть все

Древовидная структура процентных ставок, определенная с помощью hwtree.

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

Рыночные цены облигаций со встроенными опционами, указанные как NINSTоколо-1 вектор.

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

Ставка купонного вознаграждения по облигациям, указанная как NINSTоколо-1 десятичная годовая ставка.

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

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

Примечание

Settle для каждой связи со встроенной опцией устанавливается дата ValuationDate дерева аппаратных средств. Аргумент облигации Settle игнорируется.

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

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

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

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

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

Цена страйка опциона, указанная как 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 вектор границ даты упражнения. Опцион может быть реализован на любую дату между или включая пару дат в этой строке. Если только один не -NaN дата указана, или если ExerciseDates является NINSTоколо-1 вектор, опцион осуществляется между нижележащей облигацией Settle дата и единственная указанная дата упражнения.

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

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

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

Пример: OAS = oasbybk(BDTTree,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates,'Period',4)

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

  • 0 - Европейский/Бермудские острова

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

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

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

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

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

  • 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

Флаг правила конца месяца, заданный как пара, разделенная запятыми, состоящая из '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 массив ячеек, где первый столбец является датами, а второй столбец - связанным номиналом. Дата указывает последний день, когда номинал является действительным.

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

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

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

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

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

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

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

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

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

свернуть все

Скорректированный опцион, возвращенный как NINSTоколо-1 вектор.

Скорректированная продолжительность опции, возвращенная как NINSTоколо-1 вектор.

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

Подробнее

свернуть все

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

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

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

Ступенчатая купонная связь с функциями Callable и Puttable

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

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

Фондовая облигация с встроенным опционом Call

Фондовая облигация - это купонная облигация с фондовым обеспечением.

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

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

Амортизирующая вызываемая или путабельная облигация

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

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

Ссылки

[1] Фабоцци, F. Справочник по ценным бумагам с фиксированным доходом. 7-е издание. Макгроу-Хилл, 2005.

[2] Виндас, Т. Введение в опционный анализ разброса. 3-е издание. Bloomberg Press, 2007.

Представлен в R2011a