IRTree

Создание IRTree объект ценника для 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 объект цены для модели триномиального дерева 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 объект прейскуранта путем определения 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 pricer использует алгоритм HW2000 [1].

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

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

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

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

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

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

Свойства

расширить все

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

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

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

  • Probs содержит массив ячеек 3-by- N числовые массивы с вероятностями вверх, посередине, вниз для каждого узла дерева, кроме последнего уровня. Камеры массива ячеек упорядочены по корневому узлу. Массивы 3-by- 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 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 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 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 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] Халл, Джон и Алан Уайт. Общая модель корпуса белого и суперкалибрация. Financial Analysts Journal, vol. 57, № 6, Nov. 2001, pp. 34-43.

Введенный в R2020a