swaptionbynormal

Ценовые свопционы с использованием модели Normal или Bachelier опции ценообразования

Описание

пример

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

пример

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

Примеры

свернуть все

Задайте нулевую кривую и создайте RateSpec.

Settle = datenum('20-Jan-2016');
ZeroTimes = [.5 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 = datemnth(Settle,12*ZeroTimes);
RateSpec = intenvset('StartDate',Settle,'EndDates',ZeroDates,'Rates',ZeroRates)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 2
             Disc: [10x1 double]
            Rates: [10x1 double]
         EndTimes: [10x1 double]
       StartTimes: [10x1 double]
         EndDates: [10x1 double]
       StartDates: 736349
    ValuationDate: 736349
            Basis: 0
     EndMonthRule: 1

Определите свопцию.

ExerciseDate = datenum('20-Jan-2021');
Maturity = datenum('20-Jan-2026');
OptSpec = 'call';
LegReset = [1 1];

Вычислите номинальную ставку свопа.

[~,ParSwapRate] = swapbyzero(RateSpec,[NaN 0],Settle,Maturity,'LegReset',LegReset)
ParSwapRate = 0.0216
Strike = ParSwapRate;
BlackVol = .3;
NormalVol = BlackVol*ParSwapRate;

Цена с черной волатильностью.

Price = swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDate,Maturity,BlackVol)
Price = 5.9756

Цена с нормальной волатильностью.

Price_Normal = swaptionbynormal(RateSpec,OptSpec,Strike,Settle,ExerciseDate,Maturity,NormalVol)
Price_Normal = 5.5537

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

Определите свопцию.

ExerciseDate = datenum('20-Jan-2021');
Maturity = datenum('20-Jan-2026');
Settle = 'Jan-1-2010';
OptSpec = 'call';
Strike = .09;
NormalVol = .03;
Reset = [1 4];  % 1st column represents receiving leg, 2nd column represents paying leg
Basis = [1 7];  % 1st column represents receiving leg, 2nd column represents paying leg

Цена с нормальной волатильностью.

Price_Normal = swaptionbynormal(RateSpec,OptSpec,Strike,Settle,ExerciseDate,Maturity,NormalVol,'Reset',Reset,'Basis',Basis)
Price_Normal = 5.9084

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

Settle = datenum('20-Jan-2016');
ZeroTimes = [.5 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 = datemnth(Settle,12*ZeroTimes);
RateSpec = intenvset('StartDate',Settle,'EndDates',ZeroDates,'Rates',ZeroRates)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 2
             Disc: [10x1 double]
            Rates: [10x1 double]
         EndTimes: [10x1 double]
       StartTimes: [10x1 double]
         EndDates: [10x1 double]
       StartDates: 736349
    ValuationDate: 736349
            Basis: 0
     EndMonthRule: 1

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

ExerciseDate = datenum('20-Jan-2021');
Maturity = datenum('20-Jan-2026');
OptSpec = 'call';

[~,ParSwapRate] = swapbyzero(RateSpec,[NaN 0],Settle,Maturity,'StartDate',ExerciseDate)
ParSwapRate = 0.0326
Strike = ParSwapRate;
BlackVol = .3;
NormalVol = BlackVol*ParSwapRate;

Price = swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDate,Maturity,BlackVol)
Price = 3.6908

Оцените инструмент свопцирования с помощью swaptionbynormal.

Price_Normal = swaptionbynormal(RateSpec,OptSpec,Strike,Settle,ExerciseDate,Maturity,NormalVol)
Price_Normal = 3.7602

Оцените инструмент свопцирования с помощью swaptionbynormal для негативного удара.

 Price_Normal = swaptionbynormal(RateSpec,OptSpec,-.005,Settle,ExerciseDate,Maturity,NormalVol)
Price_Normal = 16.3674

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

свернуть все

Структура процентной ставки (в годовом исчислении и постоянно сложной), определяемая 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 вектор серийных номеров дат или массив ячеек векторов символов даты, объектов datetime или строковых объектов. Settle не должно быть позже ExerciseDates.

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

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

Даты, на которые истекает срок действия свопциона и начинается базовый своп, заданные как NINST-by- 1 вектор серийных номеров дат или массив ячеек векторов символов даты, объектов datetime или строковых объектов. Есть только один ExerciseDate на дату истечения срока действия опции. Это также StartDate базового прямого свопа.

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

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

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

Значения волатильности (для нормальной волатильности), заданные как NINST-by- 1 вектор числовых значений.

Для получения дополнительной информации о модели Normal, смотрите Работа с отрицательными процентными ставками с использованием функций.

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

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

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

Пример: Price = swaptionbynormal(OISCurve,OptSpec,Strike,Settle,ExerciseDate,Maturity,NormalVol,'Reset',4)

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

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

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

Значения:

  • 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

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

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

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

свернуть все

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

Подробнее о

свернуть все

Переключение вызовов

Свопцион Call swaption или Плательщика позволяет опции покупателю заключить процентный своп, в котором покупатель опции платит фиксированную ставку и получает плавающую ставку.

Поставьте Swaption

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

Введенный в R2017a