Цена Европейский свапсионный инструмент с использованием модели Black
ценовые свопционы с использованием модели ценообразования опция. Price
= swaptionbyblk(RateSpec
,OptSpec
,Strike
,Settle
,ExerciseDates
,Maturity
,Volatility
)
добавляет необязательные аргументы пары "имя-значение". Price
= swaptionbyblk(___,Name,Value
)
Цена европейского свопциона, дающая держателю право войти через пять лет в трехлетний платный своп, где платится фиксированная ставка 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);
Оцените свопцион с помощью модели 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
Этот пример показывает Цену европейский свопцион с получением и оплатой ноги, который дает держателю право войти через пять лет в трехлетний платный своп, где платится фиксированная ставка 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);
Задайте аргументы свопцирования.
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
Оцените свопцион.
Price= swaptionbyblk(RateSpec,OptSpec,Strike,Settle,ExerciseDates,Maturity,Volatility, ... 'Reset',Reset,'Principal',Principal,'Basis',Basis)
Price = 1.6494
Цена европейского свопциона, дающая держателю право вступить в 5-летний получающий своп через год, где получена фиксированная ставка 3% и платится плавающая. Предположим, что 1-летний, 2-летний, 3-летний, 4-летний и 5-летний нулевые ставки составляют 3%, 3,4%, 3,7%, 3,9% и 4% с непрерывным компаундированием. Волатильность курса свопа составляет 21%, основного долга - $1000, и платежи обмениваются раз в полгода.
Создайте 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
Оцените свопцион с помощью модели 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
Задайте кривые OIS и Libor.
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
для кривых OIS и Libor.
OISCurve = intenvset('Rates',OISRates,'StartDate',Settle,'EndDates',CurveDates,'Compounding',2,'Basis',1); LiborCurve = intenvset('Rates',LiborRates,'StartDate',Settle,'EndDates',CurveDates,'Compounding',2,'Basis',1);
Определите инструменты свопцирования.
ExerciseDate = '15-Mar-2018'; Maturity = {'15-Mar-2020';'15-Mar-2023'}; OptSpec = 'call'; Strike = 0.04; BlackVol = 0.2;
Оцените инструменты свопциона с помощью структуры термина OISCurve
как для дисконтирования денежных потоков, так и для создания будущих форвардных ставок.
Price = swaptionbyblk(OISCurve, OptSpec, Strike, Settle, ExerciseDate, Maturity, BlackVol,'Reset',1)
Price = 2×1
1.0956
2.6944
Оцените инструменты свопциона с помощью структуры термина 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
Оцените свопцию отрицательным ударом с помощью модели Shitted 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
Оцените свопционы с помощью модели Shitted 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
- Структура процентных ставокСтруктура процентной ставки (в годовом исчислении и постоянно сложной), определяемая RateSpec
получен из intenvset
. Для получения информации о спецификации процентной ставки смотрите intenvset
.
Если платежная нога отличается от приемной, RateSpec
может быть NINST
-by- 2
входная переменная RateSpec
s, со вторым входом - кривая скидки для плательщика. Если задана только одна кривая, то она используется для дисконтирования обеих ног.
Типы данных: struct
OptSpec
- Определение опции 'call'
или 'put'
| массив ячеек вектора символов со значениями 'call'
или 'put'
Определение опции как 'call'
или 'put'
, заданный как NINST
-by- 1
массив ячеек из векторов символов.
A 'call'
swaption, или Payer swaption, позволяет покупателю опции заключить процентный своп, при котором покупатель опции платит фиксированную ставку и получает плавающую ставку.
A 'put'
swaption, или Receiver swaption, позволяет покупателю опции вступить в процентный своп, при котором покупатель опции получает фиксированную ставку и платит плавающую ставку.
Типы данных: char
| cell
Strike
- Значения скорости страйка-свопаЗначения скорости ударного свопа, заданные как NINST
-by- 1
вектор десятичных значений.
Типы данных: double
Settle
- Дата расчетаДата расчета (представляющая дату расчета для каждого свопциона), заданная как NINST
-by- 1
вектор серийных номеров дат или векторов символов дат. Settle
не должно быть позже ExerciseDates
.
The Settle
дата ввода для swaptionbyblk
- дата оценки, на которую рассчитывается стоимость свопциона (опция для ввода свопа). Покупатель свопциона платит эту цену в эту дату, чтобы удержать свопцион.
Типы данных: double
| char
ExerciseDates
- Даты, на которые истекает срок действия свопциона и начинается базовый свопДаты, заданные как серийные номера дат или векторов символов дат, на которые истекает срок действия свопциона и начинается базовый своп. Держатель свопциона может принять решение ввести своп в эту дату, если ситуация является благоприятной.
Для европейской опции, ExerciseDates
являются NINST
-by- 1
вектор дат упражнений. Каждая строка является расписанием для одной опции. При использовании европейской опции существует только одна ExerciseDate
на дату истечения срока действия опции.
Типы данных: double
| char
| cell
Maturity
- Дата погашения для каждого форвардного свопаДата погашения для каждого форвардного свопа, заданная как NINST
-by- 1
вектор дат с использованием серийных номеров дат или векторов символов дат.
Типы данных: double
| char
| cell
Volatility
- Годовые значения волатильностиГодовые значения волатильности, заданные как NINST
-by- 1
вектор числовых значений.
Типы данных: double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
Price = swaptionbyblk(OISCurve,OptSpec,Strike,Settle,ExerciseDate,Maturity,BlackVol,'Reset',1,'Shift',.5)
'Basis'
- Основа прибора для подсчета дней0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
Дневной базис инструмента, заданный как разделенная запятыми пара, состоящая из 'Basis'
и a NINST
-by- 1
вектор или NINST
-by- 2
матрица, представляющая базис для каждой ноги. Если Basis
является NINST
-by- 2
, первый столбец представляет принимающую ветвь, а второй столбец представляет оплаченную закону. по умолчанию 0
(фактический/фактический).
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'
- Условная основная сумма100
(по умолчанию) | числоУсловная основная сумма, заданная как разделенная разделенными запятой парами, состоящая из 'Principal'
и a NINST
-by- 1
вектор.
Типы данных: double
'Reset'
- Сброс частоты в год для базового прямого свопа1
(по умолчанию) | числоЧастота сброса в год для базового прямого свопа, заданная как разделенная разделенными запятой парами, состоящая из 'Reset'
и a NINST
-by- 1
вектор или NINST
-by- 2
матрица, представляющая частоту сброса в год для каждой ноги. Если Reset
является NINST
-by- 2
первый столбец представляет приемную ветвь, а второй столбец представляет платежную ветвь.
Типы данных: double
'ProjectionCurve'
- Кривая скорости, используемая при генерации будущих форвардных ставокProjectionCurve
не задан, тогда RateSpec
используется как для дисконтирования денежных потоков, так и для прогнозирования будущих форвардных ставок (по умолчанию) | структуреКривая скорости для использования при генерации будущих форвардных ставок, заданная как разделенная разделенными запятой парами, состоящая из 'ProjectionCurve'
и структуру, созданную с помощью intenvset
. Используйте этот необязательный вход, если прямая кривая отличается от кривой скидки.
Типы данных: struct
'Shift'
- Сдвиг десятичных чисел для сдвинутой модели Black0
(без сдвига) (по умолчанию) | положительным десятичным числомСдвиг десятичных чисел для сдвинутой модели Black, заданный как разделенная разделенными запятой парами, состоящая из 'Shift'
и скаляр или NINST
-by- 1
вектор сдвигов скорости в положительных десятичных числах. Установите этот параметр положительный сдвиг скорости в десятичных числах, чтобы добавить положительный сдвиг к ставке прямого свопа и удару, что эффективно устанавливает отрицательную нижнюю границу для скорости прямого свопа и удара. Для примера, a Shift
от 0.01
равен 1% сдвигу.
Типы данных: double
Price
- Цены на свопционы в то время 0Цены на свопционы в момент 0, возвращенные как NINST
-by- 1
вектор цен.
forward swap - это своп, который начинается с будущей даты.
Модель Shifted Black по существу совпадает с моделью Black's, за исключением того, что она моделирует движения (F + Shift) в качестве базового актива вместо F (который является ставкой прямого свопа в случае свопсов).
Эта модель позволяет отрицательные скорости с фиксированной отрицательной нижней границей, заданной величиной сдвига; то есть нулевая нижняя граница модели Блэка была сдвинута.
Где F - переднее значение, а K - удар.
Где F + Shift - прямое значение, а K + Shift - удар для сдвинутой версии.
blackvolbysabr
| bondbyzero
| capbyblk
| cfbyzero
| fixedbyzero
| floatbyzero
| floorbyblk
| intenvset
| swaptionbynormal
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.