Создайте 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.