swaptionbyblk

Цена Европейский свапсионный инструмент с использованием модели Black

Описание

пример

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

пример

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

Оцените свопцию отрицательным ударом с помощью модели Shitted 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

Оцените свопционы с помощью модели Shitted 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-by- 2 входная переменная RateSpecs, со вторым входом - кривая скидки для плательщика. Если задана только одна кривая, то она используется для дисконтирования обеих ног.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее о

свернуть все

Прямая замена

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

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

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

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

Алгоритмы

свернуть все

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

dF=σBlackFdwcall=eγT[FN(d1)KN(d2)]put=eγT[KN(d2)FN(d1)]d1=ln(FK)+(σB22)TσBT,   d2=d1σBTσB=σBlack

Где 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