oasbybk

Определите скорректированный по опции спред с помощью модели Блэка-Карасинского

Описание

пример

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

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

пример

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

Примеры

свернуть все

В этом примере показано, как вычислить OAS и OAD с помощью модели Блэка-Карасинского (BK) с использованием следующих данных.

ValuationDate = 'Aug-2-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 VolSpec and TimeSpec
Sigma = 0.10;
Alpha = 0.01;
VS = bkvolspec(ValuationDate, EndDates, Sigma*ones(size(EndDates)),...
EndDates, Alpha*ones(size(EndDates)));
TS = bktimespec(ValuationDate, EndDates, Compounding);

% build the BK tree
BKTree = bktree(VS, RateSpec, TS);

% instrument information
CouponRate = 0.045;
Settle = ValuationDate;
Maturity = '02-Aug-2014';
OptSpec = 'put';
Strike = 100;
ExerciseDates ='02-Aug-2013';
Period = 1;
AmericanOpt = 1;
Price = 101;

% compute OAS and OAD
[OAS, OAD] = oasbybk(BKTree, Price, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period, 'AmericanOpt', AmericanOpt)
OAS = 9.9999e+04
OAD = 0

В этом примере показано, как вычислить OAS для амортизирующей вызываемой связи с помощью модели решетки 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'};

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

Price = 99;
BondType = 'amortizing';
OAS = oasbybk(BKT, Price, CouponRate, Settle, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period, 'Face', Face,'BondType', BondType)
OAS = 0.6590

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

свернуть все

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

Опции даты упражнений, заданные как NINST-by- 1, NINST-by- 2, или NINST-by- NSTRIKES использование серийных номеров дат или векторов символов дат в зависимости от типа опции:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если вы не задаете StartDate, дата начала вступления в силу является Settle дата.

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

Подробнее о

свернуть все

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

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

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

Ступенчатая купонная облигация с функциями Callable и Puttable

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

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

Облигация тонущего фонда с опцией Call Embedded

Облигация тонущего фонда - купонная облигация с обеспечением тонущего фонда.

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

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

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

Амортизация callable или puttable облигаций работает в соответствии с запланированным Face.

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

Ссылки

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

[2] Windas, T. Введение в оптимизированный для опций спред-анализ. 3-е издание. Bloomberg Press, 2007.

Введенный в R2011a