price

Вычислите цену за инструмент процентной ставки с IRTree калькулятор цен

Описание

пример

[Price,PriceResult] = price(inpPricer,inpInstrument) вычисляет инструментальную цену и связанную информацию о ценах на основе объекта inpPricer оценки и инструментальный объект inpInstrument.

пример

[Price,PriceResult] = price(___,inpSensitivity) добавляет дополнительный аргумент, чтобы задать чувствительность.

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить 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

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

свернуть все

Объект Pricer в виде скалярного IRTree объект калькулятора цен. Использование finpricer создать IRTree объект калькулятора цен.

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

Объект Instrument в виде скаляра или вектора из ранее созданных инструментальных объектов. Создайте инструментальное использование объектов fininstrument. Следующие инструментальные объекты поддерживаются:

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

(Необязательно) Список чувствительности, чтобы вычислить в виде NOUT- 1 или 1- NOUT массив ячеек из символьных векторов или массив строк с возможными значениями 'Price'\delta\Gamma, 'Vega', и 'All'.

inpSensitivity = {'All'} или inpSensitivity = ["All"] указывает, что выходом является 'Delta'\Gamma, 'Vega', и 'Price'. Это совпадает с определением inpSensitivity включать каждую чувствительность.

Поддерживаемая чувствительность зависит от inpInstrument.

inpInstrumentПоддерживаемая чувствительность
Cap{'delta','gamma','vega','price'}
Floor{'delta','gamma','vega','price'}
Swaption{'delta','gamma','vega','price'}
FixedBond{'delta','gamma','vega','price'}
OptionEmbeddedFixedBond{'delta','gamma','vega','price'}
FixedBondOption{'delta','gamma','vega','price'}
FloatBond{'delta','gamma','vega','price'}
FloatBondOption{'delta','gamma','vega','price'}
OptionEmbeddedFloatBond{'delta','gamma','vega','price'}

Примечание

Чувствительность вычисляется на основе сдвигов выражения 1 пункта, где ShiftValue = 1/10000. Вся чувствительность возвращена как долларовая чувствительность. Чтобы найти чувствительность на доллар, разделите чувствительность на их соответствующую инструментальную цену.

Пример: inpSensitivity = {'delta','gamma','vega','price'}

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

Выходные аргументы

свернуть все

Инструментальная цена, возвращенная как числовое.

Ценовой результат, возвращенный как PriceResult объект. Объект имеет следующие поля:

  • PriceResult.Results — Таблица результатов, которая включает чувствительность (если вы задаете inpSensitivity)

  • PriceResult.PricerData — Структура для данных о калькуляторе цен, которые зависят от инструмента, который оценивается

    FixedBond, FloatBond, FixedBondOption, и OptionEmbeddedFixedBond имейте следующие разделяемые поля для PriceResult.PricerData.PriceTree:

    • tObs содержит времена наблюдения.

    • Connect содержит векторы возможности соединения. Каждый элемент в массиве ячеек описывает, как узлы на том уровне соединяются со следующим. Для данного древовидного уровня существует NumNodes элементы в векторе, и они содержат индекс узла на следующем уровне, с которым соединяется средняя ветвь. Вычитание 1 от того значения указывает, где подключения-ветви к, и добавление 1 указывают, где вниз переходят подключения к.

Следующие дополнительные поля для PriceResult.PricerData.PriceTree зависьте от инструментального типа:

  • PTree содержит чистые цены.

  • AITree содержит начисленные проценты.

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

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

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

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

  • ExTree содержит массивы индикатора осуществления. Каждым элементом массива ячеек является массив, содержащий 1где опция осуществлена и 0где это не.

  • ProbTree содержит вероятность достижения каждого узла от корневого узла.

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

  • ExProbsByTreeLevel массив с каждой строкой, содержащей вероятность осуществления для данной опции в каждый древовидный раз наблюдения.

FixedBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:

  • PTree

  • AITree

  • Probs.

FloatBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:

  • dObs

  • CFlowT

  • Probs

  • FwdTree

FixedBondOption инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:

  • PTree

  • Probs

  • ExTree

OptionEmbeddedFixedBond инструмент имеет эти дополнительные поля в PriceResult.PricerData.PriceTree:

  • PTree

  • ExTree

  • ProbTree

  • ExProbTree

  • ExProbsByTreeLevel

Следующая таблица отображает PriceResult.PricerData.PriceTree поля связаны с каждым инструментом.

PriceResult.PricerData.PriceTree Поля FixedBondFloatBondFixedBondOptionOptionEmbeddedFixedBond
tObs
Connect
PTreeНет
AITreeНетНетНет
ProbsНет
dObsНетНетНет
CFlowTНетНетНет
FwdTreeНет
ExTreeНетНет
ProbTreeНетНетНет
ExProbTreeНетНетНет
ExProbsByTreeLevelНетНетНет

Введенный в R2020a