exponenta event banner

FiniteDifference

Создать FiniteDifference объект pricer для Barrier, DoubleBarrier, или Vanilla инструмент с использованием BlackScholes, Heston, Merton, или Bates модель

Описание

Создать и оценить Vanilla, Barrier, или DoubleBarrier объект прибора с BlackScholes, Heston, Bates, Merton, или Dupire модель и FiniteDifference метод ценообразования с использованием этого потока операций:

  1. Использовать fininstrument для создания Barrier, DoubleBarrier, или Vanilla объект прибора.

  2. Использовать finmodel для указания BlackScholes модель для Barrier или DoubleBarrier инструмент или Heston, Bates, Dupire, или Merton модель для Vanilla инструмент.

  3. Использовать finpricer для указания FiniteDifference ценовой объект для Barrier, DoubleBarrier, или Vanilla инструмент.

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

Для получения дополнительной информации о доступных методах ценообразования для Vanilla, Barrier, или DoubleBarrier см. раздел Выбор приборов, моделей и прайсеров.

Создание

Описание

пример

FiniteDifferencePricerObj = finpricer(PricerType,'Model',model,'DiscountCurve',ratecurve_obj,'SpotPrice',spotprice_value) создает FiniteDifference объект pricer путем указания PricerType и задает свойства для необходимых аргументов пары имя-значение Model, DiscountCurve, и SpotPrice.

пример

