FiniteDifference

Создание FiniteDifference объект ценника для 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 объект прейскуранта путем определения 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' - Модифицированная кубическая эрмитовая интерполяция Акима

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

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

Примечание

The 'tpaps' метод использует функцию тонкого диска сглаживания сплайна из Curve Fitting Toolbox™.

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

Для получения дополнительной информации о сетчатых или рассеянных данных и деталях о методах интерполяции, см. «Сетчатые и рассеянные выборочные данные» и Интерполяция сетчатых данных.

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

Свойства

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

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

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

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

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

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

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

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

Дивидендное выражение или дивидендный график, возвращенные в виде скаляра для дивидендного выражения или расписания для дивидендного графика.

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

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

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

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

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

Для 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 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