exponenta event banner

swaptionbyblk

Инструмент ценового европейского свопциона с использованием модели Black

Описание

пример

Price = swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDates,Maturity,Volatility) свопции цен с использованием модели ценообразования опционов Black.

пример

Price = swaptionbyblk(___,Name,Value) добавляет необязательные аргументы пары имя-значение.

Примеры

свернуть все

Цена европейского свопциона, который дает держателю право ввести через пять лет в трехлетний платёжный своп, где выплачивается фиксированная ставка 6,2% и поступает плавающая. Предположим, что кривая доходности является плоской на уровне 6% годовых с непрерывным объединением, волатильность ставки свопа составляет 20%, основная сумма составляет $100, и платежи обмениваются раз в полгода.

Создать RateSpec.

Rate = 0.06;
Compounding  = -1;
ValuationDate = 'Jan-1-2010';
EndDates =   'Jan-1-2020'; 
Basis = 1; 

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

Цена свопциона с использованием модели Black.

Settle = 'Jan-1-2011';
ExerciseDates = 'Jan-1-2016';
Maturity = 'Jan-1-2019'; 
Reset = 2; 
Principal = 100;
Strike = 0.062;
Volatility = 0.2;
OptSpec = 'call';

Price= swaptionbyblk(RateSpec, OptSpec, Strike, Settle, ExerciseDates, Maturity, ...
Volatility, 'Reset', Reset, 'Principal', Principal, 'Basis', Basis)
Price = 2.0710

Этот пример показывает цену европейского свопциона с получающими и оплачивающими ногами, который дает держателю право вступить через пять лет в трехлетний платящий своп, где выплачивается фиксированная ставка 6,2% и поступает плавающая. Предположим, что кривая доходности является плоской на уровне 6% годовых с непрерывным объединением, волатильность ставки свопа составляет 20%, основная сумма составляет $100, и платежи обмениваются раз в полгода.

Rate = 0.06;
Compounding  = -1;
ValuationDate = 'Jan-1-2010';
EndDates =   'Jan-1-2020'; 
Basis = 1;

Определите RateSpec.

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

Определите аргументы свопциона.

Settle = 'Jan-1-2011';
ExerciseDates = 'Jan-1-2016';
Maturity = 'Jan-1-2019'; 
Reset = [2 4]; % 1st column represents receiving leg, 2nd column represents paying leg
Principal = 100;
Strike = 0.062;
Volatility = 0.2;
OptSpec = 'call';
Basis = [1 3]; % 1st column represents receiving leg, 2nd column represents paying leg

Цена свопциона.

Price= swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDates,Maturity,Volatility, ...
'Reset',Reset,'Principal',Principal,'Basis',Basis)
Price = 1.6494

Цена европейского свопциона, который дает держателю право заключить 5-летний получающий своп через год, где получена фиксированная ставка в 3% и выплачена плавающая. Предположим, что нулевые ставки за 1 год, 2 года, 3 года, 4 года и 5 лет составляют 3%, 3,4%, 3,7%, 3,9% и 4% при непрерывном компаундировании. Волатильность ставки свопа составляет 21%, основная сумма - $1000, и платежи обмениваются раз в полгода.

Создать RateSpec.

ValuationDate = 'Jan-1-2010';
EndDates = {'Jan-1-2011';'Jan-1-2012';'Jan-1-2013';'Jan-1-2014';'Jan-1-2015'};
Rates = [0.03; 0.034 ; 0.037; 0.039; 0.04;];
Compounding = -1;
Basis = 1; 

RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', ValuationDate, ...
'EndDates', EndDates, 'Rates', Rates, 'Compounding', Compounding,'Basis', Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: [5x1 double]
            Rates: [5x1 double]
         EndTimes: [5x1 double]
       StartTimes: [5x1 double]
         EndDates: [5x1 double]
       StartDates: 734139
    ValuationDate: 734139
            Basis: 1
     EndMonthRule: 1

Цена свопциона с использованием модели Black.

Settle = 'Jan-1-2011';
ExerciseDates = 'Jan-1-2012'; 
Maturity = 'Jan-1-2017';
Strike = 0.03;
Volatility = 0.21;
Principal =1000;
Reset = 2; 
OptSpec = 'put';

