В целях рисунка этот раздел полагается на модели HJM и BDT. HW и функции BK, которые выполняют цену и вычисления чувствительности, явным образом не показывают здесь. Функции, которые используют модели HW и BK, действуют так же к модели BDT.
Портфель, оценивая функции hjmprice
и bdtprice
вычисляет цену любого набора поддерживаемых инструментов, на основе дерева процентной ставки. Функции способны к оценке этих инструментальных типов:
Связи
Опции связи
Связь со встроенными опциями
Произвольные потоки наличности
Примечания с фиксированной процентной ставкой
Долговые обязательства с плавающей ставкой
Долговые обязательства с плавающей ставкой с опциями или встроенными опциями
Заглавные буквы
Этажи
Примечания области значений
Подкачки
Swaptions
Например, синтаксис для вызова hjmprice
:
[Price, PriceTree] = hjmprice(HJMTree, InstSet, Options)
Точно так же синтаксис вызова для bdtprice
:
[Price, PriceTree] = bdtprice(BDTTree, InstSet, Options)
Каждая функция требует двух входных параметров: дерево процентной ставки и набор инструментов, InstSet
. Дополнительный аргумент, Options
, дальнейшие средства управления оценка и отображенный вывод. (См. Структуру опций Оценки для получения информации об аргументе Options
.)
HJMTree
является выборкой дерева Хита-Джарроу-Мортона процесса форвардного курса, созданного использования hjmtree
. BDTTree
является древовидной выборкой Black-Derman-Toy процесса процентной ставки, созданного использования bdttree
. Смотрите Создание Дерева Форвардных курсов, чтобы изучить, как создать эти структуры.
InstSet
является набором инструментов, которые будут оценены. Эта структура представляет набор инструментов, которые будут оценены независимо с помощью модели.
Options
является структурой опций, созданной с функциональным derivset
. Эта структура задает, как дерево используется, чтобы найти цену инструментов в портфеле, и сколько дополнительной информации отображено в командном окне при вызывании функции оценки. Если этот входной параметр не задан в вызове функции оценки, структура опций по умолчанию используется. Структура опций оценки описана в Оценке Структуры опций.
Функции оценки портфеля классифицируют инструменты и вызывают соответствующую специфичную для инструмента функцию оценки для каждого из инструментальных типов. Специфичными для инструмента функциями оценки HJM является bondbyhjm
, cfbyhjm
, fixedbyhjm
, floatbyhjm
, optbndbyhjm
, rangefloatbyhjm
, swapbyhjm
и swaptionbyhjm
. Столь же именованный набор функций существует для моделей BDT. Можно также использовать эти функции непосредственно, чтобы вычислить цену наборов инструментов того же типа.
Рассмотрите следующий пример, который использует портфель и данные процентной ставки в MAT-файле deriv.mat
, включенный в тулбокс. Загрузите данные в рабочую область MATLAB®.
load deriv.mat
Используйте команду whos
MATLAB, чтобы отобразить список переменных, загруженных из 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
и HJMInstSet
являются входными параметрами, требуемыми вызывать функциональный hjmprice
.
Используйте функциональный instdisp
, чтобы исследовать набор инструментов, содержавшихся в переменной HJMInstSet
.
instdisp(HJMInstSet) Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name Quantity 1 Bond 0.04 01-Jan-2000 01-Jan-2003 1 NaN NaN NaN NaN NaN NaN NaN 4% bond 100 2 Bond 0.04 01-Jan-2000 01-Jan-2004 2 NaN NaN NaN NaN NaN NaN NaN 4% bond 50 Index Type UnderInd OptSpec Strike ExerciseDates AmericanOpt Name Quantity 3 OptBond 2 call 101 01-Jan-2003 NaN Option 101 -50 Index Type CouponRate Settle Maturity FixedReset Basis Principal Name Quantity 4 Fixed 0.04 01-Jan-2000 01-Jan-2003 1 NaN NaN 4% Fixed 80 Index Type Spread Settle Maturity FloatReset Basis Principal Name Quantity 5 Float 20 01-Jan-2000 01-Jan-2003 1 NaN NaN 20BP Float 8 Index Type Strike Settle Maturity CapReset Basis Principal Name Quantity 6 Cap 0.03 01-Jan-2000 01-Jan-2004 1 NaN NaN 3% Cap 30 Index Type Strike Settle Maturity FloorReset Basis Principal Name Quantity 7 Floor 0.03 01-Jan-2000 01-Jan-2004 1 NaN NaN 3% Floor 40 Index Type LegRate Settle Maturity LegReset Basis Principal LegType Name Quantity 8 Swap [0.06 20] 01-Jan-2000 01-Jan-2003 [1 1] NaN NaN [NaN] 6%/20BP Swap 10 Index Type CouponRate Settle Maturity Period Basis ... Name Quantity 1 Bond 0.04 01-Jan-2000 01-Jan-2003 1 NaN ... 4% bond 100 2 Bond 0.04 01-Jan-2000 01-Jan-2004 2 NaN ... 4% bond 50 |
В этом наборе портфеля существует восемь инструментов: две связи, одна опция связи, одно примечание с фиксированной процентной ставкой, одно долговое обязательство с плавающей ставкой, одна прописная буква, один пол и одна подкачка. Каждый инструмент имеет соответствующий индекс, который идентифицирует цены на инструменты в ценовом векторе, возвращенном hjmprice
.
Теперь используйте hjmprice
, чтобы вычислить цену каждого инструмента в инструментальном наборе.
Price = hjmprice(HJMTree, HJMInstSet)
Warning: Not all cash flows are aligned with the tree. Result will be approximated. Price = 98.7159 97.5280 0.0486 98.7159 100.5529 6.2831 0.0486 3.6923
Предупреждение, показанное выше, появляется, потому что некоторые потоки наличности для второй связи не падают точно на древовидный узел.
Загрузите MAT-файл deriv.mat
в рабочее пространство MATLAB.
load deriv.mat
Используйте команду whos
MATLAB, чтобы отобразить список переменных, загруженных из 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
BDTTree
и BDTInstSet
являются входными параметрами, требуемыми вызывать функциональный bdtprice
.
Используйте функциональный instdisp
, чтобы исследовать набор инструментов, содержавшихся в переменной BDTInstSet
.
instdisp(BDTInstSet) Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name Quantity 1 Bond 0.1 01-Jan-2000 01-Jan-2003 1 NaN NaN NaN NaN NaN NaN NaN 10% Bond 100 2 Bond 0.1 01-Jan-2000 01-Jan-2004 2 NaN NaN NaN NaN NaN NaN NaN 10% Bond 50 Index Type UnderInd OptSpec Strike ExerciseDates AmericanOpt Name Quantity 3 OptBond 1 call 95 01-Jan-2002 NaN Option 95 -50 Index Type CouponRate Settle Maturity FixedReset Basis Principal Name Quantity 4 Fixed 0.1 01-Jan-2000 01-Jan-2003 1 NaN NaN 10% Fixed 80 Index Type Spread Settle Maturity FloatReset Basis Principal Name Quantity 5 Float 20 01-Jan-2000 01-Jan-2003 1 NaN NaN 20BP Float 8 Index Type Strike Settle Maturity CapReset Basis Principal Name Quantity 6 Cap 0.15 01-Jan-2000 01-Jan-2004 1 NaN NaN 15% Cap 30 Index Type Strike Settle Maturity FloorReset Basis Principal Name Quantity 7 Floor 0.09 01-Jan-2000 01-Jan-2004 1 NaN NaN 9% Floor 40 Index Type LegRate Settle Maturity LegReset Basis Principal LegType Name Quantity 8 Swap [0.15 10] 01-Jan-2000 01-Jan-2003 [1 1] NaN NaN [NaN] 15%/10BP Swap 10 |
В этом наборе портфеля существует восемь инструментов: две связи, одна опция связи, одно примечание с фиксированной процентной ставкой, одно долговое обязательство с плавающей ставкой, одна прописная буква, один пол и одна подкачка. Каждый инструмент имеет соответствующий индекс, который идентифицирует цены на инструменты в ценовом векторе, возвращенном bdtprice
.
Теперь используйте bdtprice
, чтобы вычислить цену каждого инструмента в инструментальном наборе.
Price = bdtprice(BDTTree, BDTInstSet)
Warning: Not all cash flows are aligned with the tree. Result will be approximated. Price = 95.5030 93.9079 1.7657 95.5030 100.4865 1.4863 0.0245 7.4222
Цены в выходном векторе, Price
соответствует ценам во время наблюдения, обнуляют (tObs = 0)
, который задан как дата оценки дерева процентной ставки. Инструментальная индексация в Price
совпадает с индексацией в InstSet
.
В примере HJM цены в векторе Price
соответствуют инструментам в этом порядке.
InstNames = instget(HJMInstSet, 'FieldName','Name')
InstNames = 4% bond 4% bond Option 101 4% Fixed 20BP Float 3% Cap 3% Floor 6%/20BP Swap
Так, в векторе Price
четвертый элемент, 98.7159, представляет цену четвертого инструмента (4%-е примечание с фиксированной процентной ставкой); шестой элемент, 6.2831, представляет цену шестого инструмента (3%-я прописная буква).
В примере BDT цены в векторе Price
соответствуют инструментам в этом порядке.
InstNames = instget(BDTInstSet, 'FieldName','Name')
InstNames = 10% Bond 10% Bond Option 95 10% Fixed 20BP Float 15% Cap 9% Floor 15%/10BP Swap
Так, в векторе Price
четвертый элемент, 95.5030, представляет цену четвертого инструмента (10%-е примечание с фиксированной процентной ставкой); шестой элемент, 1.4863, представляет цену шестого инструмента (15%-я прописная буква).
Если вы вызываете функцию оценки с двумя выходными аргументами, например,
[Price, PriceTree] = hjmprice(HJMTree, HJMInstSet)
вы генерируете ценовое дерево наряду с информацией о ценах.
Дополнительная древовидная структура цены вывода PriceTree
содержит всю информацию о ценах.
Ценовое Дерево HJM. В примере HJM первое поле этой структуры, FinObj
, указывает, что эта структура представляет ценовое дерево. Второе поле, PBush
, является деревом, содержащим цену инструментов в каждом узле дерева. Третье поле, AIBush
, является деревом, содержащим начисленные проценты инструментов в каждом узле дерева. Наконец, четвертое поле, tObs
, представляет время наблюдения каждого уровня PBush
и AIBush
с модулями с точки зрения соединения периодов.
В этом примере ценовое дерево похоже
PriceTree =
FinObj: 'HJMPriceTree' PBush: {[8x1 double] [8x1x2 double] ...[8x8 double]} AIBush: {[8x1 double] [8x1x2 double] ... [8x8 double]} tObs: [0 1 2 3 4]
И PBush
и AIBush
является 1
-by-5
массивы ячеек, сопоставимые с пятью разами наблюдения tObs
. Отображение данных было сокращено здесь, чтобы соответствовать на одной строке.
Используя интерфейс командной строки, можно непосредственно исследовать PriceTree.PBush
, поле в структуре PriceTree
, которая содержит ценовое дерево с ценовыми векторами в каждом состоянии. Первый узел представляет tObs = 0
, соответствуя дате оценки.
PriceTree.PBush{1}
ans = 98.7159 97.5280 0.0486 98.7159 100.5529 6.2831 0.0486 3.6923
С этим интерфейсом можно наблюдать цены на все инструменты в портфеле в определенное время.
Ценовое Дерево BDT. BDT древовидная структура цены вывода PriceTree
содержит всю информацию о ценах. Первое поле этой структуры, FinObj
, указывает, что эта структура представляет ценовое дерево. Второе поле, PTree
, является деревом, содержащим цену инструментов в каждом узле дерева. Третье поле, AITree
, является деревом, содержащим начисленные проценты инструментов в каждом узле дерева. Четвертое поле, tObs
, представляет время наблюдения каждого уровня PTree
и AITree
с модулями с точки зрения соединения периодов.
Можно непосредственно исследовать поле в структуре PriceTree
, которая содержит ценовое дерево с ценовыми векторами в каждом состоянии. Первый узел представляет tObs = 0
, соответствуя дате оценки.
[Price, PriceTree] = bdtprice(BDTTree, BDTInstSet) PriceTree.PTree{1}
ans = 95.5030 93.9079 1.7657 95.5030 100.4865 1.4863 0.0245 7.4222
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