CDSBlack

Создайте CDSBlack объект калькулятора цен для CDSOption инструмент с помощью CDSBlack модель

Описание

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

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

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

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

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

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

Создание

Описание

пример

CDSBlackPricerObj = finpricer(PricerType,'DiscountCurve',ratecurve_obj,'Model',model,'DefaultProbabilityCurve',defaultprobabilitycurve_obj) создает CDSBlack объект калькулятора цен путем определения PricerType и необходимые аргументы пары "имя-значение" для DiscountCurve, Model, и DefaultProbabilityCurve установить свойства с помощью пар "имя-значение". Например, CDSBlackPricerObj = finpricer("Analytic",'Model',CDSBlack,'DiscountCurve',ratecurve_obj,'DefaultProbabilityCurve',defaultprobabilitycurve_obj) создает CDSBlack объект калькулятора цен.

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

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

Тип калькулятора цен в виде строки со значением "Analytic" или вектор символов со значением 'Analytic'.

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

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

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

Пример: CDSBlackPricerObj = finpricer("Analytic",'Model',CDSBlack,'DiscountCurve',ratecurve_obj,'DefaultProbabilityCurve',defaultprobabilitycurve_obj)
Необходимый CDSBlack Аргументы в виде пар имя-значение

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

ratecurve объект для дисконтирования потоков наличности в виде разделенной запятой пары, состоящей из 'DiscountCurve' и имя ранее созданного ratecurve объект.

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

Объект модели в виде разделенной запятой пары, состоящей из 'Model' и имя ранее созданного CDSBlack использование объекта модели finmodel.

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

Кривая вероятности по умолчанию в виде разделенной запятой пары, состоящей из 'DefaultProbabilityCurve' и имя ранее созданного defprobcurve.

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

Свойства

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

ratecurve объект для дисконтирования потоков наличности, возвращенных как ratecurve объект.

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

Модель, возвращенная как CDSBlack объект модели.

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

Кривая вероятности по умолчанию, возвращенная как defprobcurve объект.

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

Функции объекта

priceВычислите цену за процентную ставку, акцию или инструмент кредитного дериватива с Analytic калькулятор цен

Примеры

свернуть все

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

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

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

Settle = datetime(2017,9,20);
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;
ZeroCurve = ratecurve("zero", Settle, ZeroDates ,ZeroRates)
ZeroCurve = 
  ratecurve with properties:

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

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

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

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)
DefaultProbCurve = 
  defprobcurve with properties:

                  Settle: 20-Sep-2017
                   Basis: 2
                   Dates: [10x1 datetime]
    DefaultProbabilities: [10x1 double]

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

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

ContractSpreadBP = 0; % Contractual spread is determined on ExerciseDate
CDS = fininstrument("CDS",'Maturity',datetime(2027,9,20),'ContractSpread',ContractSpreadBP)
CDS = 
  CDS with properties:

           ContractSpread: 0
                 Maturity: 20-Sep-2027
                   Period: 4
                    Basis: 2
             RecoveryRate: 0.4000
    BusinessDayConvention: "actual"
                 Holidays: NaT
        PayAccruedPremium: 1
                 Notional: 10000000
                     Name: ""

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

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

ExerciseDate = datetime(2017, 12, 20);
Strike = 50;
CDSOption = fininstrument("CDSOption",'Strike',Strike,'ExerciseDate',ExerciseDate,'OptionType',"put",'CDS',CDS)
CDSOption = 
  CDSOption with properties:

               OptionType: "put"
                   Strike: 50
                 Knockout: 0
    AdjustedForwardSpread: NaN
             ExerciseDate: 20-Dec-2017
                      CDS: [1x1 fininstrument.CDS]
                     Name: ""

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

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

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

    SpreadVolatility: 0.3000

Создайте 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]

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

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

outPrice = price(CDSOptionpricer,CDSOption)
outPrice = 6.5054

Этот пример показывает рабочий процесс, чтобы использовать 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 создать CDSOption инструмент для опции 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  
Введенный в R2020a
Для просмотра документации необходимо авторизоваться на сайте