Price = swaptionbyblk(RateSpec, OptSpec, Strike, Settle,  ExerciseDates, ...
Maturity, Volatility,'Basis', Basis, 'Reset', Reset,'Principal', Principal)
Price = 0.5771

Определите кривые OIS и Libor.

Settle = datenum('15-Mar-2013');
CurveDates = daysadd(Settle,360*[1/12 2/12 3/12 6/12 1 2 3 4 5 7 10],1);
OISRates = [.0018 .0019 .0021 .0023 .0031 .006  .011 .017 .021 .026 .03]';
LiborRates = [.0045 .0047 .005 .0055 .0075 .0109  .0162 .0216 .0262 .0309 .0348]';

Создание связанного RateSpec для кривых OIS и Libor.

OISCurve = intenvset('Rates',OISRates,'StartDate',Settle,'EndDates',CurveDates,'Compounding',2,'Basis',1);
LiborCurve = intenvset('Rates',LiborRates,'StartDate',Settle,'EndDates',CurveDates,'Compounding',2,'Basis',1);

Определите инструменты свопциона.

ExerciseDate = '15-Mar-2018';
Maturity = {'15-Mar-2020';'15-Mar-2023'};
OptSpec = 'call';
Strike = 0.04;
BlackVol = 0.2;

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

Price = swaptionbyblk(OISCurve, OptSpec, Strike, Settle, ExerciseDate, Maturity, BlackVol,'Reset',1)
Price = 2×1

    1.0956
    2.6944

Ценообразование инструментов свопциона с использованием терминологической структуры LiborCurve генерировать будущие форвардные ставки. Структура терминов OISCurve используется для дисконтирования денежных потоков.

PriceLC = swaptionbyblk(OISCurve, OptSpec, Strike, Settle, ExerciseDate, Maturity, BlackVol,'ProjectionCurve',LiborCurve,'Reset',1)
PriceLC = 2×1

    1.5346
    3.8142

Создать RateSpec.

ValuationDate = 'Jan-1-2016';
EndDates = {'Jan-1-2017';'Jan-1-2018';'Jan-1-2019';'Jan-1-2020';'Jan-1-2021'};
Rates = [-0.02; 0.024 ; 0.047; 0.090; 0.12;]/100;
Compounding = 1;
Basis = 1;

RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates',ValuationDate, ...
'EndDates',EndDates,'Rates',Rates,'Compounding',Compounding,'Basis',Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [5x1 double]
            Rates: [5x1 double]
         EndTimes: [5x1 double]
       StartTimes: [5x1 double]
         EndDates: [5x1 double]
       StartDates: 736330
    ValuationDate: 736330
            Basis: 1
     EndMonthRule: 1

Цена свопциона с отрицательным ударом с использованием модели Shilded Black.

Settle = 'Jan-1-2016';
ExerciseDates = 'Jan-1-2017';
Maturity = 'Jan-1-2020';
Strike = -0.003; % Set -0.3 percent strike.
ShiftedBlackVolatility = 0.31;
Principal = 1000;
Reset = 1;
OptSpec = 'call';
Shift = 0.008; % Set 0.8 percent shift.

Price = swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDates, ...
Maturity,ShiftedBlackVolatility,'Basis',Basis,'Reset',Reset,...
'Principal',Principal,'Shift',Shift)
Price = 12.8301

Создать RateSpec.

ValuationDate = 'Jan-1-2016';
EndDates = {'Jan-1-2017';'Jan-1-2018';'Jan-1-2019';'Jan-1-2020';'Jan-1-2021'};
Rates = [-0.02; 0.024 ; 0.047; 0.090; 0.12;]/100;
Compounding = 1;
Basis = 1;

RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates',ValuationDate, ...
'EndDates',EndDates,'Rates',Rates,'Compounding',Compounding,'Basis',Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [5x1 double]
            Rates: [5x1 double]
         EndTimes: [5x1 double]
       StartTimes: [5x1 double]
         EndDates: [5x1 double]
       StartDates: 736330
    ValuationDate: 736330
            Basis: 1
     EndMonthRule: 1

Оцените свопции с использованием модели Shaded Black.

