IRTree

Создайте IRTree объект калькулятора цен для Capполподкачка, Swaption, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструмент

Описание

Создайте и оцените Capполподкачка, Swaption, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект с HullWhite или BlackKarasinski модель и IRTree метод ценообразования с помощью этого рабочего процесса:

  1. Использование fininstrument создать Capпол, Swaptionподкачка, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект.

  2. Использование finmodel задавать HullWhite или BlackKarasinski модель для Capпол, Swaptionподкачка, FixedBond, FloatBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструмент.

  3. Использование finpricer задавать IRTree объект калькулятора цен для BK или модель дерева трехчлена HW для Capпол, Swaptionподкачка, FixedBond, FloatBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструмент.

Для получения дополнительной информации об этом рабочем процессе смотрите Начало работы с Рабочими процессами Используя Основанную на объектах Среду для Оценки Финансовых инструментов.

Для получения дополнительной информации о доступных инструментах, моделях и методах ценообразования для Capпол, Swaptionподкачка, FixedBond, FloatBond, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструмент, смотрите, Выбирают 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 объект калькулятора цен.

Входные параметры

развернуть все

Тип калькулятора цен в виде строки со значением "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" модель, IRTree калькулятор цен использует алгоритм HW2000 [1].

Типы данных: char | string

Это свойство доступно только для чтения.

ratecurve объект для создания IRTree и дисконтирование потоков наличности в виде разделенной запятой пары, состоящей из 'DiscountCurve' и имя ratecurve объект.

Типы данных: object

Даты, отмечающие даты потока наличности дерева в виде разделенной запятой пары, состоящей из 'TreeDates' и NLEVELS- 1 вектор из дат. Потоки наличности с этими датами упадут на древовидные узлы. TreeDates аргумент определяет количество уровней или глубину, дерева. Перечислите даты в увеличивающемся порядке.

Типы данных: double | cell | datetime

Свойства

развернуть все

HW или дерево трехчлена BK, возвращенное как struct со следующими свойствами:

  • tObs содержит фактор времени каждого уровня дерева.

  • dObs содержит дату каждого уровня дерева.

  • Probs содержит массив ячеек 3- N числовые массивы с, середина, вниз вероятности каждого узла дерева за исключением последнего уровня. Ячейки в массиве ячеек упорядочены от корневого узла. Массивами является 3- N с первой строкой, соответствующей, перемещаются, середина строки к середине перемещения, и так далее. Каждый столбец массива представляет узел, начинающий с главного узла данного уровня.

  • CFlowT массив ячеек со столькими же элементов сколько уровни дерева. Каждый элемент массива ячеек содержит факторы времени (tObs) соответствие его уровню дерева и тем уровням перед ним.

  • Probs содержит массивы вероятности. Каждый элемент массива ячеек содержит, середина и вероятности перехода вниз для каждого узла уровня.

  • Connect содержит массив ячеек с информацией о возможности соединения для каждого узла дерева. Расположение похоже на Probs, за исключением того, что это имеет только одну строку в каждой ячейке. Номер представляет узел на следующем уровне, к которому средняя ветвь соединяется с. Верхняя ветвь соединяется со значением выше (минус одно) и более низкие подключения ветви к значению ниже (плюс одно).

  • FwdTree содержит прямой точечный уровень от одного узла до следующего. Прямой точечный уровень задан как инверсия коэффициента дисконтирования.

  • RateTree содержит процентную ставку от одного узла до следующего.

Типы данных: struct

Древовидные даты, возвращенные как скалярный datetime или массив datetime.

Типы данных: datetime

Тип модели, возвращенный как строка.

Типы данных: string

Это свойство доступно только для чтения.

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:
        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

Этот пример показывает рабочий процесс, чтобы оценить 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:
        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(BKTreePricer,FixedBOption,["all"])
Price = 0.5814
outPR = 
  priceresult with properties:

       Results: [1x4 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×4 table
     Price     Vega     Gamma      Delta 
    _______    _____    ______    _______

    0.58143    2.793    45.702    -15.842

Этот пример показывает рабочий процесс, чтобы оценить ваниль 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     0      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.4686
outPR = 
  priceresult with properties:

       Results: [1x4 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×4 table
    Price     Vega    Gamma      Delta 
    ______    ____    ______    _______

    117.47     0      315.09    -60.007

Ссылки

[1] Оболочка, Джон и Алан Вайт. “Общая Белая как оболочка Модель и Суперкалибровка”. Журнал Финансовых аналитиков, издание 57, № 6, ноябрь 2001, стр 34–43.

Введенный в R2020a