Ценовые свопции с использованием модели оценки опционов 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около-2 входная переменная RateSpecs, причем второй ввод является кривой дисконтирования для платящей ноги. Если указана только одна кривая, то она используется для дисконтирования обеих ветвей.
Типы данных: struct
OptSpec - Определение опциона 'call' или 'put' | массив ячеек символьного вектора со значениями 'call' или 'put'Определение опции как 'call' или 'put', указано как NINSTоколо-1 клеточный массив символьных векторов.
A 'call' swaption, или Payer swaption, позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона платит фиксированную ставку и получает плавающую ставку.
A 'put' свопцион, или свопцион получателя, позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона получает фиксированную ставку и оплачивает плавающую ставку.
Типы данных: char | cell
Strike - Значения ставки страйк-свопаЗначения ставки страйк-свопа, указанные как NINSTоколо-1 вектор десятичных значений.
Типы данных: double
Settle - Дата расчетаДата балансирования (представляющая дату балансирования для каждого свопциона), указанная как NINSTоколо-1 вектор серийных номеров дат или массив ячеек векторов символов даты, объектов datetime или строковых объектов. Settle не позднее, чем ExerciseDates.
Settle дата ввода для swaptionbynormal дата оценки, на которую рассчитывается цена свопциона (опциона для заключения свопа). Покупатель свопциона оплачивает эту цену на эту дату, чтобы удержать свопцион.
Типы данных: double | char | cell | datetime | string
ExerciseDates - Даты истечения срока действия свопциона и начала базового свопаДаты истечения срока действия свопциона и начала базового свопа, указанные как NINSTоколо-1 вектор серийных номеров дат или массив ячеек векторов символов даты, объектов datetime или строковых объектов. Есть только один ExerciseDate на дату истечения срока действия опциона. Это также StartDate нижележащего прямого свопа.
Типы данных: double | char | cell | datetime | string
Maturity - Дата погашения для каждого форвардного свопаДата погашения для каждого форвардного свопа, указанная как NINSTоколо-1 вектор дат с использованием серийных номеров дат, массива ячеек векторов символов даты, объектов datetime или строковых объектов.
Типы данных: double | char | cell | datetime | string
Volatility - Значения волатильностиЗначения волатильности (для нормальной волатильности), указанные как NINSTоколо-1 вектор числовых значений.
Дополнительные сведения о стандартной модели см. в разделе Работа с отрицательными процентными ставками с использованием функций.
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
Price = swaptionbynormal(OISCurve,OptSpec,Strike,Settle,ExerciseDate,Maturity,NormalVol,'Reset',4)'Reset' - Частота сброса в год для базового прямого свопа1 (по умолчанию) | числовыеЧастота сброса в год для базового прямого свопа, указанного как пара, разделенная запятыми, состоящая из 'Reset' и NINSTоколо-1 вектор или NINSTоколо-2 матрица, представляющая частоту сброса в год для каждого лег. если Reset является NINSTоколо-2первый столбец представляет принимающую ветвь, в то время как второй столбец представляет платящую ветвь.
Типы данных: double
'Basis' - Дневная основа прибора0 (факт/факт) (по умолчанию) | целое число от 0 кому 13База подсчета дней прибора, представляющая основу, используемую при ежегодной классификации структуры входных терминов, определяемая как пара, разделенная запятыми, состоящая из: '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' - Условная основная сумма100 (по умолчанию) | числовыеУсловная основная сумма, указанная как разделенная запятыми пара, состоящая из 'Principal' и NINSTоколо-1 вектор.
Типы данных: double
'ProjectionCurve' - Кривая ставки, используемая при прогнозировании будущих денежных потоковProjectionCurve не указан, то RateSpec используется как для дисконтирования денежных потоков, так и для прогнозирования будущих денежных потоков (по умолчанию) | structureКривая ставки, используемая при проецировании будущих денежных потоков, указанная как пара, разделенная запятыми, состоящая из 'ProjectionCurve' и структура кривой ставки. Эта структура должна быть создана с помощью intenvset. Используйте этот дополнительный ввод, если прямая кривая отличается от кривой скидки.
Типы данных: struct
Price - Цены для свопционов в момент времени 0Цены для свопционов в момент времени 0, возвращенные как NINSTоколо-1 вектор цен.
Свопцион Колл или Свопцион плательщика позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона платит фиксированную ставку и получает плавающую ставку.
Put swaption или Receiver swaption позволяет покупателю опциона ввести процентный своп, в котором покупатель опциона получает фиксированную ставку и оплачивает плавающую ставку.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.