capbyblk

Ценовые ограничения с помощью Черной модели ценообразования опционов

Синтаксис

[CapPrice,Caplets] = capbyblk(RateSpec,Strike,Settle,Maturity,Volatility)
[CapPrice,Caplets] = capbyblk(___,Name,Value)

Описание

пример

[CapPrice,Caplets] = capbyblk(RateSpec,Strike,Settle,Maturity,Volatility) ценовые ограничения с помощью Черной модели ценообразования опционов. capbyblk вычисляет цены прописных букв ванили и прописных букв амортизации.

пример

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

Примеры

свернуть все

Рассмотрите инвестора, который входит в контракт, который прописные буквы процентная ставка по ссуде в размере 100 000$ в 8% ежеквартально соединили в течение 3 месяцев, начав 1 января 2009. Предположение, что 1 января 2008 нулевой уровень составляет 6,9394%, постоянно составляемые и энергозависимость, составляет 20%, используйте эти данные, чтобы вычислить цену прописной буквы. Во-первых, вычислите RateSpec:

ValuationDate = 'Jan-01-2008';
EndDates ='April-01-2010';
Rates = 0.069394;
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: 0.8554
            Rates: 0.0694
         EndTimes: 2.2500
       StartTimes: 0
         EndDates: 734229
       StartDates: 733408
    ValuationDate: 733408
            Basis: 1
     EndMonthRule: 1

Вычислите цену прописной буквы.

Settle = 'Jan-01-2009'; % cap starts in a year
Maturity = 'April-01-2009';
Volatility = 0.20;
CapRate = 0.08;
CapReset = 4;
Principal=100000;

CapPrice = capbyblk(RateSpec,  CapRate, Settle, Maturity, Volatility,...
'Reset',CapReset,'ValuationDate',ValuationDate,'Principal', Principal,...
'Basis', Basis)
CapPrice = 51.6125

Задайте уровни 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);

Задайте инструменты Прописной буквы.

Maturity = {'15-Mar-2018';'15-Mar-2020'};
Strike = [0.04;0.05];
BlackVol = 0.2;

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

[Price, Caplets] = capbyblk(OISCurve, Strike, Settle, Maturity, BlackVol)
Price = 2×1

    0.7472
    0.9890

Caplets = 2×7

         0    0.0000    0.0033    0.2996    0.4443       NaN       NaN
         0    0.0000    0.0003    0.1134    0.2112    0.2292    0.4349

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

[PriceLC, CapletsLC] = capbyblk(OISCurve, Strike, Settle, Maturity, BlackVol,'ProjectionCurve',LiborCurve)
PriceLC = 2×1

    1.3293
    1.6329

CapletsLC = 2×7

         0    0.0000    0.0337    0.4250    0.8706       NaN       NaN
         0    0.0000    0.0052    0.1767    0.4849    0.3663    0.5998

Задайте RateSpec.

Rates = [0.0358; 0.0421; 0.0473; 0.0527; 0.0543];
ValuationDate = '15-Nov-2011';
StartDates = ValuationDate;
EndDates = {'15-Nov-2012';'15-Nov-2013';'15-Nov-2014' ;'15-Nov-2015';'15-Nov-2016'};
Compounding = 1;
RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,...
             'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [5x1 double]
            Rates: [5x1 double]
         EndTimes: [5x1 double]
       StartTimes: [5x1 double]
         EndDates: [5x1 double]
       StartDates: 734822
    ValuationDate: 734822
            Basis: 0
     EndMonthRule: 1

Задайте инструменты прописной буквы.

Settle ='15-Nov-2011';
Maturity = '15-Nov-2015';
Strike = [0.03;0.035];
Reset = 1;
Principal ={{'15-Nov-2012' 100;'15-Nov-2013' 70;'15-Nov-2014' 40;'15-Nov-2015' 10}};

Оцените прописные буквы амортизации.

Volatility = 0.10;  
Price = capbyblk (RateSpec, Strike, Settle, Maturity, Volatility,...
'Reset', Reset,'Principal', Principal)
Price = 2×1

    3.0339
    2.0141

Создайте RateSpec.

ValuationDate = 'Mar-01-2016';
EndDates = {'Mar-01-2017';'Mar-01-2018';'Mar-01-2019';'Mar-01-2020';'Mar-01-2021'};
Rates = [-0.21; -0.12; 0.01; 0.10; 0.20]/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: 736390
    ValuationDate: 736390
            Basis: 1
     EndMonthRule: 1

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

Settle = 'Jun-01-2016'; % Cap starts in 3 months.
Maturity = 'Sep-01-2016';
ShiftedBlackVolatility = 0.31;
CapRate = -0.003;  % -0.3 percent strike.
CapReset = 4;
Principal = 100000;
Shift = 0.01; % 1 percent shift.

CapPrice = capbyblk(RateSpec,CapRate,Settle,Maturity,ShiftedBlackVolatility,...
'Reset',CapReset,'ValuationDate',ValuationDate,'Principal',Principal,...
'Basis',Basis,'Shift',Shift)
CapPrice = 26.0733

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

свернуть все

Структура термина процентной ставки (пересчитанный на год и постоянно составляемый), заданный RateSpec получена из intenvset. Для получения информации о спецификации процентной ставки смотрите intenvset.

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

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

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

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

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

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

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

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

Вход Volatility не предназначается для поверхностей энергозависимости или кубов. Если вы задаете матрицу для входа Volatility, capbyblk внутренне преобразовывает его в вектор. capbyblk принимает, что колебания, заданные во входе Volatility, являются плоскими колебаниями, которые применяются одинаково к каждому из caplets.

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

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

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

Пример: [CapPrice,Caplets] = capbyblk(RateSpec,Strike,Settle,Maturity,Volatility,'Reset',CapReset,'Principal',100000,'Basis',7)

Сбросьте оплату частоты в год, заданный как NINST-by-1 вектор.

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

Отвлеченная основная сумма, заданная как NINST-by-1 вектор или NINST-by-1 массив ячеек. Когда Principal является NINST-by-1 массив ячеек, каждым элементом является NumDates-by-2 массив ячеек, где первый столбец является датами, и второй столбец является сопоставленной основной суммой. Дата указывает в последний день, что основное значение допустимо.

Используйте Principal, чтобы передать расписание, чтобы вычислить цену за прописную букву амортизации.

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

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

  •  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

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

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

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

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

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

свернуть все

Ожидаемая цена прописной буквы, возвращенной как NINST-by-1 вектор.

Caplets, возвращенный как NINST-by-NCF массив caplets, дополненного NaN s.

Больше о

свернуть все

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

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

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

Алгоритмы

свернуть все

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

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 является борьбой за переключенную версию.

Представленный в R2009a