CDSOption

CDSOption инструментальный объект

Описание

Создайте и оцените CDSOption инструментальный объект для одного или нескольких инструментов Опции CDS с помощью этого рабочего процесса:

  1. Использование fininstrument создать CDSOption инструментальный объект для одного или нескольких инструментов Опции CDS. По умолчанию это создает опцию CDS одно имени. Можно создать опцию индекса CDS путем определения дополнительного аргумента AdjustedForwardSpread значения имени.

  2. Использование finmodel задавать CDSBlack модель для CDSoption инструментальный объект.

  3. Использование finpricer задавать CDSBlack метод ценообразования для одного или нескольких CDSoption инструменты.

Для получения дополнительной информации об этом рабочем процессе смотрите Начало работы с Рабочими процессами Используя Основанную на объектах Среду для Оценки Финансовых инструментов.

Для получения дополнительной информации о доступных моделях и методах ценообразования с помощью CDSoption инструмент, смотрите, Выбирают Instruments, Models и Pricers.

Создание

Описание

пример

CDSOptionObj = fininstrument(InstrumentType,'ExerciseDate',exercise_date,'Strike',strike_value,'CDS',cds_obj) создает CDSOption объект для одного или нескольких инструментов Опции CDS путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" ExerciseDate, Strike, и CDS.

пример

CDSOptionObj = fininstrument(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, CDSOptionObj = fininstrument("CDSoption",'ExerciseDate',datetime(2019,1,30),'Strike',500,'CDS',cds_object,'Name',"cdsoption_instrument") создает CDSOption инструмент для опции CDS одно имени с забастовкой 500. Можно задать несколько аргументов пары "имя-значение".

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

развернуть все

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

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

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

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

Пример: CDSOptionObj = fininstrument("CDSoption",'ExerciseDate',datetime(2019,1,30),'Strike',500,'CDS',cds_object,'Name',"cdsoption_instrument")
Необходимый CDSOption Аргументы в виде пар имя-значение

развернуть все

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

Если вы используете векторы символов даты или строки даты, формат должен быть распознаваемым datetime потому что ExerciseDate свойство хранится как datetime.

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

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

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

CDS объект в виде разделенной запятой пары, состоящей из 'CDS' и скалярный CDS возразите или NINST- 1 вектор из CDS объекты.

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

Дополнительный CDSOption Аргумент пары "имя-значение"

развернуть все

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

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

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

Типы данных: логический

Настроенный вперед распространение (в пунктах) для оценки CDS индексируют опцию в виде разделенной запятой пары, состоящей из 'AdjustedForwardSpread' и числовой скаляр или NINST- 1 числовой вектор. Для получения дополнительной информации об использовании 'AdjustedForwardSpread' при оценке опции индекса CDS смотрите, что Ценовой CDS индексирует Опции Используя CDS Черная Модель и CDS Черный Калькулятор цен.

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

Пользовательское имя для одного из большего количества инструментов в виде разделенной запятой пары, состоящей из 'Name' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.

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

Свойства

развернуть все

Дата осуществления опции, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.

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

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

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

CDS объект, возвращенный как скалярный CDS возразите или NINST- 1 вектор из объектов CDS.

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

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

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

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

Типы данных: логический

Настроенный вперед распространение (в пунктах) для оценки CDS индексируют опцию, возвращенную как числовой скаляр или NINST- 1 числовой вектор.

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

Пользовательское имя для инструмента, возвращенного как скалярная строка или NINST- 1 массив строк.

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

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить CDSOption инструмент для опции CDS одно имени, когда вы используете CDSBlack модель и CDSBlack метод ценообразования.

Создайте CDS Инструментальный объект

Используйте fininstrument создать базовый CDS инструментальный объект.

CDSOpt = fininstrument("CDS",'Maturity',datetime(2021,9,15),'ContractSpread',150,'Notional',100,'Name',"CDS_option")
CDSOpt = 
  CDS with properties:

           ContractSpread: 150
                 Maturity: 15-Sep-2021
                   Period: 4
                    Basis: 2
             RecoveryRate: 0.4000
    BusinessDayConvention: "actual"
                 Holidays: NaT
        PayAccruedPremium: 1
                 Notional: 100
                     Name: "CDS_option"

Создайте defprobcurve Объект

Создайте defprobcurve объект с помощью defprobcurve.

Settle = datetime(2020,9,20);
DefProbTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])];
DefaultProbabilities = [0.005 0.007 0.01 0.015 0.026 0.04 0.077 0.093 0.15 0.20]';
ProbDates = Settle + DefProbTimes;
DefaultProbCurve = defprobcurve(Settle,ProbDates,DefaultProbabilities,'Basis',5)
DefaultProbCurve = 
  defprobcurve with properties:

                  Settle: 20-Sep-2020
                   Basis: 5
                   Dates: [10x1 datetime]
    DefaultProbabilities: [10x1 double]

