exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее

свернуть все

Свопцион вызовов

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

Свопцион пут

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

Представлен в R2017a