Инструмент ценового свопа из дерева процентных ставок Hull-White
Цена процентного свопа с фиксированным этапом получения и плавающим платежным законом. Платежи производятся один раз в год, и условная основная сумма составляет 100 долларов США. Остальные аргументы имеют следующие значения:
Купонная ставка для фиксированной трассы: 0,06 (6%)
Спред для плавающей трассы: 20 базисных точек
Дата взаиморасчета: 01 января 2005 г.
Дата погашения свопа: 01 января 2008 г.
На основе приведенной выше информации задайте требуемые аргументы и создайте LegRate, LegType, и LegReset матрицы:
Settle = '01-Jan-2005'; Maturity = '01-Jan-2008'; Basis = 0; Principal = 100; LegRate = [0.06 20]; % [CouponRate Spread] LegType = [1 0]; % [Fixed Float] LegReset = [1 1]; % Payments once per year
Оценить своп с помощью HWTree включено в MAT-файл deriv.mat. HWTree структура содержит информацию о времени и форвардной ставке, необходимую для оценки инструмента.
load deriv.mat;Использовать swapbyhw для вычисления цены свопа.
[Price, PriceTree, SwapRate] = swapbyhw(HWTree, LegRate, ... Settle, Maturity, LegReset, Basis, Principal, LegType)
Warning: Swaps are valued at Tree ValuationDate rather than Settle
Price = 5.9109
PriceTree = struct with fields:
FinObj: 'HWPriceTree'
PTree: {1x5 cell}
tObs: [0 1 2 3 4]
Connect: {[2] [2 3 4] [2 2 3 4 4]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
SwapRate = NaN
Используя предыдущие данные, вычислите ставку свопа, которая является ставкой купона для фиксированной трассы, так что цена свопа в момент времени = 0 равна нулю.
LegRate = [NaN 20]; [Price, PriceTree, SwapRate] = swapbyhw(HWTree, LegRate, ... Settle, Maturity, LegReset, Basis, Principal, LegType)
Warning: Swaps are valued at Tree ValuationDate rather than Settle
Price = 1.4211e-14
PriceTree = struct with fields:
FinObj: 'HWPriceTree'
PTree: {1x5 cell}
tObs: [0 1 2 3 4]
Connect: {[2] [2 3 4] [2 2 3 4 4]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
SwapRate = 0.0438
Цена амортизирующего свопа с использованием Principal входной аргумент для определения графика амортизации.
Создать RateSpec.
Rates = 0.035; ValuationDate = '1-Jan-2011'; StartDates = ValuationDate; EndDates = '1-Jan-2017'; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: 0.8135
Rates: 0.0350
EndTimes: 6
StartTimes: 0
EndDates: 736696
StartDates: 734504
ValuationDate: 734504
Basis: 0
EndMonthRule: 1
Создайте инструмент подкачки, используя следующие данные:
Settle ='1-Jan-2011'; Maturity = '1-Jan-2017'; Period = 1; LegRate = [0.04 10];
Определите график амортизации свопа.
Principal ={{'1-Jan-2013' 100;'1-Jan-2014' 80;'1-Jan-2015' 60;'1-Jan-2016' 40; '1-Jan-2017' 20}};Создайте дерево аппаратных средств, используя следующие данные:
VolDates = ['1-Jan-2012'; '1-Jan-2013';'1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017']; VolCurve = 0.1; AlphaDates = '01-01-2017'; AlphaCurve = 0.1; HWVolSpec = hwvolspec(RateSpec.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTimeSpec = hwtimespec(RateSpec.ValuationDate, VolDates, Compounding); HWT = hwtree(HWVolSpec, RateSpec, HWTimeSpec);
Вычислите цену амортизирующего свопа.
Price = swapbyhw(HWT, LegRate, Settle, Maturity, 'Principal', Principal)Price = 1.4574
Цена форвардного свопа с использованием StartDate входной аргумент для определения будущей даты начала свопа.
Создать RateSpec.
Rates = 0.0374; ValuationDate = '1-Jan-2012'; StartDates = ValuationDate; EndDates = '1-Jan-2018'; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: 0.8023
Rates: 0.0374
EndTimes: 6
StartTimes: 0
EndDates: 737061
StartDates: 734869
ValuationDate: 734869
Basis: 0
EndMonthRule: 1
Построение дерева аппаратных средств.
VolDates = {'1-Jan-2013'; '1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017';'1-Jan-2018'};
VolCurve = 0.1;
AlphaDates = '01-01-2018';
AlphaCurve = 0.1;
HWVolSpec = hwvolspec(RateSpec.ValuationDate, VolDates, VolCurve,...
AlphaDates, AlphaCurve);
HWTimeSpec = hwtimespec(RateSpec.ValuationDate, VolDates, Compounding);
HWT = hwtree(HWVolSpec, RateSpec, HWTimeSpec);Рассчитайте цену форвардного свопа, который начинается через год (1 января 2013 г.) и созревает через четыре года со ставкой форвардного свопа 4,25%.
Settle ='1-Jan-2012'; Maturity = '1-Jan-2017'; StartDate = '1-Jan-2013'; LegRate = [0.0425 10]; Price = swapbyhw(HWT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = 1.4434
Используя предыдущие данные, вычислите ставку прямого свопа, ставку купона для фиксированной трассы, так что цена прямого свопа в момент времени = 0 равна нулю.
LegRate = [NaN 10];
[Price, ~,SwapRate] = swapbyhw(HWT, LegRate, Settle, Maturity, 'StartDate', StartDate)Price = 4.2633e-14
SwapRate = 0.0384
HWTree - Структура процентных ставокДревовидная структура процентных ставок, созданная hwtree
Типы данных: struct
LegRate - Скорость движения ногСкорость ноги, указанная как NINSTоколо-2 с каждой строкой, определенной как одна из следующих:
[CouponRate Spread] (фиксированный поплавок)
[Spread CouponRate] (поплавковый)
[CouponRate CouponRate] (фиксированный-фиксированный)
[Spread Spread] (поплавок-поплавок)
CouponRate - десятичная годовая ставка. Spread - количество базисных пунктов над эталонной скоростью. Первый столбец представляет принимающую ветвь, а второй столбец - платящую ветвь.
Типы данных: double
Settle - Дата расчетаДата расчета, указанная как скаляр или NINSTоколо-1 вектор серийных номеров дат или векторы символов дат.
Settle для каждого свопа устанавливается дата ValuationDate дерева аппаратных средств. Аргумент подкачки Settle игнорируется.
Типы данных: char | double
Maturity - Дата погашенияДата погашения, указанная как NINSTоколо-1 вектор серийных номеров дат или векторы символов дат, представляющие дату погашения для каждого свопа.
Типы данных: char | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
[Price,PriceTree,CFTree,SwapRate] = swapbyhw(HWTree,LegRate,Settle,Maturity,LegReset,Basis,Principal,LegType)'LegReset' - Частота сброса в год для каждого свопа[1 1] (по умолчанию) | векторЧастота сброса в год для каждого свопа, указанная как пара, разделенная запятыми, состоящая из 'LegReset' и NINSTоколо-2 вектор.
Типы данных: double
'Basis' - Основа подсчета дней, представляющая основу для каждого этапа0 (факт/факт) (по умолчанию) | целое число от 0 кому 13Базисный номер дня, представляющий базис для каждой ветви, определяемый как пара, разделенная запятыми, состоящая из 'Basis' и NINSTоколо-1 массив (или NINSTоколо-2 если Basis отличается для каждой ветви).
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' и вектор или клеточный массив.
Principal принимает NINSTоколо-1 вектор или NINSTоколо-1 массив ячеек (или NINSTоколо-2 если Principal отличается для каждой ветви) условных сумм основной суммы или графиков основной стоимости. Для расписаний каждый элемент массива ячеек является NumDatesоколо-2 массив, где первый столбец - даты, а второй столбец - связанное с ним условное основное значение. Дата указывает последний день, когда действительным является основное значение.
Типы данных: cell | double
'LegType' - Тип ноги[1 0] для каждого прибора (по умолчанию) | матрица со значениями [1 1] (фиксированный-фиксированный), [1 0] (фиксированный поплавок), [0 1] (поплавковый), или [0 0] (поплавок-поплавок)Тип ножки, указанный как разделенная запятыми пара, состоящая из 'LegType' и NINSTоколо-2 матрица со значениями [1 1] (фиксированный-фиксированный), [1 0] (фиксированный поплавок), [0 1] (поплавковый), или [0 0] (поплавок-поплавок). Каждая строка представляет инструмент. Каждый столбец указывает, является ли соответствующая ветвь фиксированной (1) или плавающий (0). Эта матрица определяет интерпретацию значений, введенных в LegRate. LegType позволяет [1 1] (фиксированный-фиксированный), [1 0] (фиксированный поплавок), [0 1] (поплавковый), или [0 0] (float-float) свопы
Типы данных: double
'Options' - Структура опционов на деривативыСтруктура опционов ценообразования деривативов, указанная как пара, разделенная запятыми, состоящая из 'Options' и структура, полученная при использовании derivset.
Типы данных: struct
'EndMonthRule' - флаг правила конца месяца для генерации дат, когда Maturity - дата окончания месяца, имеющего 30 или менее дней1 (в действии) (по умолчанию) | неотрицательное целое число [0,1]Флаг правила конца месяца для генерации дат при Maturity - дата окончания месяца, имеющая 30 или менее дней, указанная как пара, разделенная запятыми, состоящая из 'EndMonthRule' и неотрицательное целое число [0, 1] с использованием NINSTоколо-1 (или NINSTоколо-2 если EndMonthRule отличается для каждой ветви).
0 = Игнорировать правило, означающее, что дата платежа всегда совпадает с числовым днем месяца.
1 = Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.
Типы данных: logical
'AdjustCashFlowsBasis' - Флажок для корректировки денежных потоков на основе фактического подсчета дней периодаfalse (по умолчанию) | значение 0 (false) или 1 ПравдаФлажок для корректировки денежных потоков на основе фактического количества дней периода, указанного как пара, разделенная запятыми, состоящая из 'AdjustCashFlowsBasis' и NINSTоколо-1 (или NINSTоколо-2 если AdjustCashFlowsBasis отличается для каждой ветви) логики со значениями 0 (false) или 1 Правда.
Типы данных: logical
'BusinessDayConvention' - Соглашения по рабочим днямactual
(по умолчанию) | символьный вектор | массив ячеек символьных векторовСоглашения о рабочих днях, указанные как пара, разделенная запятыми, состоящая из 'BusinessDayConvention' и вектор символа или Nоколо-1 (или NINSTоколо-2 если BusinessDayConvention отличается для каждого участка) массив ячеек символьных векторов соглашений о рабочих днях. Выбор соглашения о рабочих днях определяет, как обрабатываются нерабочие дни. Нерабочие дни определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (например, официальные праздники). Значения:
actual - Нерабочие дни фактически игнорируются. Предполагается, что денежные потоки, приходящиеся на нерабочие дни, распределяются на фактическую дату.
follow - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить на следующий рабочий день.
modifiedfollow - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, вместо него используется предыдущий рабочий день.
previous - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить в предыдущий рабочий день.
modifiedprevious - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить в предыдущий рабочий день. Однако если предыдущий рабочий день находится в другом месяце, вместо него принимается следующий рабочий день.
Типы данных: char | cell
'Holidays' - Праздники, используемые в вычислительных рабочих дняхholidays.m (по умолчанию) | Номера дат MATLAB ®Праздники, используемые в вычислительных рабочих днях, указанные как пара, разделенная запятыми, состоящая из 'Holidays' и номера дат MATLAB с использованием NHolidaysоколо-1 вектор.
Типы данных: double
'StartDate' - Дата фактического начала свопаSettle дата (по умолчанию) | серийный номер даты | символьный векторДата фактического начала свопа, указанная как пара, разделенная запятыми, состоящая из 'StartDate' и NINSTоколо-1 вектор дат с использованием серийного номера даты или символьного вектора.
Используйте этот аргумент для ценовых свопов, то есть свопов, которые начинаются в будущем
Типы данных: char | double
Price - Ожидаемые цены свопа в момент времени 0Ожидаемые цены свопа в момент времени 0, возвращенные как NINSTоколо-1 вектор.
PriceTree - Древовидная структура цен на инструментыДревовидная структура цен инструментов, возвращаемая как структура MATLAB деревьев, содержащих векторы цен инструментов свопциона и вектор времени наблюдения для каждого узла. В PriceTree:
PriceTree.PTree содержит чистые цены.
PriceTree.tObs содержит время наблюдения.
PriceTree.Connect содержит векторы связности. Каждый элемент в массиве ячеек описывает, как узлы этого уровня соединяются со следующим. Для данного уровня дерева существуют NumNodes элементы в векторе, и они содержат индекс узла на следующем уровне, к которому подключается средняя ветвь. Вычитание 1 из этого значения указывает на то, к чему подключается восходящая ветвь, и добавление 1 указывает на то, к чему подключается нисходящая ветвь.
PriceTree.Probs содержит массивы вероятностей. Каждый элемент массива ячеек содержит вероятности перехода вверх, посередине и вниз для каждого узла уровня.
CFTree - Обменять денежные потокиДенежные потоки свопа, возвращаемые в виде древовидной структуры с вектором денежных потоков свопа в каждом узле. Эта структура содержит только NaNs, поскольку при биномиальной рекомбинации деревьев денежные потоки не могут быть точно вычислены в каждом узле дерева.
SwapRate - Ставки, применимые к фиксированной ветвиСтавки, применимые к фиксированной ветви, возвращаемые как NINSTоколо-1 вектор ставок, применимых к фиксированной ветви, так что значения свопов равны нулю в момент времени 0. Эта ставка используется при расчете цен свопов, когда ставка указана для фиксированной трассы в LegRate является NaN. SwapRate вывод дополнен NaN для тех документов, в которых CouponRate не имеет значение NaN.
В амортизирующем свопе условная основная сумма периодически уменьшается, поскольку она привязана к базовому финансовому инструменту с уменьшающимся (амортизирующим) основным балансом, таким как ипотека.
Соглашение о заключении соглашения о процентном свопе на фиксированную дату в будущем.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.