Settle = 'Jan-1-2016';
ExerciseDates = 'Jan-1-2017';
Maturities = {'Jan-1-2018';'Jan-1-2019';'Jan-1-2020'};
Strikes = [-0.0034;-0.0032;-0.003];
ShiftedBlackVolatilities = [0.33;0.32;0.31]; % A vector of volatilities.
Principal = 1000;
Reset = 1;
OptSpec = 'call';
Shifts = [0.0085;0.0082;0.008]; % A vector of shifts.

Prices = swaptionbyblk(RateSpec,OptSpec,Strikes,Settle,ExerciseDates, ...
Maturities,ShiftedBlackVolatilities,'Basis',Basis,'Reset',Reset, ...
'Principal',Principal,'Shift',Shifts)
Prices = 3×1

    4.1117
    8.0577
   12.8301

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

свернуть все

Структура срока действия процентной ставки (в годовом исчислении и с постоянным усложнением), определяемая RateSpec получено из intenvset. Для получения информации о спецификации процентной ставки см. intenvset.

Если этап оплаты отличается от этапа приема, RateSpec может быть NINSTоколо-2 входная переменная RateSpecs, причем второй ввод является кривой дисконтирования для платящей ноги. Если указана только одна кривая, то она используется для дисконтирования обеих ветвей.

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

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

A 'call' swaption, или Payer swaption, позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона платит фиксированную ставку и получает плавающую ставку.

A 'put' свопцион, или свопцион получателя, позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона получает фиксированную ставку и оплачивает плавающую ставку.

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

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

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

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

Settle дата ввода для swaptionbyblk дата оценки, на которую рассчитывается цена свопциона (опциона для заключения свопа). Покупатель свопциона оплачивает эту цену на эту дату, чтобы удержать свопцион.

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

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

Для европейского варианта: ExerciseDates являются NINSTоколо-1 вектор дат упражнений. Каждая строка является расписанием для одного варианта. При использовании европейского варианта существует только один ExerciseDate на дату истечения срока действия опциона.

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

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

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

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

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

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

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

Пример: Price = swaptionbyblk(OISCurve,OptSpec,Strike,Settle,ExerciseDate,Maturity,BlackVol,'Reset',1,'Shift',.5)

Дневной отсчет прибора, определяемый как пара, разделенная запятыми, состоящая из 'Basis' и NINSTоколо-1 вектор или NINSTоколо-2 матрица, представляющая основу для каждого лег. если Basis является NINSTоколо-2, первый столбец представляет ветвь-получатель, в то время как второй столбец представляет лег. по умолчанию 0 (фактические/фактические).

  • 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

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

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

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

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

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

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

Сдвиг в десятичных разрядах для сдвинутой модели черного, заданной как разделенная запятыми пара, состоящая из 'Shift' и скаляр или NINSTоколо-1 вектор сдвигов скорости в положительных десятичных разрядах. Установите для этого параметра положительное смещение ставки в десятичных разрядах, чтобы добавить положительное смещение к ставке прямого свопа и страйка, что эффективно устанавливает отрицательную нижнюю границу для ставки прямого свопа и страйка. Например, Shift из 0.01 равно 1% сдвигу.

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

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

свернуть все

Цены для свопционов в момент времени 0, возвращенные как NINSTоколо-1 вектор цен.

Подробнее

свернуть все

Перемотка вперед

Форвардный своп - это своп, который начинается в будущем.

Сдвинутый черный

Модель сдвинутого черного по существу такая же, как модель черного, за исключением того, что она моделирует движения (F + Shift) в качестве базового актива, а не F (который является форвардной ставкой свопа в случае свопционов).

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

Алгоритмы

свернуть все

Черная модель

dF = Black Fdwcall = e γ T [FN (d1) KN (d2)] пут = e γ T [KN (d2) FN (d1 ) ] d1 = ln (FK) + (σB22) T

Где F - прямое значение, а K - удар.

Сдвинутая черная модель

dF =σShifted_Black (F+Shift) dwcall=e−γT [(F+Shift) N (ds1) (K+Shift) N (ds2)] put=e−γT [(K+Shift) N (−ds2) (F+Shift) N (−ds1)] ds1=ln    (F+ShiftK+Shift) + (σsB22) TσsBT, ds2=ds1−σsBTσsB =σShifted_Black

Где F + Shift - прямое значение, а K + Shift - страйк для сдвинутой версии.

Представлен до R2006a