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 и используйте объект 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

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

свернуть все

Объект Pricer, заданный как скалярное IRTree объект прейскуранта. Использовать finpricer чтобы создать IRTree объект прейскуранта.

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

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

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

(Необязательно) Список чувствительности для вычисления, заданный как NOUT-by- 1 или 1-by- 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 является массивом с каждой строкой, держащей вероятность упражнения для заданной опции во время наблюдения дерева.

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

  • PTree

  • AITree

  • Probs.

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

  • dObs

  • CFlowT

  • Probs

  • FwdTree

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

  • PTree

  • Probs

  • ExTree

A 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