exponenta event banner

oasbycir

Определение скорректированного по опциям разброса с использованием модели Кокса-Ингерсолла-Росса

Описание

пример

[OAS,OAD,OAC] = oasbycir(CIRTree,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates) вычисляет скорректированный спред опциона из дерева процентных ставок Cox-Ingersoll-Ross (CIR) с использованием модели CIR++ с подходом Nawalka-Beliaeva (NB).

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

пример

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

Примеры

свернуть все

Создать RateSpec с использованием intenvset функция.

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

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

Создать CIR дерево.

NumPeriods = length(EndDates); 
Alpha = 0.03; 
Theta = 0.02;  
Sigma = 0.1;    
Maturity = '01-Jan-2023'; 
CIRTimeSpec = cirtimespec(ValuationDate, Maturity, NumPeriods); 
CIRVolSpec = cirvolspec(Sigma, Alpha, Theta); 

CIRT = cirtree(CIRVolSpec, RateSpec, CIRTimeSpec)
CIRT = struct with fields:
      FinObj: 'CIRFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 1.0462 2.0924 3.1386]
        dObs: [737358 737740 738122 738504]
     FwdTree: {[1.0373]  [1.0750 1.0443 1.0229]  [1x5 double]  [1x7 double]}
     Connect: {[3x1 double]  [3x3 double]  [3x5 double]}
       Probs: {[3x1 double]  [3x3 double]  [3x5 double]}

Определите прибор OAS.

CouponRate = 0.045;
Settle = ValuationDate;
Maturity = '25-October-2019';
OptSpec = 'call';
Strike = 100;
ExerciseDates = {'25-October-2018','25-October-2019'};
Period = 1;
AmericanOpt = 0;
Price = 97;

Вычислите OAS.

[OAS,OAD] = oasbycir(CIRT,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates,'Period',Period,'AmericanOpt',AmericanOpt)
OAS = 416.9457
OAD = 0.9282

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

Создать RateSpec с использованием intenvset функция.

Rates = [0.025; 0.032; 0.037; 0.042]; 
Dates = {'Jan-1-2017'; 'Jan-1-2018'; 'Jan-1-2019'; 'Jan-1-2020'; 'Jan-1-2021'}; 
ValuationDate = 'Jan-1-2016'; 
EndDates = Dates(2:end)'; 
Compounding = 1; 
RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', ValuationDate, 'EndDates',EndDates,'Rates', Rates, 'Compounding', Compounding); 

Создать CIR дерево.

NumPeriods = length(EndDates); 
Alpha = 0.03; 
Theta = 0.02;  
Sigma = 0.1;
Maturity = '01-Jan-2019'; 
CIRTimeSpec = cirtimespec(ValuationDate, Maturity, NumPeriods); 
CIRVolSpec = cirvolspec(Sigma, Alpha, Theta); 
CIRT = cirtree(CIRVolSpec, RateSpec, CIRTimeSpec)
CIRT = struct with fields:
      FinObj: 'CIRFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 0.7500 1.5000 2.2500]
        dObs: [736330 736604 736878 737152]
     FwdTree: {[1.0187]  [1.0338 1.0188 1.0083]  [1x5 double]  [1x7 double]}
     Connect: {[3x1 double]  [3x3 double]  [3x5 double]}
       Probs: {[3x1 double]  [3x3 double]  [3x5 double]}

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

BondSettlement = 'Jan-1-2016';
BondMaturity   = 'Jan-1-2020'; 
CouponRate = 0.035;
Period = 1;
OptSpec = 'call'; 
Strike = 100;  

 Face = { 
                 {'Jan-1-2018'  100; 
                  'Jan-1-2019'   70; 
                  'Jan-1-2020'   50};
                 };

ExerciseDates = {'Jan-1-2018' '01-Jan-2019'}; 

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

Price = 99;
BondType = 'amortizing';
OAS = oasbycir(CIRT, Price, CouponRate, BondSettlement, Maturity,...
OptSpec, Strike, ExerciseDates, 'Period', Period, 'Face', Face,'BondType', BondType)
OAS = 80.4801

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

свернуть все

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

Цена страйка опциона, указанная как NINSTоколо-1 или NINSTоколо-NSTRIKES в зависимости от типа опции:

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

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

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

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

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

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

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

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

.

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

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

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

Пример: OAS = oasbycir(CIRTree,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 вектор с использованием серийных номеров дат, векторов символов даты, строковых массивов или массивов datetime.

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

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

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

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

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

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

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

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

Если не указать StartDate, дата начала действия - Settle дата.

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

Подробнее

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

[1] Кокс, J., Ингерсолл, J. и С. Росс. «Теория терминологической структуры процентных ставок». Эконометрика. Том 53, 1985.

[2] Бриго, Д. и Ф. Меркурио. Модели процентных ставок - теория и практика. Springer Finance, 2006.

[3] Хирса, А. Вычислительные методы в финансах. КПР Пресс, 2012.

[4] Навалька, С., Сото, Г. и Н. Белиаева. Динамическое моделирование структуры терминов. Уайли, 2007.

[5] Нельсон, Д. и К. Рамасвами. «Простые биномиальные процессы как диффузионные приближения в финансовых моделях». Обзор финансовых исследований. Том 3. 1990, стр 393–430.

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