Для рисунка в этом разделе используются модели 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
- древовидная выборка Heath-Jarrow-Morton процесса прямой скорости, созданная с помощью 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
-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