exponenta event banner

IRTree

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

Описание

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

  1. Использовать fininstrument для создания Cap, Floor, Swaption, Swap, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond объект прибора.

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

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

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

Для получения дополнительной информации о доступных инструментах, моделях и методах ценообразования для Cap, Floor, Swaption, Swap, FixedBond, FloatBond, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond см. раздел Выбор приборов, моделей и прайсеров.

Создание

Описание

пример

IRTreePricerObj = finpricer(PricerType,'Model',model_type,'DiscountCurve',ratecurve_obj,'TreeDates',tree_dates) создает IRTree объект pricer путем указания 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 триномиальное дерево, возвращаемое как структура со следующими свойствами:

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

В этом примере показан поток операций для оценки 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 pricer object и используйте 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 pricer object и используйте 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 pricer object и используйте 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