swaptionbynormal

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

Синтаксис

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

Описание

пример

Price = swaptionbynormal(RateSpec,OptSpec,Strike,Settle,ExerciseDates,Maturity,Volatility) цены swaptions использование модели ценообразования опционов 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

Задайте swaption.

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);

Задайте swaption.

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

Задайте swaption инструмент и цену с 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

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

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

Оцените swaption инструмент с помощью swaptionbynormal для отрицательной забастовки.

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

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

свернуть все

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

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

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

Даты, в которые swaption истекает и базовая подкачка, запускаются, заданный как 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

Значения:

  •  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

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

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

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

свернуть все

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

Больше о

свернуть все

Вызовите Swaption

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

Поместите Swaption

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

Введенный в R2017a