В целях рисунка этот раздел использует модели 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
Используйте MATLAB whos
команда, чтобы отобразить список переменных, загруженных из 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
Используйте MATLAB whos
команда, чтобы отобразить список переменных, загруженных из 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
- 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