Создайте ratecurve Объект

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2020,9,15);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Sep-2020
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте CDSOption Инструментальный объект

Используйте fininstrument создать CDSOption инструментальный объект для опции CDS одно имени.

CDSOptionInst = fininstrument("CDSOption",'ExerciseDate',datetime(2021,8,15),'Strike',20,'CDS',CDSOpt,'OptionType',"put",'Knockout',true,'Name',"CDSOption_option")
CDSOptionInst = 
  CDSOption with properties:

               OptionType: "put"
                   Strike: 20
                 Knockout: 1
    AdjustedForwardSpread: NaN
             ExerciseDate: 15-Aug-2021
                      CDS: [1x1 fininstrument.CDS]
                     Name: "CDSOption_option"

Создайте CDSBlack Объект модели

Используйте finmodel создать CDSBlack объект модели.

CDSBlackModel = finmodel("CDSBlack",'SpreadVolatility',.2)
CDSBlackModel = 
  CDSBlack with properties:

    SpreadVolatility: 0.2000

Создайте CDSBlack Объект калькулятора цен

Используйте finpricer создать CDSBlack объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("analytic",'Model',CDSBlackModel,'DefaultProbabilityCurve',DefaultProbCurve,'DiscountCurve',myRC)
outPricer = 
  CDSBlack with properties:

                      Model: [1x1 finmodel.CDSBlack]
              DiscountCurve: [1x1 ratecurve]
    DefaultProbabilityCurve: [1x1 defprobcurve]

Цена CDSOption Инструмент

Используйте price вычислить цену за CDSOption инструмент для опции CDS одно имени.

Price = price(outPricer,CDSOptionInst)
Price = 3.3016e-04

Этот пример показывает рабочий процесс, чтобы оценить несколько CDSOption инструменты, когда вы используете CDSBlack модель и CDSBlack метод ценообразования.

Создайте CDS Инструментальный объект

Используйте fininstrument создать базовый CDS инструментальный объект для трех инструментов Опции CDS.

CDSOpt = fininstrument("CDS",'Maturity',datetime([2021,9,15 ; 2021,10,15 ; 2021,11,15]),'ContractSpread',150,'Notional',[10000 ; 20000 ; 30000],'Name',"CDS_option")
CDSOpt=3×1 object
  3x1 CDS array with properties:

    ContractSpread
    Maturity
    Period
    Basis
    RecoveryRate
    BusinessDayConvention
    Holidays
    PayAccruedPremium
    Notional
    Name

Создайте defprobcurve Объект

Создайте defprobcurve объект с помощью defprobcurve.

Settle = datetime(2020,9,20);
DefProbTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])];
DefaultProbabilities = [0.005 0.007 0.01 0.015 0.026 0.04 0.077 0.093 0.15 0.20]';
ProbDates = Settle + DefProbTimes;
DefaultProbCurve = defprobcurve(Settle,ProbDates,DefaultProbabilities,'Basis',5)
DefaultProbCurve = 
  defprobcurve with properties:

                  Settle: 20-Sep-2020
                   Basis: 5
                   Dates: [10x1 datetime]
    DefaultProbabilities: [10x1 double]

Создайте ratecurve Объект

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2020,9,15);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Sep-2020
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте CDSOption Инструментальный объект

Используйте fininstrument создать CDSOption инструментальный объект для трех опций CDS одно имени.

CDSOptionInst = fininstrument("CDSOption",'ExerciseDate',datetime(2021,8,15),'Strike',20,'CDS',CDSOpt,'OptionType',"put",'Knockout',true,'Name',"CDSOption_option")
CDSOptionInst=3×1 object
  3x1 CDSOption array with properties:

    OptionType
    Strike
    Knockout
    AdjustedForwardSpread
    ExerciseDate
    CDS
    Name

Создайте CDSBlack Объект модели

Используйте finmodel создать CDSBlack объект модели.

CDSBlackModel = finmodel("CDSBlack",'SpreadVolatility',.2)
CDSBlackModel = 
  CDSBlack with properties:

    SpreadVolatility: 0.2000

Создайте CDSBlack Объект калькулятора цен

