Financial Instruments Toolbox™ поддерживает следующие деревья процентной ставки:
Black-Derman-Toy (BDT)
Черный-Karasinski (BK)
Хит-Джарроу-Мортон (HJM)
Белый как оболочка (HW)
Кокс-Инджерсолл-Росс (CIR)
Модель Хита-Джарроу-Мортона является одной из наиболее широко используемых моделей для оценки производных процентной ставки. Модель полагает, что данная начальная структура термина процентных ставок и спецификация энергозависимости форвардных курсов создают дерево, представляющее эволюцию процентных ставок, на основе статистического процесса. Для дальнейшего объяснения см. книгу Modelling Fixed Income Securities и Опции Процентной ставки Роберта А. Джарроу.
Модель Black-Derman-Toy является другой аналитической моделью, обычно используемой для оценки производных процентной ставки. Модель полагает, что данная начальная нулевая структура термина уровня процентных ставок и спецификация колебаний урожая длинных уровней создают дерево, представляющее эволюцию процентных ставок. Для дальнейшего объяснения смотрите бумагу “Одна Факторная модель Процентных ставок и ее Приложения к Опциям Казначейской облигации” Черного Фишера, Эмануэль Дермен и Уильям Той.
Модель Hull-White включает начальную структуру термина процентных ставок и структуру термина энергозависимости, чтобы создать дерево переобъединения трехчлена коротких уровней. Получившееся дерево используется, чтобы оценить зависимые процентной ставкой ценные бумаги. Реализация модели Hull-White в программном обеспечении Financial Instruments Toolbox ограничивается одним фактором.
Модель Black-Karasinski является одним фактором, логарифмически нормальной версией модели Hull-White.
Для получения дополнительной информации о моделях Hull-White и Black-Karasinski см. книгу Опции, фьючерсы и Другие Производные Джоном К. Хуллом.
Дерево форвардных курсов является основной единицей, представляющей эволюцию процентных ставок в установленный срок времени. Этот раздел объясняет, как создать дерево форвардного курса, использующее Financial Instruments Toolbox.
Чтобы избежать бесполезного повторения, этот документ использует модели HJM и BDT, чтобы проиллюстрировать создание и использование деревьев процентной ставки. Модели HW и BK подобны модели BDT. Где конкретные различия существуют, они документируются в Древовидные структуры BK и HW.
Функциями MATLAB®, которые создают деревья уровня, является hjmtree
и bdttree
. Функция hjmtree
создает структуру, HJMTree
, содержа время и информацию о форвардном курсе для густого дерева. Функция bdttree
создает подобную структуру, BDTTree
, для повторно объединяющегося дерева.
Эта структура является автономным модулем, который включает дерево уровней (найденный в поле FwdTree
структуры) и энергозависимость, уровень и спецификации времени, используемые в создании этого дерева.
Эти функции берут три структуры в качестве входных параметров:
Модель VolSpec
энергозависимости. (См. Определение Модели Энергозависимости (VolSpec).)
Структура термина процентной ставки RateSpec
. (См. Определение Структуры Термина Процентной ставки (RateSpec).)
Древовидное размещение времени TimeSpec
. (См. Определение Временной структуры (TimeSpec).)
Простой способ визуализировать любые деревья, которые вы создаете, с функцией treeviewer
, которая отображает деревья графическим способом. Смотрите Графическое представление Деревьев для получения информации о treeviewer
.
Синтаксисом вызова для hjmtree
является HJMTree = hjmtree(VolSpec, RateSpec, TimeSpec)
.
Точно так же синтаксисом вызова для bdttree
является BDTTree = bdttree(VolSpec, RateSpec, TimeSpec)
.
Каждая из этих функций требует VolSpec
, RateSpec
и входных параметров TimeSpec
:
VolSpec
является структурой, которая задает процесс энергозависимости форвардного курса. Вы создаете VolSpec
с помощью или функций hjmvolspec
или bdtvolspec
.
Функция hjmvolspec
поддерживает спецификацию до трех факторов. Это обрабатывает эти модели для энергозависимости структуры термина процентной ставки:
Постоянный
Стационарный
Экспоненциал
Вашичек
Пропорциональный
Одна факторная модель принимает, что структура термина интереса затронута одним источником неуверенности. Слияние нескольких факторов позволяет вам указывать, что различные типы переключают на нижний регистр форму и местоположение структуры процентной ставки. Смотрите hjmvolspec
для деталей.
Функция bdtvolspec
поддерживает только один фактор энергозависимости. Энергозависимость остается постоянной между парами узлов на дереве. Вы предоставляете входные значения энергозависимости в векторе десятичных значений. Смотрите bdtvolspec
для деталей.
RateSpec
является спецификацией процентной ставки начальной кривой уровня. Вы создаете эту структуру с функциональным intenvset
. (См. Моделирование Структуры Термина Процентной ставки.)
TimeSpec
является древовидной спецификацией размещения времени. Вы создаете эту переменную с функциями hjmtimespec
или bdttimespec
. Это представляет отображение между временами уровня и датами уровня заключения в кавычки уровня. Эта структура косвенно определяет количество уровней в дереве.
Поскольку HJM поддерживает мультифактор (до 3) модели энергозависимости, в то время как BDT (также, BK и HW) поддерживает только один фактор энергозависимости, hjmvolspec
и функции bdtvolspec
требуют различных входных параметров и генерируют немного отличающиеся выходные параметры. Для примеров смотрите Создание Модели Энергозависимости HJM. Для примеров BDT смотрите Создание Модели Энергозависимости BDT.
Функциональный hjmvolspec
генерирует структуру VolSpec
, который задает процесс энергозависимости используемый в создании деревьев форвардного курса. В этом капитале контекста T представляет время начала форвардного курса, и t представляет время наблюдения. Процесс энергозависимости может быть создан из комбинации факторов, заданных последовательно в вызове функции, которая создает его. Каждая факторная спецификация запускается с вектора символов, задающего имя фактора, сопровождаемого подходящими параметрами.
Пример Спецификации Энергозависимости HJM. Рассмотрите пример, который использует один фактор, а именно, фактор постоянной сигмы. Спецификация постоянного множителя требует только одного параметра, значения . В этом случае значение соответствует 0.10.
HJMVolSpec = hjmvolspec('Constant', 0.10)
HJMVolSpec = FinObj: 'HJMVolSpec' FactorModels: {'Constant'} FactorArgs: {{1x1 cell}} SigmaShift: 0 NumFactors: 1 NumBranch: 2 PBranch: [0.5000 0.5000] Fact2Branch: [-1 1]
Поле NumFactors
структуры VolSpec
, VolSpec.NumFactors = 1
, показывает, что ряд факторов, используемый, чтобы сгенерировать VolSpec
, был тем. Поле FactorModels
указывает, что это - фактор Constant
, и поле NumBranches
указывает на количество ответвлений. Как следствие каждый узел получившегося дерева имеет два ответвления, одно восстановление работоспособности и другую потерю работоспособности.
Считайте теперь 2D факторный процесс энергозависимости сделанным из пропорционального фактора и экспоненциального фактора.
% Exponential factor Sigma_0 = 0.1; Lambda = 1; % Proportional factor CurveProp = [0.11765; 0.08825; 0.06865]; CurveTerm = [ 1 ; 2 ; 3 ]; % Build VolSpec HJMVolSpec = hjmvolspec('Proportional', CurveProp, CurveTerm,... 1e6,'Exponential', Sigma_0, Lambda)
HJMVolSpec = FinObj: 'HJMVolSpec' FactorModels: {'Proportional' 'Exponential'} FactorArgs: {{1x3 cell} {1x2 cell}} SigmaShift: 0 NumFactors: 2 NumBranch: 3 PBranch: [0.2500 0.2500 0.5000] Fact2Branch: [2x3 double]
Вывод показывает, что спецификация энергозависимости была сгенерирована с помощью двух факторов. Дерево имеет три ответвления на узел. Каждое ответвление имеет вероятности 0,25, 0.25, и 0.5, идя сверху донизу.
Функциональный bdtvolspec
генерирует структуру VolSpec
, который задает процесс энергозависимости. Функция требует трех входных параметров:
Дата оценки ValuationDate
Даты окончания энергозависимости урожая VolDates
Значения энергозависимости урожая VolCurve
Может быть включен дополнительный четвертый аргумент InterpMethod
, задавая метод интерполяции.
Синтаксис, используемый для вызова bdtvolspec
:
BDTVolSpec = bdtvolspec(ValuationDate, VolDates, VolCurve,... InterpMethod)
где:
ValuationDate
является первой датой наблюдения в дереве.
VolDates
является вектором дат, представляющих даты окончания энергозависимости урожая.
VolCurve
является вектором значений энергозависимости урожая.
InterpMethod
является методом интерполяции, чтобы использовать. Значением по умолчанию является linear
.
Пример Спецификации Энергозависимости BDT. Рассмотрите следующий пример:
ValuationDate = datenum('01-01-2000'); EndDates = datenum(['01-01-2001'; '01-01-2002'; '01-01-2003'; '01-01-2004'; '01-01-2005']); Volatility = [.2; .19; .18; .17; .16];
Используйте bdtvolspec
, чтобы создать спецификацию энергозависимости. Поскольку никакой метод интерполяции явным образом не задан, функция использует значение по умолчанию linear
.
BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Volatility)
BDTVolSpec = FinObj: 'BDTVolSpec' ValuationDate: 730486 VolDates: [5x1 double] VolCurve: [5x1 double] VolInterpMethod: 'linear'
RateSpec
структуры является структурой термина интереса, которая задает начальную спецификацию форвардного курса, от которой выведены древовидные уровни. Моделирование Структуры Термина Процентной ставки объясняет, как создать эти структуры с помощью функционального intenvset
, учитывая процентные ставки, запуск и конечные даты каждого уровня и значение соединения.
Рассмотрите следующий пример:
Compounding = 1; Rates = [0.02; 0.02; 0.02; 0.02]; StartDates = ['01-Jan-2000'; '01-Jan-2001'; '01-Jan-2002'; '01-Jan-2003']; EndDates = ['01-Jan-2001'; '01-Jan-2002'; '01-Jan-2003'; '01-Jan-2004']; ValuationDate = '01-Jan-2000'; RateSpec = intenvset('Compounding',1,'Rates', Rates,... 'StartDates', StartDates, 'EndDates', EndDates,... 'ValuationDate', ValuationDate)
RateSpec = FinObj: 'RateSpec' Compounding: 1 Disc: [4x1 double] Rates: [4x1 double] EndTimes: [4x1 double] StartTimes: [4x1 double] EndDates: [4x1 double] StartDates: [4x1 double] ValuationDate: 730486 Basis: 0 EndMonthRule: 1
Используйте функциональный datedisp
, чтобы исследовать даты, заданные в переменной RateSpec
. Например:
datedisp(RateSpec.ValuationDate) 01-Jan-2000
TimeSpec
)Структура TimeSpec
задает временную структуру для дерева процентной ставки. Эта структура задает отображение между временами наблюдения на каждом уровне дерева и соответствующих дат.
TimeSpec
создается с помощью или hjmtimespec
или функции bdttimespec
. Эти функции требуют трех входных параметров:
Дата оценки ValuationDate
Дата погашения Maturity
Уровень соединения Compounding
Например, синтаксис, используемый для вызова hjmtimespec
,
TimeSpec = hjmtimespec(ValuationDate, Maturity, Compounding)
где:
ValuationDate
является первой датой наблюдения в дереве.
Maturity
является вектором дат, представляющих даты потока наличности дерева. Любые инструментальные потоки наличности с этими сроками платежа падают на древовидные узлы.
Compounding
является частотой, на которой уровни составлены, когда пересчитано на год.
При вызывании функций создания спецификации времени с теми же данными, используемыми, чтобы создать структуру термина процентной ставки, RateSpec
создает структуру, которая задает размещение времени для дерева.
Пример Спецификации Времени HJM. Рассмотрите следующий пример:
Maturity = EndDates; HJMTimeSpec = hjmtimespec(ValuationDate, Maturity, Compounding)
HJMTimeSpec = FinObj: 'HJMTimeSpec' ValuationDate: 730486 Maturity: [4x1 double] Compounding: 1 Basis: 0 EndMonthRule: 1
Сроки платежа задали, когда создание TimeSpec
не должно совпадать с EndDates
интервалов уровня в RateSpec
. Поскольку TimeSpec
задает отображение даты времени дерева, уровни в RateSpec
интерполированы, чтобы получить начальные уровни со сроками платежа, равными тем в TimeSpec
.
Создание Спецификации Времени BDT. Рассмотрите следующий пример:
Maturity = EndDates; BDTTimeSpec = bdttimespec(ValuationDate, Maturity, Compounding)
BDTTimeSpec = FinObj: 'BDTTimeSpec' ValuationDate: 730486 Maturity: [4x1 double] Compounding: 1 Basis: 0 EndMonthRule: 1
Используйте VolSpec
, RateSpec
и TimeSpec
, который вы ранее создали, когда входные параметры к функциям раньше создавали деревья BDT и HJM.
% Reset the volatility factor to the Constant case HJMVolSpec = hjmvolspec('Constant', 0.10); HJMTree = hjmtree(HJMVolSpec, RateSpec, HJMTimeSpec)
HJMTree = FinObj: 'HJMFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1 2 3] TFwd: {[4x1 double] [3x1 double] [2x1 double] [3]} CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]} FwdTree:{[4x1 double][3x1x2 double][2x2x2 double][1x4x2 double]}
Теперь используйте ранее вычисленные значения для VolSpec
, RateSpec
и TimeSpec
, как введено к функциональному bdttree
, чтобы создать дерево BDT.
BDTTree = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec)
BDTTree = FinObj: 'BDTFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1.00 2.00 3.00] TFwd: {[4x1 double] [3x1 double] [2x1 double] [3.00]} CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4.00]} FwdTree: {[1.02] [1.02 1.02] [1.01 1.02 1.03] [1.01 1.02 1.02 1.03]}
При работе с моделями Financial Instruments Toolbox использует деревья, чтобы представлять форвардные курсы, цены, и так далее. На высшем уровне этим деревьям перенесли структуры их. Структуры инкапсулируют информацию, запрошенную, чтобы интерпретировать полностью информацию, содержавшуюся в дереве.
Рассмотрите этот пример, который использует процентную ставку и данные о портфеле в MAT-файле deriv.mat
, включенный в тулбокс.
Загрузите данные в рабочее пространство MATLAB.
load deriv.mat
Отобразите список переменных, загруженных из MAT-файла.
whos
Name Size Bytes Class Attributes BDTInstSet 1x1 15956 struct BDTTree 1x1 5138 struct BKInstSet 1x1 15946 struct BKTree 1x1 5904 struct CRRInstSet 1x1 12434 struct CRRTree 1x1 5058 struct EQPInstSet 1x1 12434 struct EQPTree 1x1 5058 struct HJMInstSet 1x1 15948 struct HJMTree 1x1 5838 struct HWInstSet 1x1 15946 struct HWTree 1x1 5904 struct ITTInstSet 1x1 12438 struct ITTTree 1x1 8862 struct ZeroInstSet 1x1 10282 struct ZeroRateSpec 1x1 1580 struct
Можно теперь исследовать в некоторых деталях содержимое структуры HJMTree
, содержавшейся в этом файле.
HJMTree
HJMTree = FinObj: 'HJMFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1 2 3] TFwd: {[4x1 double] [3x1 double] [2x1 double] [3]} CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]} FwdTree:{[4x1 double][3x1x2 double][2x2x2 double][1x4x2 double]}
FwdTree
содержит фактическое дерево форвардного курса. MATLAB представляет его как массив ячеек с каждым элементом массива ячеек, содержащим древовидный уровень.
Другие поля содержат другую информацию, относящуюся к интерпретации значений в FwdTree
. Самым важным является VolSpec
, TimeSpec
и RateSpec
, которые содержат энергозависимость, временную структуру и информацию о структуре уровня соответственно.
Первый Узел. Наблюдайте форвардные курсы в FwdTree
. Первый узел представляет дату оценки, tObs = 0
.
HJMTree.FwdTree{1}
ans = 1.0356 1.0468 1.0523 1.0563
Financial Instruments Toolbox использует обратное дисконтное обозначение для форвардных курсов в дереве. Обратная скидка представляет фактор, которым текущее значение актива умножается, чтобы найти его будущее значение. В целом этими прямыми факторами являются обратные величины коэффициентов дисконтирования.
Пристально смотрите на структуру RateSpec
, используемую в генерации этого дерева, чтобы видеть, где эти значения происходят. Расположите значения в едином массиве.
[HJMTree.RateSpec.StartTimes HJMTree.RateSpec.EndTimes... HJMTree.RateSpec.Rates]
ans = 0 1.0000 0.0356 1.0000 2.0000 0.0468 2.0000 3.0000 0.0523 3.0000 4.0000 0.0563
Если вы находите соответствующие обратные скидки процентных ставок в третьем столбце, у вас есть значения в первом узле дерева. Можно превратить процентные ставки в обратные скидки с помощью функционального rate2disc
.
Disc = rate2disc(HJMTree.TimeSpec.Compounding,... HJMTree.RateSpec.Rates, HJMTree.RateSpec.EndTimes,... HJMTree.RateSpec.StartTimes); FRates = 1./Disc
FRates = 1.0356 1.0468 1.0523 1.0563
Второй Узел. Второй узел представляет отличное время наблюдения, tObs = 1
. Этот узел отображает два состояния: одно представление ответвления, повышающегося и другое представление ответвления потеря работоспособности.
Обратите внимание на то, что HJMTree.VolSpec.NumBranch = 2
.
HJMTree.VolSpec
ans = FinObj: 'HJMVolSpec' FactorModels: {'Constant'} FactorArgs: {{1x1 cell}} SigmaShift: 0 NumFactors: 1 NumBranch: 2 PBranch: [0.5000 0.5000] Fact2Branch: [-1 1]
Исследуйте уровни узла, соответствующего ответвление.
HJMTree.FwdTree{2}(:,:,1)
ans = 1.0364 1.0420 1.0461
Теперь исследуйте соответствие, вниз переходят.
HJMTree.FwdTree{2}(:,:,2)
ans = 1.0574 1.0631 1.0672
Третий Узел. Третий узел представляет во второй раз наблюдения, tObs = 2
. Этот узел содержит в общей сложности четыре состояния, два представления ответвлений, повышающихся и другие два представления ответвлений потеря работоспособности. Исследуйте уровни узла, соответствующего работоспособным состояниям.
HJMTree.FwdTree{3}(:,:,1)
ans = 1.0317 1.0526 1.0358 1.0568
Затем исследуйте соответствующие неработоспособные состояния.
HJMTree.FwdTree{3}(:,:,2)
ans = 1.0526 1.0738 1.0568 1.0781
Изоляция Определенного Узла. Запуск на третьем уровне, индексация в древовидном массиве ячеек становятся комплексными, и изоляция определенного узла может быть трудной. Функциональный bushpath
изолирует определенный узел путем определения пути к узлу как вектор ответвлений, взятых, чтобы достигнуть того узла. Как пример, считайте узел достигнутым путем запуска с корневого узла, приведения в рабочее состояние ответвления, затем ответвления вниз, и затем другого ответвления вниз. Учитывая, что дерево имеет только два ответвления на узел, ответвления, повышающиеся, соответствуют 1 и ответвлениям, потеря работоспособности соответствует 2. Путь "вниз вниз" становится векторным [1 2 2]
.
FRates = bushpath(HJMTree.FwdTree, [1 2 2])
FRates = 1.0356 1.0364 1.0526 1.0674
bushpath
возвращает точечные уровни для всех узлов, коснувшихся путем, заданным во входном параметре, первый, соответствующий корневому узлу и последнему, соответствующему целевому узлу.
Изоляция того же узла, использующего прямую индексацию, получает
HJMTree.FwdTree{4}(:, 3, 2)
ans = 1.0674
Как ожидалось это одно значение соответствует последнему элементу уровней, возвращенных bushpath
.
Можно использовать эти методы с любым типом дерева, сгенерированного с Financial Instruments Toolbox, такие как деревья форвардного курса или ценовые деревья.
Можно теперь исследовать в некоторых деталях содержимое структуры BDTTree
.
BDTTree
BDTTree = FinObj: 'BDTFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1.00 2.00 3.00] TFwd: {[4x1 double] [3x1 double] [2x1 double] [3.00]} CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4.00]} FwdTree: {[1.10] [1.10 1.14] [1.10 1.14 1.19] [1.09 1.12 1.16 1.22]}
FwdTree
содержит фактическое дерево уровня. MATLAB представляет его как массив ячеек с каждым элементом массива ячеек, содержащим древовидный уровень.
Другие поля содержат другую информацию, относящуюся к интерпретации значений в FwdTree
. Самым важным является VolSpec
, TimeSpec
и RateSpec
, которые содержат энергозависимость, временную структуру и информацию о структуре уровня соответственно.
Посмотрите на структуру RateSpec
, используемую в генерации этого дерева, чтобы видеть, где эти значения происходят. Расположите значения в едином массиве.
[BDTTree.RateSpec.StartTimes BDTTree.RateSpec.EndTimes... BDTTree.RateSpec.Rates]
ans = 0 1.0000 0.1000 0 2.0000 0.1100 0 3.0000 0.1200 0 4.0000 0.1250
Посмотрите на уровни в FwdTree
. Первый узел представляет дату оценки, tObs = 0
. Второй узел представляет tObs = 1
. Исследуйте уровни во-вторых, в-третьих, и четвертые узлы.
BDTTree.FwdTree{2}
ans = 1.0979 1.1432
Второй узел представляет в первый раз наблюдения, tObs = 1
. Этот узел содержит в общей сложности два состояния, одно представление ответвления, повышающегося (1.0979
) и другое представление ответвления, спускающегося (по 1.1432
).
Соглашение в этом документе состоит в том, чтобы отобразить цены, повышающиеся на верхнем ответвлении. Так, при отображении уровней уровни падают на верхнее ответвление и увеличиваются на более низком ответвлении.
BDTTree.FwdTree{3}
ans = 1.0976 1.1377 1.1942
Третий узел представляет во второй раз наблюдения, t Obs = 2
. Этот узел содержит в общей сложности три состояния, одно представление ответвления, повышающегося (1.0976
), одно представление ответвления в середине (1.1377
) и другое представление ответвления, спускающегося (по 1.1942
).
BDTTree.FwdTree{4}
ans = 1.0872 1.1183 1.1606 1.2179
Четвертый узел представляет в третий раз наблюдения, tObs = 3
. Этот узел содержит в общей сложности четыре состояния, одно представление ответвления, повышающегося (1.0872
), два представления ответвлений в середине (1.1183
и 1.1606
), и другое представление ответвления, спускающегося (по 1.2179
).
Изоляция Определенного Узла. Функциональный treepath
изолирует определенный узел путем определения пути к узлу как вектор ответвлений, взятых, чтобы достигнуть того узла. Как пример, считайте узел достигнутым путем запуска с корневого узла, приведения в рабочее состояние ответвления, затем ответвления вниз, и наконец другого ответвления вниз. Учитывая, что дерево имеет только два ответвления на узел, ответвления, повышающиеся, соответствуют 1 и ответвлениям, потеря работоспособности соответствует 2. Путь "вниз вниз" становится векторным [1 2 2]
.
FRates = treepath(BDTTree.FwdTree, [1 2 2])
FRates = 1.1000 1.0979 1.1377 1.1606
treepath
возвращает короткие уровни для всех узлов, коснувшихся путем, заданным во входном параметре, первый, соответствующий корневому узлу и последнему, соответствующему целевому узлу.
HW и древовидные структуры BK подобны древовидной структуре BDT. Вы видите это, если вы исследуете демонстрационное дерево HW, содержавшееся в файле deriv.mat
.
load deriv.mat;
HWTree
HWTree = FinObj: 'HWFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1.00 2.00 3.00] dObs: [731947.00 732313.00 732678.00 733043.00] CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4.00]} Probs: {[3x1 double] [3x3 double] [3x5 double]} Connect: {[2.00] [2.00 3.00 4.00] [2.00 2.00 3.00 4.00 4.00]} FwdTree: {[1.03] [1.05 1.04 1.02] [1.08 1.07 1.05 1.03 1.01] [1.09 1.08 1.06 1.04 1.02]
Все поля этой структуры подобны своим дубликатам BDT. Существует два дополнительных поля, не существующие в BDT: Probs
и Connect
. Поле Probs
представляет вероятности вхождения при каждом ответвлении каждого узла в дереве. Поле Connect
описывает возможность соединения узлов данного древовидного уровня к узлам к следующему древовидному уровню.
Поле Probs
. В то время как BDT и модели HJM с одним фактором имеют равные вероятности для каждого ответвления в узле, HW и BK не делают. Для HW и деревьев BK, поле Probs
указывает на вероятность, что конкретное ответвление будет взято в перемещении от одного узла до другого узла на следующем уровне.
Поле Probs
состоит из массива ячеек с одной ячейкой на древовидный уровень. Каждой ячейкой является 3
-by-NUMNODES
массив с верхней строкой, представляющей вероятность перемещение, средняя строка, представляющая вероятность среднего перемещения и последнюю строку вероятность вниз перемещение.
Как рисунок, рассмотрите первые два элемента поля Probs
структуры, соответствуя первым (корневым) и вторым уровням дерева.
HWTree.Probs{1}
0.16666666666667 0.66666666666667 0.16666666666667
HWTree.Probs{2}
0.12361333418768 0.16666666666667 0.21877591615172 0.65761074966060 0.66666666666667 0.65761074966060 0.21877591615172 0.16666666666667 0.12361333418768
Читая сверху донизу, значения в HWTree.Probs{1}
соответствуют, середина, и вниз вероятности в корневом узле.
HWTree.Probs{2}
является 3
-by-3
матрица значений. Первый столбец представляет главный узел, второй столбец представляет средний узел, и последний столбец представляет концевой узел. Как с корневым узлом, первые, вторые, и третьи строки содержат значения для, середина, и вниз отклоняющийся каждый узел.
Как ожидалось сумма всех вероятностей в любом узле равняется 1.
sum(HWTree.Probs{2})
1.0000 1.0000 1.0000
Поле Connect. Другим полем, которое отличает HW и древовидные структуры BK от древовидной структуры BDT, является Connect
. Это поле описывает, как каждый узел на данном уровне соединяется с узлами следующего уровня. Потребность в этом поле является результатом возможности нестандартного ветвления в дереве.
Поле Connect
древовидной структуры HW состоит из массива ячеек с одной ячейкой на древовидный уровень.
HWTree.Connect
ans = [2] [1x3 double] [1x5 double]
Каждая ячейка содержит 1
-by-NUMNODES
вектор. Каждое значение в векторе относится к узлу на соответствующем древовидном уровне и представляет индекс узла на следующем древовидном уровне, с которым соединяется среднее ответвление узла.
Если вы вычитаете 1 из значений, содержавшихся в Connect
, вы показываете индекс узлов на следующем уровне, которые переходят подключения к. Если вы добавляете 1
в значения, вы показываете, что индекс соответствия вниз переходит.
Как рисунок, рассмотрите HWTree.Connect{1}
:
HWTree.Connect{1}
ans = 2
Это указывает, что среднее ответвление корневого узла соединяет со вторым (от верхней части) узел следующего уровня, как ожидалось. Если вы вычитаете 1
из этого значения, вы получаете 1
, который говорит вам, что ответвление переходит к главному узлу. Если вы добавляете 1
, вы получаете 3
, который указывает на последний узел второго уровня дерева.
Теперь рассмотрите уровень 3 в этом примере:
HWTree.Connect{3}
2 2 3 4 4
На этом уровне существует нестандартное ветвление. Это может быть легко распознано, потому что среднее ответвление двух узлов соединяется с тем же узлом на следующем уровне.
Чтобы визуализировать это, рассмотрите следующий рисунок дерева.
Здесь становится очевидно, что существует нестандартное ветвление на третьем уровне дерева на верхних и нижних узлах. Первые и вторые узлы соединяются с тем же трио узлов на следующем уровне. Подобное ветвление происходит в нижней части и узлах рядом с нижней частью дерева.
bdtprice
| bdtsens
| bdttimespec
| bdttree
| bdtvolspec
| bkprice
| bksens
| bktimespec
| bktree
| bkvolspec
| bondbybdt
| bondbybk
| bondbyhjm
| bondbyhw
| bondbyzero
| capbybdt
| capbybk
| capbyblk
| capbyhjm
| capbyhw
| cfbybdt
| cfbybk
| cfbyhjm
| cfbyhw
| cfbyzero
| fixedbybdt
| fixedbybk
| fixedbyhjm
| fixedbyhw
| fixedbyzero
| floatbybdt
| floatbybk
| floatbyhjm
| floatbyhw
| floatbyzero
| floatdiscmargin
| floatmargin
| floorbybdt
| floorbybk
| floorbyblk
| floorbyhjm
| floorbyhw
| hjmprice
| hjmsens
| hjmtimespec
| hjmtree
| hjmvolspec
| hwcalbycap
| hwcalbyfloor
| hwprice
| hwsens
| hwtimespec
| hwtree
| hwvolspec
| instbond
| instcap
| instcf
| instfixed
| instfloat
| instfloor
| instoptbnd
| instoptembnd
| instoptemfloat
| instoptfloat
| instrangefloat
| instswap
| instswaption
| intenvprice
| intenvsens
| intenvset
| mmktbybdt
| mmktbyhjm
| oasbybdt
| oasbybk
| oasbyhjm
| oasbyhw
| optbndbybdt
| optbndbybk
| optbndbyhjm
| optbndbyhw
| optembndbybdt
| optembndbybk
| optembndbyhjm
| optembndbyhw
| optemfloatbybdt
| optemfloatbybk
| optemfloatbyhjm
| optemfloatbyhw
| optfloatbybdt
| optfloatbybk
| optfloatbyhjm
| optfloatbyhw
| rangefloatbybdt
| rangefloatbybk
| rangefloatbyhjm
| rangefloatbyhw
| swapbybdt
| swapbybk
| swapbyhjm
| swapbyhw
| swapbyzero
| swaptionbybdt
| swaptionbybk
| swaptionbyblk
| swaptionbyhjm
| swaptionbyhw