Ценовые свопционы с использованием модели Normal или Bachelier опции ценообразования
ценовые свопционы с использованием модели ценообразования Normal или Bachelier опции.Price
= swaptionbynormal(RateSpec
,OptSpec
,Strike
,Settle
,ExerciseDates
,Maturity
,Volatility
)
добавляет необязательные аргументы пары "имя-значение". 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
swaptionbynormal
и Сравнение с swaptionbyblk
Определите 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
- Структура процентных ставокСтруктура процентной ставки (в годовом исчислении и постоянно сложной), определяемая 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
вектор серийных номеров дат или массив ячеек векторов символов даты, объектов datetime или строковых объектов. Settle
не должно быть позже ExerciseDates
.
The Settle
дата ввода для swaptionbynormal
- дата оценки, на которую рассчитывается стоимость свопциона (опция для ввода свопа). Покупатель свопциона платит эту цену в эту дату, чтобы удержать свопцион.
Типы данных: double
| char
| cell
| datetime
| string
ExerciseDates
- Даты, на которые истекает срок действия свопциона и начинается базовый свопДаты, на которые истекает срок действия свопциона и начинается базовый своп, заданные как NINST
-by- 1
вектор серийных номеров дат или массив ячеек векторов символов даты, объектов datetime или строковых объектов. Есть только один ExerciseDate
на дату истечения срока действия опции. Это также StartDate
базового прямого свопа.
Типы данных: double
| char
| cell
| datetime
| string
Maturity
- Дата погашения для каждого форвардного свопаДата погашения для каждого форвардного свопа, заданная как NINST
-by- 1
вектор дат с использованием серийных номеров дат, массива ячеек векторов символов даты, объектов datetime или строковых объектов.
Типы данных: double
| char
| cell
| datetime
| string
Volatility
- Значения волатильностиЗначения волатильности (для нормальной волатильности), заданные как 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'
- Сброс частоты в год для базового прямого свопа1
(по умолчанию) | числоЧастота сброса в год для базового прямого свопа, заданная как разделенная разделенными запятой парами, состоящая из 'Reset'
и a NINST
-by- 1
вектор или NINST
-by- 2
матрица, представляющая частоту сброса в год для каждой ноги. Если Reset
является NINST
-by- 2
первый столбец представляет приемную ветвь, а второй столбец представляет платежную ветвь.
Типы данных: double
'Basis'
- Основа прибора для подсчета дней0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
Основание отсчета дней инструмента, представляющее базис, используемый при аннуализации структуры входного термина, заданный как разделенная разделенными запятой парами, состоящая из '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'
- Условная основная сумма100
(по умолчанию) | числоУсловная основная сумма, заданная как разделенная разделенными запятой парами, состоящая из 'Principal'
и a NINST
-by- 1
вектор.
Типы данных: double
'ProjectionCurve'
- Кривая ставок, используемая при прогнозировании будущих денежных потоковProjectionCurve
не задан, тогда RateSpec
используется как для дисконтирования денежных потоков, так и для прогнозирования будущих денежных потоков (по умолчанию) | структуреКривая ставки, которая будет использоваться при прогнозировании будущих денежных потоков, заданная как разделенная разделенными запятой парами, состоящая из 'ProjectionCurve'
и структуру кривой скорости. Эта структура должна быть создана с помощью intenvset
. Используйте этот необязательный вход, если прямая кривая отличается от кривой скидки.
Типы данных: struct
Price
- Цены на свопционы в то время 0Цены на свопционы в момент 0, возвращенные как NINST
-by- 1
вектор цен.
Свопцион Call swaption или Плательщика позволяет опции покупателю заключить процентный своп, в котором покупатель опции платит фиксированную ставку и получает плавающую ставку.
Свопцион Put swaption или приемник позволяет покупателю ввести процентный своп, при котором покупатель опции получает фиксированную ставку и платит плавающую ставку.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.