Используйте finpricer создать CDSBlack объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("analytic",'Model',CDSBlackModel,'DefaultProbabilityCurve',DefaultProbCurve,'DiscountCurve',myRC)
outPricer = 
  CDSBlack with properties:

                      Model: [1x1 finmodel.CDSBlack]
              DiscountCurve: [1x1 ratecurve]
    DefaultProbabilityCurve: [1x1 defprobcurve]

Цена CDSOption Инструменты

Используйте price вычислить цены на три CDSOption инструменты.

Price = price(outPricer,CDSOptionInst)
Price = 3×1

    0.0003
    0.0384
    0.5941

Этот пример показывает рабочий процесс, чтобы использовать CDSOption инструмент, чтобы оценить CDS индексирует опции, когда вы используете CDSBlack модель и CDSBlack метод ценообразования.

Настройте данные для индекса CDS

% CDS index and option data
Recovery = .4;
Basis = 2;
Period = 4;
CDSMaturity = datetime(2017, 6, 20);
ContractSpread = 100;
IndexSpread = 140;
BusDayConvention = 'follow';
Settle = datetime(2012, 4, 13);
OptionMaturity = datetime(2012, 6, 20);
OptionStrike = 140;
SpreadVolatility = .69;

Создайте ratecurve Объект для кривой нулевой ширины Используя irbootstrap

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