FiniteDifferencePricerObj = finpricer(___,Name,Value) задает дополнительные свойства, используя дополнительные пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, FiniteDifferencePricerObj = finpricer("FiniteDifference",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',100,'DividendValue',.025,'DividendType',"cash") создает FiniteDifference объект прайсера. Можно указать несколько аргументов пары имя-значение.

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

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

Тип прайсера, указанный как строка со значением "FiniteDifference" или вектор символов со значением 'FiniteDifference'.

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

FiniteDifference Аргументы пары «имя-значение»

Укажите требуемые и необязательные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: FiniteDifferencePricerObj = finpricer("FiniteDifference",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',100,'DividendValue',.025,'DividendType',"cash")
Необходимый FiniteDifference Аргументы пары «имя-значение»

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

Объект модели, указанный как разделенная запятыми пара, состоящая из 'Model' и имя ранее созданного Merton, Bates, или Heston объект модели с использованием finmodel.

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

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

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

Примечание

Задать плоскую ratecurve объект для DiscountCurve. При использовании непластового ratecurve , программное обеспечение использует скорость в ratecurve объект на Maturity и предполагает, что значение является постоянным для срока действия опциона на акционерный капитал.

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

Текущая цена базового актива, указанная как пара, разделенная запятыми, состоящая из 'SpotPrice' и скалярный неотрицательный числовой.

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

Дополнительный FiniteDifference Аргументы пары «имя-значение»

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

Дивидендная доходность или график дивидендов, указанный как пара, разделенная запятыми, состоящая из 'DividendValue' и скаляр для дивидендной доходности или график для дивидендного графика.

Типы данных: double | timetable

Тип дивидендов, определяемый как разделенная запятыми пара, состоящая из 'DividendType' и символьный вектор или строку. DividendType должно быть "cash" для фактических дивидендов в долларах или "continuous" для непрерывного дивидендного дохода.

Примечание

При использовании Barrier прибор, необходимо установить DividendType кому "cash".

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

Размер точечной сетки для сетки конечных разностей, указанной как разделенная запятыми пара, состоящая из 'SpotGridSize' и скалярный числовой.

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

Максимальная цена для границы сетки цен, указанная как пара, разделенная запятыми, состоящая из 'SpotPriceMax' и положительный скаляр.

Типы данных: single | double

Количество узлов сетки дисперсии для сетки конечных разностей, указанной как разделенная запятыми пара, состоящая из 'VarianceGridSize' и скалярный числовой.

Примечание

VarianceGridSize поддерживается только при использовании Heston или Bates модель.

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

Максимальное отклонение для границы сетки дисперсии, указанное как пара, разделенная запятыми, состоящая из 'VarianceMax' как скалярный числовой.

Примечание

VarianceMax поддерживается только при использовании Heston или Bates модель.

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

Количество узлов временной сетки для сетки конечных разностей, указанной как разделенная запятыми пара, состоящая из 'TimeGridSize' и положительный числовой скаляр.

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

Метод интерполяции для оценки подразумеваемой поверхности летучести по ImpliedVolData для использования только с Dupire модель, указанная как разделенная запятыми пара, состоящая из 'InterpMethod' и вектор строки или символа с одним из следующих значений:

  • 'linear' - Линейная интерполяция

  • 'makima' - Модифицированная Akima кубическая эрмитовая интерполяция

  • 'spline' - Интерполяция кубических сплайнов

  • 'tpaps' - Тонколистовая сглаживающая сплайновая интерполяция

Примечание

'tpaps' метод использует функцию сглаживания тонколистовых сплайнов из Toolbox™ «Фитинг кривой».

'makima' и 'spline' методы работают только для данных с привязкой к сетке. Для разрозненных данных используйте 'linear' или 'tpaps' методы.

Дополнительные сведения о привязанных к сетке или разбросанных по сетке данных и подробные сведения о методах интерполяции см. в разделах Привязанные к сетке и разбросанные по сетке данные выборки и Интерполяция привязанных к сетке данных.

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

Свойства

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

Модель, возвращенная как объект модели.

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

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

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

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

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

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

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

Типы данных: double | timetable

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

Тип дивидендов, возвращаемый в виде строки. DividendType является либо "cash" для фактических дивидендов в долларах или "continuous" для непрерывного дивидендного дохода.

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

Свойства сетки, возвращенные как структура.

Для Dupire модель, GridProperties содержит следующие поля:

  • SpotGridSize - размер точечной сетки для сетки конечных разностей, возвращаемый в виде скалярного числа.

  • SpotPriceMax - Максимальная цена для границы сетки цен, возвращаемая как положительный скаляр.

  • TimeGridSize - количество узлов временной сетки для сетки конечных разностей, возвращаемых как положительный числовой скаляр.

  • InterpMethod - метод интерполяции для оценки подразумеваемой поверхности волатильности, возвращаемый в виде строки.

Для Heston или Bates модель, GridProperties содержит следующие поля:

  • VarianceGridSize - размер сетки дисперсии для сетки конечных разностей, возвращаемый в виде скалярного числа.

  • VarianceMax - Максимальная дисперсия для границы сетки дисперсии, возвращаемая в виде скалярного числа.

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

Функции объекта

priceРасчетная цена долевого инструмента с FiniteDifference калькулятор цен

Примеры

свернуть все

В этом примере показан поток операций для оценки Barrier инструмент при использовании BlackScholes модель и FiniteDifference способ ценообразования.

Создать Barrier Объект КИП

Использовать fininstrument для создания Barrier объект прибора.

BarrierOpt = fininstrument("Barrier",'Strike',105,'ExerciseDate',datetime(2019,1,1),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DO",'BarrierValue',40,'Name',"barrier_option")
BarrierOpt = 
  Barrier with properties:

       OptionType: "call"
           Strike: 105
      BarrierType: "do"
     BarrierValue: 40
           Rebate: 0
    ExerciseStyle: "american"
     ExerciseDate: 01-Jan-2019
             Name: "barrier_option"

Создать BlackScholes Объект модели

Использовать finmodel для создания BlackScholes объект модели.

BlackScholesModel = finmodel("BlackScholes",'Volatility',0.30)
BlackScholesModel = 
  BlackScholes with properties:

     Volatility: 0.3000
    Correlation: 1

Создать ratecurve Объект

Создание плоского ratecurve объект с использованием ratecurve.

Settle = datetime(2018,1,1);
Maturity = datetime(2023,1,1);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',1)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 1
                Dates: 01-Jan-2023
                Rates: 0.0350
               Settle: 01-Jan-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создать FiniteDifference Объект прайсера

Использовать finpricer для создания FiniteDifference pricer object и используйте ratecurve объект для 'DiscountCurve' аргумент пары имя-значение.

outPricer = finpricer("FiniteDifference",'Model',BlackScholesModel,'DiscountCurve',myRC,'SpotPrice',100)
outPricer = 
  FiniteDifference with properties:

     DiscountCurve: [1x1 ratecurve]
             Model: [1x1 finmodel.BlackScholes]
         SpotPrice: 100
    GridProperties: [1x1 struct]
      DividendType: "continuous"
     DividendValue: 0

Цена Barrier Инструмент

Использовать price для расчета цены и чувствительности для Barrier инструмент.

[Price, outPR] = price(outPricer,BarrierOpt,["all"])
Price = 11.3230
outPR = 
  priceresult with properties:

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

outPR.Results
ans=1×7 table
    Price      Delta     Gamma     Lambda     Theta      Rho       Vega 
    ______    _______    ______    ______    _______    ______    ______

    11.323    0.54126    0.0132    4.7802    -7.4408    42.766    39.627

Представлен в R2020a