Создайте IRTree
объект калькулятора цен для FloatBond
, FixedBond
, FixedBondOption
, или OptionEmbeddedFixedBond
инструмент
Создайте и оцените FloatBond
, FixedBond
, FixedBondOption
, или OptionEmbeddedFixedBond
инструментальный объект с HullWhite
или BlackKarasinski
модель и IRTree
метод ценообразования с помощью этого рабочего процесса:
Используйте fininstrument
создать FloatBond
, FixedBond
, FixedBondOption
, или OptionEmbeddedFixedBond
инструментальный объект.
Используйте finmodel
задавать HullWhite
или BlackKarasinski
модель для FixedBond
, FloatBond
, FixedBondOption
, или OptionEmbeddedFixedBond
инструмент.
Используйте finpricer
задавать IRTree
объект калькулятора цен для BK или модель дерева трехчлена HW для FixedBond
, FloatBond
, FixedBondOption
, или OptionEmbeddedFixedBond
инструмент.
Для получения дополнительной информации об этом рабочем процессе смотрите Начало работы с Рабочими процессами Используя Основанную на объектах Среду для Оценки Финансовых инструментов.
Для получения дополнительной информации о доступных инструментах, моделях и методах ценообразования для FixedBond
, FloatBond
, OptionEmbeddedFixedBond
, или FixedBondOption
инструмент, смотрите, Выбирают Instruments, Models и Pricers.
создает IRTreePricerObj
= finpricer(PricerType
,'Model
',model_type,'DiscountCurve
',ratecurve_obj,'TreeDates
',tree_dates)IRTree
объект калькулятора цен путем определения PricerType
и необходимые аргументы пары "имя-значение" для Model
, DiscountCurve
, и TreeDates
установить аргументы пары "имя-значение" использования свойств. Например, IRTreePricerObj = finpricer("IRTree",'Model',HullWhite,'DiscountCurve',ratecure_obj,'TreeDates',['jan-30-2018';'jan-30-2019'])
создает IRTree
объект калькулятора цен.
PricerType
— Тип калькулятора цен"IRTree"
| вектор символов со значением 'IRTree'
Тип калькулятора цен в виде строки со значением "IRTree"
или вектор символов со значением 'IRTree'
.
Типы данных: char |
string
IRTree
Аргументы в виде пар имя-значениеЗадайте требуемые разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
IRTreePricerObj = finpricer("IRTree",'Model',HullWhite,'DiscountCurve',ratecure_obj,'TreeDates',['jan-30-2018';'jan-30-2019'])
'Model'
— Тип модели"HullWhite"
или "BlackKarasinski"
| вектор символов со значением of'HullWhite'
или 'BlackKarasinski'
Тип модели в виде разделенной запятой пары, состоящей из 'Model'
и вектор символов или строка.
Когда вы используете "HullWhite"
модель, IRTree
калькулятор цен использует алгоритм HW2000 [1].
Типы данных: char |
string
'DiscountCurve'
— ratecurve
объект для создания IRTree
и дисконтирование потоков наличностиratecurve
объектЭто свойство доступно только для чтения.
ratecurve
объект для создания IRTree
и дисконтирование потоков наличности в виде разделенной запятой пары, состоящей из 'DiscountCurve'
и имя ratecurve
объект.
Типы данных: object
'TreeDates'
— Даты, отмечающие даты потока наличности дереваДаты, отмечающие даты потока наличности дерева в виде разделенной запятой пары, состоящей из 'TreeDates'
и NLEVELS
- 1
вектор дат. Потоки наличности с этими датами упадут на древовидные узлы. TreeDates
аргумент определяет количество уровней или глубину, дерева. Перечислите даты в увеличивающемся порядке.
Типы данных: double |
cell
| datetime
Tree
— HW или дерево трехчлена BKHW или дерево трехчлена BK, возвращенное как struct со следующими свойствами:
tObs
содержит фактор времени каждого уровня дерева.
dObs
содержит дату каждого уровня дерева.
Probs
содержит массив ячеек 3
- N
числовые массивы с, середина, вниз вероятности каждого узла дерева за исключением последнего уровня. Ячейки в массиве ячеек упорядочены от корневого узла. Массивами является 3
- N
с первой строкой, соответствующей, перемещаются, середина строки к середине перемещения, и так далее. Каждый столбец массива представляет узел, начинающий с главного узла данного уровня.
CFlowT
массив ячеек со столькими же элементов сколько уровни дерева. Каждый элемент массива ячеек содержит факторы времени (tObs
) соответствие его уровню дерева и тем уровням перед ним.
Connect
содержит массив ячеек с информацией о возможности соединения для каждого узла дерева. Расположение похоже на Probs
, за исключением того, что это имеет только одну строку в каждой ячейке. Номер представляет узел на следующем уровне, к которому средняя ветвь соединяется с. Верхняя ветвь соединяется со значением выше (минус одно) и более низкие подключения ветви к значению ниже (плюс одно).
FwdTree
содержит прямой точечный уровень от одного узла до следующего. Прямой точечный уровень задан как инверсия коэффициента дисконтирования.
Типы данных: struct
TreeDates
— Древовидные датыДревовидные даты, возвращенные как скалярный datetime или массив datetime.
Типы данных: datetime
Model
— Тип модели"HullWhite"
или "BlackKarasinski"
Тип модели, возвращенный как строка.
Типы данных: string
DiscountCurve
— ratecurve
объект для создания IRTree
и дисконтирование потоков наличностиratecurve
объектЭто свойство доступно только для чтения.
ratecurve
объект для создания IRTree
объект и потоки наличности дисконтирования, возвращенные как ratecurve
объект.
Типы данных: object
price | Вычислите цену за инструмент процентной ставки с IRTree калькулятор цен |
Этот пример показывает рабочий процесс, чтобы оценить 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
Этот пример показывает рабочий процесс, чтобы оценить FixedBondOption
инструмент, когда вы используете BlackKarasinski
модель и 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',100,'Bond',BondInst,'Name',"fixed_bond_option")
FixedBOption = FixedBondOption with properties: OptionType: "call" ExerciseStyle: "european" ExerciseDate: 15-Sep-2025 Strike: 100 Bond: [1x1 fininstrument.FixedBond] Name: "fixed_bond_option"
Создайте 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"
Создайте BlackKarasinski
Объект модели
Используйте finmodel
создать BlackKarasinski
объект модели.
BlackKarasinskiModel = finmodel("BlackKarasinski",'Alpha',0.02,'Sigma',0.34)
BlackKarasinskiModel = BlackKarasinski with properties: Alpha: 0.0200 Sigma: 0.3400
Создайте IRTree
Объект калькулятора цен
Используйте finpricer
создать IRTree
объект калькулятора цен и использование ratecurve
объект для 'DiscountCurve'
аргумент пары "имя-значение".
BKTreePricer = finpricer("IRTree",'Model',BlackKarasinskiModel,'DiscountCurve',myRC,'TreeDates',ZeroDates)
BKTreePricer = HWBKTree with properties: Tree: [1x1 struct] TreeDates: [10x1 datetime] Model: [1x1 finmodel.BlackKarasinski] DiscountCurve: [1x1 ratecurve]
BKTreePricer.Tree
ans = struct with fields:
FinObj: 'BKFwdTree'
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(BKTreePricer,FixedBOption,["all"])
Price = 0.5810
outPR = priceresult with properties: Results: [1x4 table] PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
_______ _____ ______ _______
0.58103 2.797 45.967 -15.872
Этот пример показывает рабочий процесс, чтобы оценить ваниль FixedBond
инструмент, когда вы используете HullWhite
модель и IRTree
метод ценообразования.
Создайте FixedBond
Инструментальный объект
Используйте fininstrument
создать FixedBond
инструментальный объект.
Maturity = datetime(2024,1,1); Period = 1; VBond = fininstrument("FixedBond",'Maturity', Maturity,'CouponRate', 0.025,'Period',Period)
VBond = 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: 01-Jan-2024 Name: ""
Создайте ratecurve
Объект
Создайте ratecurve
объект с помощью ratecurve
.
Settle = datetime(2018,1,1); ZeroTimes = calyears(1:10)'; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; Compounding = 1; ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding);
Создайте HullWhite
Объект модели
Используйте finmodel
создать HullWhite
объект модели.
VolCurve = 0.01; AlphaCurve = 0.1; HWModel = finmodel("HullWhite",'alpha',AlphaCurve,'sigma',VolCurve);
Создайте IRTree
Объект калькулятора цен
Используйте finpricer
создать IRTree
объект калькулятора цен и использование ratecurve
объект для 'DiscountCurve'
аргумент пары "имя-значение".
HWTreePricer = finpricer("IRTree",'Model',HWModel,'DiscountCurve',ZeroCurve,'TreeDates',ZeroDates)
HWTreePricer = HWBKTree with properties: Tree: [1x1 struct] TreeDates: [10x1 datetime] Model: [1x1 finmodel.HullWhite] DiscountCurve: [1x1 ratecurve]
Цена FixedBond
Инструмент
Используйте price
вычислить цену и чувствительность для ванили FixedBond
инструмент.
[Price, outPR] = price(HWTreePricer, VBond,["all"])
Price = 107.7023
outPR = priceresult with properties: Results: [1x4 table] PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
_____ __________ ______ _______
107.7 1.4211e-10 4086.4 -602.56
Этот пример показывает рабочий процесс, чтобы оценить ваниль FloatBond
инструмент, когда вы используете HullWhite
модель и IRTree
метод ценообразования.
Создайте ratecurve
Объект
Создайте ratecurve
объект с помощью ratecurve
.
Settle = datetime(2018,1,1); ZeroTimes = calyears(1:10)'; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; Compounding = 1; ZeroCurve = ratecurve("zero",Settle,ZeroDates,ZeroRates, "Compounding",Compounding);
Создайте FloatBond
Инструментальный объект
Используйте fininstrument
создать ваниль FloatBond
инструментальный объект.
Spread = 0.03; Reset = 1; Maturity = datetime(2024,1,1); Period = 1; Float = fininstrument("FloatBond",'Maturity',Maturity,'Spread',Spread,'Reset',Reset,'ProjectionCurve',ZeroCurve)
Float = FloatBond with properties: Spread: 0.0300 ProjectionCurve: [1x1 ratecurve] ResetOffset: 0 Reset: 1 Basis: 0 EndMonthRule: 1 Principal: 100 DaycountAdjustedCashFlow: 0 BusinessDayConvention: "actual" LatestFloatingRate: NaN Holidays: NaT IssueDate: NaT FirstCouponDate: NaT LastCouponDate: NaT StartDate: NaT Maturity: 01-Jan-2024 Name: ""
Создайте HullWhite
Объект модели
Используйте finmodel
создать HullWhite
объект модели.
VolCurve = 0.01; AlphaCurve = 0.1; HWModel = finmodel("HullWhite",'alpha',AlphaCurve,'sigma',VolCurve);
Создайте IRTree
Объект калькулятора цен
Используйте finpricer
создать IRTree
объект калькулятора цен и использование ratecurve
объект для 'DiscountCurve'
аргумент пары "имя-значение".
HWTreePricer = finpricer("IRTree",'Model',HWModel,'DiscountCurve',ZeroCurve,'TreeDates',ZeroDates)
HWTreePricer = HWBKTree with properties: Tree: [1x1 struct] TreeDates: [10x1 datetime] Model: [1x1 finmodel.HullWhite] DiscountCurve: [1x1 ratecurve]
Цена FloatBond
Инструмент
Используйте price
вычислить цену и чувствительность для ванили FloatBond
инструмент.
[Price, outPR] = price(HWTreePricer,Float,["all"])
Price = 117.4768
outPR = priceresult with properties: Results: [1x4 table] PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
______ ___________ ______ _______
117.48 -0.00014296 315.14 -60.024
[1] Оболочка, Джон и Алан Вайт. “Общая Белая как оболочка Модель и Суперкалибровка”. Журнал Финансовых аналитиков, издание 57, № 6, ноябрь 2001, стр 34–43.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.