% Zero curve data
DepRates = [0.004111 0.00563 0.00757 0.01053]';
DepTimes = calmonths([1 2 3 6]');
DepDates = Settle + DepTimes;
nDeposits = length(DepTimes);

SwapRates = [0.01387 0.01035 0.01145 0.01318 0.01508 0.01700 0.01868 ...
    0.02012 0.02132 0.02237 0.02408 0.02564 0.02612 0.02524]';
SwapTimes = calyears([1 2 3 4 5 6 7 8 9 10 12 15 20 30]');
SwapDates = Settle + SwapTimes;
nSwaps = length(SwapTimes);

nInst = nDeposits + nSwaps;

BootInstruments(nInst,1) = fininstrument.FinInstrument;
for ii=1:length(DepDates)
    BootInstruments(ii) = fininstrument("deposit","Maturity",DepDates(ii),"Rate",DepRates(ii));
end

for ii=1:length(SwapDates)
    BootInstruments(ii+nDeposits) = fininstrument("swap","Maturity",SwapDates(ii),"LegRate",[SwapRates(ii) 0]);
end

ZeroCurve = irbootstrap(BootInstruments,Settle)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [18x1 datetime]
                Rates: [18x1 double]
               Settle: 13-Apr-2012
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Загрузите кривую вероятности по умолчанию

Используйте defprobstrip загружать кривую вероятности по умолчанию, принимающую плоское распространение индекса.

ProbDates = datemnth(OptionMaturity,(0:5*12)');
MarketCDSInstruments = fininstrument("cds", ...
    'ContractSpread', ContractSpread, 'Maturity', CDSMaturity);
DefaultProbCurve = defprobstrip(ZeroCurve, MarketCDSInstruments, IndexSpread, 'ProbDates', ProbDates)
DefaultProbCurve = 
  defprobcurve with properties:

                  Settle: 13-Apr-2012
                   Basis: 2
                   Dates: [61x1 datetime]
    DefaultProbabilities: [61x1 double]

Вычислите пятно и передайте RPV01s

Вычислите пятно и передайте RPV01s с помощью cdsrpv01.

ProbData = [datenum(DefaultProbCurve.Dates) DefaultProbCurve.DefaultProbabilities];

% RPV01(t,T)
RPV01_CDSMaturity = cdsrpv01(ZeroCurve,ProbData,Settle,CDSMaturity)
RPV01_CDSMaturity = 4.7853
% RPV01(t,t_E,T)
RPV01_OptionExpiryForward = cdsrpv01(ZeroCurve,ProbData,Settle,CDSMaturity,...
    'StartDate',OptionMaturity)
RPV01_OptionExpiryForward = 4.5972
% RPV01(t,t_E) = RPV01(t,T) - RPV01(t,t_E,T)
RPV01_OptionExpiry = RPV01_CDSMaturity - RPV01_OptionExpiryForward
RPV01_OptionExpiry = 0.1882

Вычислите точечные распространения

Вычислите точечные распространения с помощью cdsspread.

% S(t,t_E)
Spread_OptionExpiry = cdsspread(ZeroCurve,ProbData,Settle,OptionMaturity,...
    'Period',Period,'Basis',Basis,'BusDayConvention',BusDayConvention,...
    'PayAccruedPremium',true,'recoveryrate',Recovery)
Spread_OptionExpiry = 139.8995
% S(t,T)
Spread_CDSMaturity = cdsspread(ZeroCurve,ProbData,Settle,CDSMaturity,...
    'Period',Period,'Basis',Basis,'BusDayConvention',BusDayConvention,...
    'PayAccruedPremium',true,'recoveryrate',Recovery)
Spread_CDSMaturity = 139.9999

Вычислите вперед распространение

Вычислите прямое распространение с помощью точечных распространений и RPV01s.

% F = S(t,t_E,T)
ForwardSpread = (Spread_CDSMaturity.*RPV01_CDSMaturity - Spread_OptionExpiry.*RPV01_OptionExpiry)./RPV01_OptionExpiryForward
ForwardSpread = 140.0040

Вычислите защиту фронтенда

Вычислите защиту фронтенда (FEP).

FEP = 10000*(1-Recovery)*ZeroCurve.discountfactors(OptionMaturity)*DefaultProbCurve.DefaultProbabilities(1)
FEP = 26.3108

Вычислите настроенное прямое распространение

Вычислите настроенное прямое распространение, чтобы использовать при создании CDSOption инструмент.

AdjustedForwardSpread = ForwardSpread + FEP./RPV01_OptionExpiryForward
AdjustedForwardSpread = 145.7273

Вычислите цены опции CDS с настроенным прямым распространением

Используйте fininstrument создать базовый CDS инструментальный объект для двух инструментов Опции CDS.

CDS = fininstrument("cds",'ContractSpread', ContractSpread, 'Maturity', CDSMaturity)
CDS = 
  CDS with properties:

           ContractSpread: 100
                 Maturity: 20-Jun-2017
                   Period: 4
                    Basis: 2
             RecoveryRate: 0.4000
    BusinessDayConvention: "actual"
                 Holidays: NaT
        PayAccruedPremium: 1
                 Notional: 10000000
                     Name: ""

Используйте fininstrument создать CDSOption инструмент для двух инструментов опции индекса CDS.

CDSCallOption = fininstrument("cdsoption", 'Strike', OptionStrike, ...
    'ExerciseDate', OptionMaturity, 'OptionType', 'call', 'CDS', CDS, ...
    'Knockout',true, 'AdjustedForwardSpread', AdjustedForwardSpread)
CDSCallOption = 
  CDSOption with properties:

               OptionType: "call"
                   Strike: 140
                 Knockout: 1
    AdjustedForwardSpread: 145.7273
             ExerciseDate: 20-Jun-2012
                      CDS: [1x1 fininstrument.CDS]
                     Name: ""

CDSPutOption = fininstrument("cdsoption", 'Strike', OptionStrike, ...
    'ExerciseDate', OptionMaturity, 'OptionType', 'put', 'CDS', CDS, ...
    'Knockout',true, 'AdjustedForwardSpread', AdjustedForwardSpread)
CDSPutOption = 
  CDSOption with properties:

               OptionType: "put"
                   Strike: 140
                 Knockout: 1
    AdjustedForwardSpread: 145.7273
             ExerciseDate: 20-Jun-2012
                      CDS: [1x1 fininstrument.CDS]
                     Name: ""

Создайте CDSBlack Объект модели

Используйте finmodel создать CDSBlack объект модели.

CDSOptionModel = finmodel("cdsblack",'SpreadVolatility',SpreadVolatility)
CDSOptionModel = 
  CDSBlack with properties:

    SpreadVolatility: 0.6900

Создайте CDSBlack Объект калькулятора цен

Используйте finpricer создать CDSBlack объект калькулятора цен и использование ratecurve объект для кривой нулевой ширины для 'DiscountCurve' аргумент пары "имя-значение".

CDSOptionpricer = finpricer("analytic",'Model',CDSOptionModel,'DiscountCurve',ZeroCurve,'DefaultProbabilityCurve',DefaultProbCurve)
CDSOptionpricer = 
  CDSBlack with properties:

                      Model: [1x1 finmodel.CDSBlack]
              DiscountCurve: [1x1 ratecurve]
    DefaultProbabilityCurve: [1x1 defprobcurve]

Ценовой CDS индексирует опции

Используйте price вычислить цену за две опции индекса CDS.

outPrice = price(CDSOptionpricer, [CDSCallOption;CDSPutOption]);
fprintf('    Payer: %.0f   Receiver: %.0f  \n',outPrice(1),outPrice(2));
    Payer: 92   Receiver: 66  

Больше о

развернуть все

Ссылки

[1] О'Кэйн, D. Моделирование Кредитных деривативов Одно имени и Мультиимени. Вайли, 2008, стр 156–169.

Введенный в R2020a