Вычислите цену за инструмент процентной ставки с IRTree калькулятор цен
[ вычисляет инструментальную цену и связанную информацию о ценах на основе объекта Price,PriceResult] = price(inpPricer,inpInstrument)inpPricer оценки и инструментальный объект inpInstrument.
[ добавляет дополнительный аргумент, чтобы задать чувствительность.Price,PriceResult] = price(___,inpSensitivity)
Этот пример показывает рабочий процесс, чтобы оценить FixedBondOption инструмент, когда вы используете HullWhite модель и IRTree метод ценообразования.
Создайте FixedBond Инструментальный объект
Используйте fininstrument создать FixedBond инструментальный объект как базовая связь.
BondInst = fininstrument("FixedBond",'Maturity',datetime(2029,9,15),'CouponRate',0.025,'Period', 1,'Name',"fixed_bond_instrument")
BondInst =
FixedBond with properties:
CouponRate: 0.0250
Period: 1
Basis: 0
EndMonthRule: 1
Principal: 100
DaycountAdjustedCashFlow: 0
BusinessDayConvention: "actual"
Holidays: NaT
IssueDate: NaT
FirstCouponDate: NaT
LastCouponDate: NaT
StartDate: NaT
Maturity: 15-Sep-2029
Name: "fixed_bond_instrument"
Создайте FixedBondOption Инструментальный объект
Используйте fininstrument создать FixedBondOption инструментальный объект.
FixedBOption = fininstrument("FixedBondOption",'ExerciseDate',datetime(2025,9,15),'Strike',98,'Bond',BondInst,'Name',"fixed_bond_option_instrument")
FixedBOption =
FixedBondOption with properties:
OptionType: "call"
ExerciseStyle: "european"
ExerciseDate: 15-Sep-2025
Strike: 98
Bond: [1x1 fininstrument.FixedBond]
Name: "fixed_bond_option_instrument"
Создайте ratecurve Объект
Создайте ratecurve объект с помощью ratecurve.
Settle = datetime(2019,9,15); Type = 'zero'; ZeroTimes = [calyears([1:10])]'; ZeroRates = [0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307 0.0310]'; ZeroDates = Settle + ZeroTimes; myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [10x1 datetime]
Rates: [10x1 double]
Settle: 15-Sep-2019
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Создайте HullWhite Объект модели
Используйте finmodel создать HullWhite объект модели.
HullWhiteModel = finmodel("HullWhite",'Alpha',0.01,'Sigma',0.05)
HullWhiteModel =
HullWhite with properties:
Alpha: 0.0100
Sigma: 0.0500
Создайте IRTree Объект калькулятора цен
Используйте finpricer создать IRTree объект калькулятора цен и использование ratecurve объект с 'DiscountCurve' аргумент пары "имя-значение".
HWTreePricer = finpricer("irtree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',ZeroDates)
HWTreePricer =
HWBKTree with properties:
Tree: [1x1 struct]
TreeDates: [10x1 datetime]
Model: [1x1 finmodel.HullWhite]
DiscountCurve: [1x1 ratecurve]
HWTreePricer.Tree
ans = struct with fields:
FinObj: 'HWFwdTree'
tObs: [0 1 1.9973 2.9945 3.9918 4.9918 5.9891 6.9863 7.9836 8.9836]
dObs: [1x10 datetime]
CFlowT: {1x10 cell}
Probs: {1x9 cell}
Connect: {1x9 cell}
FwdTree: {1x10 cell}
Цена FixedBondOption Инструмент
Используйте price вычислить цену и чувствительность для FixedBondOption инструмент.
[Price, outPR] = price(HWTreePricer,FixedBOption,["all"])Price = 11.1370
outPR =
priceresult with properties:
Results: [1x4 table]
PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
______ ______ ______ _______
11.137 242.76 3662.6 -271.74
inpInstrument — Объект InstrumentFixedBond возразите | OptionEmbeddedFixedBond возразите | FixedBondOption возразите | FloatBond объектОбъект Instrument в виде скалярного FixedBond, OptionEmbeddedFixedBond, FixedBondOption, или FloatBond инструментальный объект. Используйте fininstrument создать FixedBond, OptionEmbeddedFixedBond, FixedBondOption, или FloatBond инструментальный объект.
Типы данных: object
inpSensitivity — Список чувствительности, чтобы вычислить[ ]
(значение по умолчанию) | массив строк со значениями "Price"\delta\Gamma, "Vega", и 'All' | массив ячеек из символьных векторов со значениями 'Price'\delta\Gamma, 'Vega', и 'All'(Необязательно) Список чувствительности, чтобы вычислить в виде NOUT- 1 или 1- NOUT массив ячеек из символьных векторов или массив строк с возможными значениями 'Price'\delta\Gamma, 'Vega', и 'All'.
inpSensitivity = {'All'} или inpSensitivity = ["All"] указывает, что выходом является Delta\Gamma, Vega, и Price. Это совпадает с определением inpSensitivity включать каждую чувствительность.
Поддерживаемая чувствительность зависит от inpInstrument.
| inpInstrument | Поддерживаемая чувствительность |
|---|---|
FixedBond | {'delta','gamma','vega','price'} |
OptionEmbeddedFixedBond | {'delta','gamma','vega','price'} |
FixedBondOption | {'delta','gamma','vega','price'} |
FloatBond | {'delta','gamma','vega','price'} |
Чувствительность вычисляется на основе сдвигов урожая 1 пункта, где ShiftValue = 1/10000. Вся чувствительность возвращена как долларовая чувствительность. Чтобы найти чувствительность на доллар, разделите чувствительность на их соответствующую инструментальную цену.
Пример: inpSensitivity = {'delta','gamma','vega','price'}
Типы данных: string | cell
Price — Инструментальная ценаИнструментальная цена, возвращенная как числовое.
PriceResult — Ценовой результатPriceResult объектЦеновой результат, возвращенный как PriceResult объект. Объект имеет следующие поля:
PriceResult.Results — Таблица результатов, которая включает чувствительность (если вы задаете inpSensitivity)
PriceResult.PricerData — Структура для данных о калькуляторе цен, которые зависят от инструмента, который оценивается
FixedBond, FloatBond, FixedBondOption, и OptionEmbeddedFixedBond имейте следующие разделяемые поля для PriceResult.PricerData.PriceTree:
FinObj содержит 'HWPriceTree' или 'BKPriceTree' завися, используете ли вы HullWhite или BlackKarasinski модель.
tObs содержит времена наблюдения.
Connect содержит векторы возможности соединения. Каждый элемент в массиве ячеек описывает, как узлы на том уровне соединяются со следующим. Для данного древовидного уровня существует NumNodes элементы в векторе, и они содержат индекс узла на следующем уровне, с которым соединяется средняя ветвь. Вычитание 1 от того значения указывает, где подключения-ветви к, и добавление 1 указывают, где вниз переходят подключения к.
Следующие дополнительные поля для PriceResult.PricerData.PriceTree зависьте от инструментального типа:
PTree содержит чистые цены.
AITree содержит начисленные проценты.
Probs содержит массивы вероятности. Каждый элемент массива ячеек содержит, середина и вероятности перехода вниз для каждого узла уровня.
dObs содержит дату каждого уровня дерева.
CFlowT массив ячеек со столькими же элементов сколько уровни дерева. Каждый элемент массива ячеек содержит факторы времени (tObs) соответствие его уровню дерева и тем уровням перед ним.
FwdTree содержит прямой точечный уровень от одного узла до следующего. Прямой точечный уровень задан как инверсия коэффициента дисконтирования.
ExTree содержит массивы индикатора осуществления. Каждым элементом массива ячеек является массив, содержащий 1где опция осуществлена и 0где это не.
ProbTree содержит вероятность достижения каждого узла от корневого узла.
ExProbTree содержит вероятности осуществления. Каждым элементом в массиве ячеек является массив, содержащий 0где нет никакого осуществления или вероятности достижения того узла, где осуществление происходит.
ExProbsByTreeLevel массив с каждой строкой, содержащей вероятность осуществления для данной опции в каждый древовидный раз наблюдения.
FixedBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
PTree
AITree
Probs.
FloatBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
dObs
CFlowT
Probs
FwdTree
FixedBondOption инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
PTree
Probs
ExTree
OptionEmbeddedFixedBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
PTree
ExTree
ProbTree
ExProbTree
ExProbsByTreeLevel
Следующая таблица отображает PriceResult.PricerData.PriceTree поля связаны с каждым инструментом.
PriceResult.PricerData.PriceTree Поля | FixedBond | FloatBond | FixedBondOption | OptionEmbeddedFixedBond |
|---|---|---|---|---|
FinObj | ✓ | ✓ | ✓ | ✓ |
tObs | ✓ | ✓ | ✓ | ✓ |
Connect | ✓ | ✓ | ✓ | ✓ |
PTree | ✓ | Нет | ✓ | ✓ |
AITree | ✓ | Нет | Нет | Нет |
Probs | ✓ | ✓ | ✓ | Нет |
dObs | Нет | ✓ | Нет | Нет |
CFlowT | Нет | ✓ | Нет | Нет |
FwdTree | Нет | ✓ | ✓ | ✓ |
ExTree | Нет | Нет | ✓ | ✓ |
ProbTree | Нет | Нет | Нет | ✓ |
ExProbTree | Нет | Нет | Нет | ✓ |
ExProbsByTreeLevel | Нет | Нет | Нет | ✓ |
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.