Вычислить цену для инструмента процентной ставки с 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 pricer object и используйте 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: [1x10 datetime]
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 - Объект КИПиАFixedBond объект | OptionEmbeddedFixedBond объект | FixedBondOption объект | FloatBond объектОбъект инструмента, указанный как скаляр или вектор ранее созданных объектов инструмента. Создание объектов инструмента с помощью 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 базисной точки, где ShireValue = 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 - массив с каждой строкой, имеющей вероятность упражнения для данной опции в каждое время наблюдения дерева.
A FixedBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
PTree
AITree
Probs.
A FloatBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
dObs
CFlowT
Probs
FwdTree
A FixedBondOption инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:
PTree
Probs
ExTree
A 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.