swaptionbyblk

Ценовой европеец swaption инструмент с помощью модели Black

Синтаксис

Price = swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDates,Maturity,Volatility)
Price = swaptionbyblk(___,Name,Value)

Описание

пример

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

пример

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

Примеры

свернуть все

Оцените европейский swaption, который дает держателю право войти за пять лет в трехлетнюю подкачку оплаты, где с фиксированной процентной ставкой из 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);

Оцените swaption использование модели 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

Этот пример показывает Цене европейский swaption с получением и оплатой участков, который дает держателю право войти за пять лет в трехлетнюю подкачку оплаты, где с фиксированной процентной ставкой из 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);

Задайте swaption аргументы.

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

Оцените swaption.

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

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

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

Оцените swaption использование модели 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

Задайте кривые LIBOR и OIS.

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 для кривых LIBOR и OIS.

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

Задайте swaption инструменты.

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

Оцените swaption инструменты с помощью структуры термина OISCurve и для дисконтирования потоков наличности и для генерации будущих форвардных курсов.

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

    1.0956
    2.6944

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

Оцените swaption с отрицательной забастовкой с помощью модели Shifted 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

Оцените swaptions с использованием модели Shifted 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 входная переменная RateSpec s со вторым входом, являющимся дисконтной кривой для участка оплаты. Если только одна кривая задана, то она используется, чтобы обесценить оба участка.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ежегодные значения колебаний, заданные как NINST-by-1 вектор числовых значений.

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

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

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

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

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

  •  0 = фактический/фактический

  •  1 = 30/360 (СИА)

  •  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 = ШИНА/252

Для получения дополнительной информации смотрите основание.

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

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

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

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

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

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

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

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

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

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

свернуть все

Цены на swaptions во время 0, возвращенный как NINST-by-1 вектор цен.

Больше о

свернуть все

Передайте подкачку

forward swap является подкачкой, которая запускается позднее.

Переключенный черный цвет

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

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

Алгоритмы

свернуть все

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

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