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 инструмент, смотрите, Выбирают Instruments, Models и Pricers.

Создание

Описание

пример

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' — Тонкая пластина, сглаживающая интерполяцию сплайна

Примечание

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

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

Для получения дополнительной информации об или данных, имеющий разброс с координатной сеткой и деталях о методах интерполяции, смотрите и Рассеянные Выборочные данные С координатной сеткой и Интерполяцию Данных С координатной сеткой.

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

Тип дивиденда, возвращенный как строка. 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 объект калькулятора цен и использование 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