Вычислите цену за инструмент процентной ставки с 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:
tObs: [0 1 1.9973 2.9945 3.9918 4.9918 5.9891 6.9863 7.9836 8.9836]
dObs: [15-Sep-2019 15-Sep-2020 15-Sep-2021 ... ]
CFlowT: {1x10 cell}
Probs: {1x9 cell}
Connect: {1x9 cell}
FwdTree: {1x10 cell}
RateTree: {1x10 cell}
Цена FixedBondOption
Инструмент
Используйте price
вычислить цену и чувствительность для FixedBondOption
инструмент.
[Price, outPR] = price(HWTreePricer,FixedBOption,["all"])
Price = 11.1739
outPR = priceresult with properties: Results: [1x4 table] PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
______ ______ ______ _______
11.174 243.09 3667.6 -272.19
inpInstrument
— Объект InstrumentCap
возразите | Floor
возразите | Swaption
возразите | FixedBond
возразите | OptionEmbeddedFixedBond
возразите | OptionEmbeddedFloatBond
возразите | FixedBondOption
возразите | FloatBond
возразите | FloatBondOption
объектОбъект Instrument в виде скаляра или вектора из ранее созданных инструментальных объектов. Создайте инструментальное использование объектов fininstrument
. Следующие инструментальные объекты поддерживаются:
Типы данных: 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 | Поддерживаемая чувствительность |
---|---|
Cap | {'delta','gamma','vega','price'} |
Floor | {'delta','gamma','vega','price'} |
Swaption | {'delta','gamma','vega','price'} |
FixedBond | {'delta','gamma','vega','price'} |
OptionEmbeddedFixedBond | {'delta','gamma','vega','price'} |
FixedBondOption | {'delta','gamma','vega','price'} |
FloatBond | {'delta','gamma','vega','price'} |
FloatBondOption | {'delta','gamma','vega','price'} |
OptionEmbeddedFloatBond | {'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
:
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 |
---|---|---|---|---|
tObs | ✓ | ✓ | ✓ | ✓ |
Connect | ✓ | ✓ | ✓ | ✓ |
PTree | ✓ | Нет | ✓ | ✓ |
AITree | ✓ | Нет | Нет | Нет |
Probs | ✓ | ✓ | ✓ | Нет |
dObs | Нет | ✓ | Нет | Нет |
CFlowT | Нет | ✓ | Нет | Нет |
FwdTree | Нет | ✓ | ✓ | ✓ |
ExTree | Нет | Нет | ✓ | ✓ |
ProbTree | Нет | Нет | Нет | ✓ |
ExProbTree | Нет | Нет | Нет | ✓ |
ExProbsByTreeLevel | Нет | Нет | Нет | ✓ |
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.