Инструмент ценового свопа из процентного дерева Heath-Jarrow-Morton
Этот пример показывает, как оценить процентный своп с фиксированной приемной стойкой и плавающей оплатой лег. платежи производятся один раз в год, а условная основная сумма составляет $100. Значения для остальных аргументов:
Ставка купона для фиксированной стойки: 0.06 (6%)
Спред для плавающей ноги: 20 базисных точек
Дата урегулирования свопа: 01 января 2000 г.
Дата погашения свопа: 01 января 2003 г.
На основе приведенной выше информации установите необходимые аргументы и создайте LegRate
, LegType
, и LegReset
матрицы:
Settle = '01-Jan-2000'; Maturity = '01-Jan-2003'; Basis = 0; Principal = 100; LegRate = [0.06 20]; % [CouponRate Spread] LegType = [1 0]; % [Fixed Float] LegReset = [1 1]; % Payments once per year
Оцените своп с помощью HJMTree
входит в состав MAT-файла deriv.mat
. The HJMTree
структура содержит информацию о времени и форвардной ставке, необходимую для оценки инструмента.
load deriv.mat;
Использование swapbyhjm
для вычисления цены свопа.
[Price, PriceTree, CFTree] = swapbyhjm(HJMTree, LegRate,... Settle, Maturity, LegReset, Basis, Principal, LegType)
Price = 3.6923 PriceTree = FinObj: 'HJMPriceTree' tObs: [0 1 2 3 4] PBush: {1x5 cell} CFTree = FinObj: 'HJMCFTree' tObs: [0 1 2 3 4] CFBush: {[0] [1x1x2 double] [1x2x2 double] ... [1x8 double]}
Использование treeviewer
для исследования CFTree
графически и увидеть денежные потоки от свопа вдоль верхней и нижней ветвей. Положительный денежный поток указывает на приток (доход - платежи > 0), в то время как отрицательный денежный поток указывает на отток (доход - платежи < 0).
treeviewer(CFTree)
В этом примере вы продали своп (получите фиксированную ставку и плавающую ставку оплаты). Во время t = 3
если процентные ставки снизятся, ваш денежный поток будет положительным ($2,63), что означает, что вы получите эту сумму. Но если процентные ставки растут, ваш денежный поток отрицателен (- $1,58), что означает, что вы должны эту сумму.
treeviewer
диаграммы дерева цен следуют соглашению, что увеличение цен появляется на верхней ветви дерева и, таким образом, уменьшение цен появляется на нижней ветви. И наоборот, для отображения процентных ставок, снижение процентных ставок появляется в верхней ветви (цены растут) и увеличение процентных ставок в нижней ветви (цены падают).
Используя предыдущие данные, вычислите ставку свопа, которая является ставкой купона для фиксированного участка, так что цена свопа в момент = 0 равна нулю.
LegRate = [NaN 20]; [Price, PriceTree, CFTree, SwapRate] = swapbyhjm(HJMTree,... LegRate, Settle, Maturity, LegReset, Basis, Principal, LegType)
Price = 0 PriceTree = FinObj: 'HJMPriceTree' tObs: [0 1 2 3 4] PBush:{[0] [1x1x2 double] [1x2x2 double] ... [1x8 double]} CFTree = FinObj: 'HJMCFTree' tObs: [0 1 2 3 4] CFBush:{[0] [1x1x2 double] [1x2x2 double] ... [1x8 double]} SwapRate = 0.0466
Оцените амортизационный своп с помощью 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}};
Создайте дерево HJM с помощью следующих данных:
MatDates = {'1-Jan-2012'; '1-Jan-2013';'1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017'}; HJMTimeSpec = hjmtimespec(RateSpec.ValuationDate, MatDates); Volatility = [.10; .08; .06; .04]; CurveTerm = [ 1; 2; 3; 4]; HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6); HJMT = hjmtree(HJMVolSpec,RateSpec,HJMTimeSpec);
Вычислите цену амортизирующего свопа.
Price = swapbyhjm(HJMT, 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
Создайте HJM-дерево.
MatDates = {'1-Jan-2013'; '1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017';'1-Jan-2018'}; HJMTimeSpec = hjmtimespec(RateSpec.ValuationDate, MatDates); Volatility = [.10; .08; .06; .04]; CurveTerm = [ 1; 2; 3; 4]; HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6); HJMT = hjmtree(HJMVolSpec,RateSpec,HJMTimeSpec);
Рассчитать цену форвардного свопа, который начинается через год (1 января 2013 г.) и созревает через четыре года со ставкой форвардного свопа 4,25%.
Settle ='1-Jan-2012'; Maturity = '1-Jan-2017'; StartDate = '1-Jan-2013'; LegRate = [0.0425 10]; Price = swapbyhjm(HJMT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = 1.4434
Используя предыдущие данные, вычислите ставку форвардного свопа, ставку купона для фиксированного участка, так что цена форвардного свопа в момент = 0 равна нулю.
LegRate = [NaN 10];
[Price, ~,~, SwapRate] = swapbyhjm(HJMT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = 0
SwapRate = 0.0384
HJMTree
- Структура процентной ставкиДревовидная структура процентной ставки, созданная hjmtree
Типы данных: struct
LegRate
- Скорость ногСкорость ног, заданная как NINST
-by- 2
матрица с каждой строкой, заданной как одна из следующих:
[CouponRate Spread]
(с фиксированной запятой)
[Spread CouponRate]
(с фиксированной запятой)
[CouponRate CouponRate]
(фиксировано-фиксированное)
[Spread Spread]
(с плавающей запятой)
CouponRate
- десятичный годовой темп. Spread
количество базисных точек по скорости ссылки. Первый столбец представляет приемную ветвь, а второй столбец представляет платежную ветвь.
Типы данных: double
Settle
- Дата расчетаДата расчета, заданная в виде скаляра или NINST
-by- 1
вектор серийных номеров дат или векторов символов дат.
The Settle
дата для каждого свопа устанавливается в ValuationDate
дерева HJM. Аргумент swap Settle
игнорируется.
Типы данных: char
| double
Maturity
- Дата погашенияДата зрелости, заданная как NINST
-by- 1
вектор серийных номеров дат или векторов символов дат, представляющих дату погашения для каждого свопа.
Типы данных: char
| double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
[Price,PriceTree,CFTree,SwapRate] = swapbyhjm(HJMTree,LegRate,Settle,Maturity,LegReset,Basis,Principal,LegType)
'LegReset'
- Частота сброса в год для каждого свопа[1 1]
(по умолчанию) | векторЧастота сброса в год для каждого свопа, заданная как разделенная разделенными запятой парами, состоящая из 'LegReset'
и a NINST
-by- 2
вектор.
Типы данных: double
'Basis'
- базис подсчета дней, представляющая базис для каждого этапа0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
Базис отсчета дней, представляющий базис для каждой ветви, заданный как разделенная разделенными запятой парами, состоящая из 'Basis'
и a NINST
-by- 1
массив (или NINST
-by- 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
-by- 1
вектор или NINST
-by- 1
массив ячеек (или NINST
-by- 2
если Principal
отличается для каждой ветви) от условных сумм основной суммы или графиков основного значения. Для расписаний каждый элемент массива ячеек является NumDates
-by- 2
массив, где первый столбец является датами, а второй - его сопоставленным условным основным значением. Дата указывает на последний день действия основного значения.
Типы данных: cell
| double
'LegType'
- Тип ножки[1 0]
для каждого инструмента (по умолчанию) | матрица со значениями [1 1]
(фиксированно-фиксированное), [1 0]
(с фиксированной запятой), [0 1]
(с фиксированной запятой), или [0 0]
(с плавающей запятой)Тип ножки, заданный как разделенная разделенными запятой парами, состоящая из 'LegType'
и a NINST
-by- 2
матрица со значениями [1 1]
(фиксированно-фиксированное), [1 0]
(с фиксированной запятой), [0 1]
(с фиксированной запятой), или [0 0]
(с плавающей запятой). Каждая строка представляет инструмент. Каждый столбец указывает, является ли соответствующая стойка фиксированной (1
) или плавающий (0
). Эта матрица определяет интерпретацию значений, введенных в LegRate
. LegType
позволяет [1 1]
(фиксированно-фиксированное), [1 0]
(с фиксированной запятой), [0 1]
(с фиксированной запятой), или [0 0]
(с плавающей запятой) свопы
Типы данных: double
'Options'
- Структура деривативных опционов ценообразованияСтруктура опций ценообразования производных, заданная как разделенная разделенными запятой парами, состоящая из 'Options'
и структуру, полученную при использовании derivset
.
Типы данных: struct
'EndMonthRule'
- Флаг правила конца месяца для генерации дат при Maturity
является датой конца месяца для месяца, имеющего 30 или менее дней1
(в действии) (по умолчанию) | неотрицательное целое число [0,1]
Флаг правила конца месяца для генерации дат при Maturity
- дата конца месяца для месяца, имеющего 30 или менее дней, заданная как разделенная разделенными запятой парами, состоящая из 'EndMonthRule'
и неотрицательное целое число [0
, 1
] использование NINST
-by- 1
(или NINST
-by- 2
если EndMonthRule
отличается для каждой ноги).
0
= Игнорировать правило, означающее, что дата платежа всегда является одним и тем же числовым днем месяца.
1
= Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.
Типы данных: logical
'AdjustCashFlowsBasis'
- Флаг для корректировки денежных потоков на основе фактического количества дней периодаfalse
(по умолчанию) | значение 0
(false) или 1
ПравдаФлаг для корректировки денежных потоков на основе фактического количества дней периода, заданный как разделенная разделенными запятой парами, состоящая из 'AdjustCashFlowsBasis'
и a NINST
-by- 1
(или NINST
-by- 2
если AdjustCashFlowsBasis
отличается для каждой ветви) логики со значениями 0
(false) или 1
Правда.
Типы данных: logical
'BusinessDayConvention'
- Договоры о рабочих дняхactual
(по умолчанию) | вектор символов | массив ячеек из векторов символовСоглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention'
и вектор символов или N
-by- 1
(или NINST
-by- 2
если BusinessDayConvention
различается для каждой ветви) массив ячеек из векторов символов соглашений о рабочих днях. Выбор для соглашения о рабочих днях определяет режим обработки нерабочих дней. Нерабочие дни определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (например, установленные законом праздничные дни). Значения:
actual
- Нерабочие дни фактически игнорируются. Денежные потоки, которые приходятся на нерабочие дни, считаются распределенными на фактическую дату.
follow
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день.
modifiedfollow
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, то вместо этого принимается предыдущий рабочий день.
previous
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день.
modifiedprevious
- Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.
Типы данных: char
| cell
'Holidays'
- Праздничные дни, используемые в рабочих дняхholidays.m
(по умолчанию) | MATLAB® номера датПраздничные дни, используемые в вычислении рабочих дней, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays'
и номера дат MATLAB с использованием NHolidays
-by- 1
вектор.
Типы данных: double
'StartDate'
- Обмен датой фактически начинаетсяSettle
дата (по умолчанию) | серийный номер даты | вектор символовОбмен датой фактически начинается, задается как разделенная разделенными запятой парами, состоящая из 'StartDate'
и a NINST
-by- 1
вектор дат с использованием серийного номера даты или вектора символов.
Используйте этот аргумент для ценовых форвардных свопов, то есть свопов, которые начинаются в будущую дату
Типы данных: char
| double
Price
- Ожидаемые цены свопа на момент 0Ожидаемые цены свопа в момент 0, возвращенные как NINST
-by- 1
вектор.
PriceTree
- Древовидная структура цен на приборыДревовидная структура цен на приборы, возвращаемая как структура MATLAB деревьев, содержащая векторы цен на сваптирующие приборы и вектор времени наблюдения для каждого узла. Внутри PriceTree
:
PriceTree.tObs
содержит время наблюдения.
PriceTree.PBush
содержит чистые цены.
CFTree
- Обмен денежными потокамиСвоп денежных потоков, возвращаемый как древовидная структура с вектором своп денежных потоков в каждом узле. Эта структура содержит только NaN
s, поскольку с биномиальными рекомбинантными деревьями денежные потоки не могут быть точно вычислены в каждом узле дерева.
SwapRate
- Ставки, применимые к фиксированной стойкеТарифы, применимые к фиксированной стойке, возвращенные как NINST
-by- 1
вектор скоростей, применимых к фиксированной ветви, так что значения свопов "равны нулю в момент 0. Эта ставка используется при вычислении цен свопов, когда ставка задана для фиксированного участка в LegRate
является NaN
. The SwapRate
выход заполнен NaN
для тех инструментов, в которых CouponRate
не установлено в NaN
.
При амортизации свопа условный принципал периодически уменьшается, потому что он привязан к базовому финансовому инструменту со снижающимся (амортизирующим) основным балансом, таким как ипотека.
Соглашение о заключении соглашения об обмене процентными ставками на фиксированную дату в будущем.
capbyhjm
| cfbyhjm
| floorbyhjm
| hjmtree
| treeviewer
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.