exponenta event banner

AssetMonteCarlo

Создать AssetMonteCarlo объект прайсера для долевых инструментов с использованием BlackScholes, Merton, Heston, или Bates модель

Описание

Создать и оценить Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouch, Binary объект прибора с BlackScholes, Bachelier, Merton, Heston, или Bates модель и AssetMonteCarlo метод ценообразования с использованием этого потока операций:

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

  2. Использовать finmodel для указания BlackScholes модель для Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouch, или Binary инструмент.

    Использовать finmodel для указания Bachelier модель для Vanilla, Spread или Binary инструмент.

    Использовать finmodel для указания Merton, Bates, или Heston модель для Vanilla, Barrier, Lookback, Asian, DoubleBarrier, Touch, DoubleTouch, или Binary инструмент.

  3. Использовать finpricer для указания AssetMonteCarlo ценовой объект для Vanilla, Barrier, Lookback, Asian, Spread, DoubleBarrier, Touch, DoubleTouch, или Binary инструмент.

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

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

Создание

Описание

пример

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

пример

AssetMonteCarloPricerObj = finpricer(___,Name,Value) задает дополнительные свойства, используя дополнительные пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, AssetMonteCarloPricerObj = finpricer("assetmontecarlo",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',1000,'SimulationDates',[datetime(2018,1,30); datetime(2019,1,30)],'NumTrials',500,'DividendType','continuous','DividendValue',0.3) создает AssetMonteCarlo ценовой объект с использованием BlackScholes модель. Можно указать несколько аргументов пары имя-значение.

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

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

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

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

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

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

Пример: AssetMonteCarloPricerObj = finpricer("assetmontecarlo",'Model',BSModel,'DiscountCurve',ratecurve_obj,'SpotPrice',1000,'SimulationDates',[datetime(2018,1,30); datetime(2019,1,30)],'NumTrials',500,'DividendType','continuous','DividendValue',0.3)
Необходимый AssetMonteCarlo Аргументы пары «имя-значение»

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

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

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

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

Примечание

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

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

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

Примечание

Если используется Vanilla, Binary, или Spread инструмент с Bachelier модель, SpotPrice может быть отрицательным числовым значением.

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

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

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

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

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

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

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

Зависимые случайные вариации, указанные как пара, разделенная запятыми, состоящая из 'RandomNumbers' и NSimulationDatesоколо-NBrowniansоколо-NTrials 3D массив временных рядов. Массив временных рядов 3D имеет следующие поля:

  • ZNSimulationDatesоколо-NBrowniansоколо-NTrials 3D массив временных рядов зависимых случайных вариаций, используемых для генерации броуновского вектора движения (то есть процессов Винера), которые управляют моделированием.

  • NNSimulationDatesоколо-NBrowniansоколо-NTrials 3D массив временных рядов зависимых случайных вариаций, используемых в качестве количества скачков.

  • SizeJNSimulationDatesоколо-NBrowniansоколо-NTrials 3D массив временных рядов зависимых случайных вариаций, используемых в качестве размеров перехода.

Примечание

BlackScholes и Heston модели требуют только Z поле.

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

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

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

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

Примечание

Укажите скаляр, если DividendType является "continuous" и расписание, если DividendType является "cash".

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

Свойства

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

Объект модели, возвращенный как объект.

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

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

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

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

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

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

Даты моделирования, возвращаемые в виде массива datetime.

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

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

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

Зависимые случайные вариации, возвращаемые как NSimulationDatesоколо-NBrowniansоколо-NTrials 3D массив временных рядов.

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

Расчет для ранней премии упражнения, возвращаемой как дескриптор скалярной функции. Дефолт @longstaffschwartz_cubic использует метод наименьших квадратов Лонгстаффа-Шварца.

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

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

DoubleBarrierOpt = fininstrument("DoubleBarrier",'Strike',100,'ExerciseDate',datetime(2020,8,15),'OptionType',"call",'ExerciseStyle',"american",'BarrierType',"DKO",'BarrierValue',[110 80],'Name',"doublebarrier_option")
DoubleBarrierOpt = 
  DoubleBarrier with properties:

       OptionType: "call"
           Strike: 100
     BarrierValue: [110 80]
    ExerciseStyle: "american"
     ExerciseDate: 15-Aug-2020
      BarrierType: "dko"
           Rebate: [0 0]
             Name: "doublebarrier_option"

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

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

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

     Volatility: 0.3000
    Correlation: 1

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

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

Settle = datetime(2017,9,15);
Maturity = datetime(2023,9,15);
Rate = 0.035;
myRC = ratecurve('zero',Settle,Maturity,Rate,'Basis',12)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 12
                Dates: 15-Sep-2023
                Rates: 0.0350
               Settle: 15-Sep-2017
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

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

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

ExerciseDate = datetime(2020,08,15);
Settle = datetime(2017,9,15);
outPricer = finpricer("AssetMonteCarlo","DiscountCurve",myRC,"Model",BlackScholesModel,'SpotPrice',100,'simulationDates', Settle+days(1):days(1):ExerciseDate);

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

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

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

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

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

    6.9563    0.23644    -0.11701    3.399     0.14976    -99.727    -8.344

В этом примере показан поток операций для оценки фиксированного страйка. Asian инструмент при использовании Heston модель и AssetMonteCarlo способ ценообразования.

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

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

AsianOpt = fininstrument("Asian",'ExerciseDate',datetime(2022,9,15),'Strike',100,'OptionType',"put",'Name',"asian_option")
AsianOpt = 
  Asian with properties:

          OptionType: "put"
              Strike: 100
         AverageType: "arithmetic"
        AveragePrice: 0
    AverageStartDate: NaT
       ExerciseStyle: "european"
        ExerciseDate: 15-Sep-2022
                Name: "asian_option"

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

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

HestonModel = finmodel("Heston",'V0',0.032,'ThetaV',0.1,'Kappa',0.003,'SigmaV',0.02,'RhoSV',0.9)
HestonModel = 
  Heston with properties:

        V0: 0.0320
    ThetaV: 0.1000
     Kappa: 0.0030
    SigmaV: 0.0200
     RhoSV: 0.9000

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

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

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

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

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

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

outPricer = finpricer("AssetMonteCarlo",'DiscountCurve',myRC,"Model",HestonModel,'SpotPrice',80,'simulationDates',Settle+calmonths(1):calmonths(1):datetime(2022,9,15))
outPricer = 
  HestonMonteCarlo with properties:

      DiscountCurve: [1x1 ratecurve]
          SpotPrice: 80
    SimulationDates: [1x48 datetime]
          NumTrials: 1000
      RandomNumbers: []
              Model: [1x1 finmodel.Heston]
       DividendType: "continuous"
      DividendValue: 0

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

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

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

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

outPR.Results 
ans=1×8 table
    Price     Delta       Gamma      Lambda       Rho       Theta      Vega     VegaLT 
    _____    ________    ________    _______    _______    _______    ______    _______

    14.8     -0.71073    0.023453    -3.8418    -173.12    0.61794    27.992    0.15319

В этом примере показан workflow-процесс по цене американского опциона для Vanilla инструмент при использовании Bachelier модель и AssetMonteCarlo способ ценообразования.

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

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

VanillaOpt = fininstrument("Vanilla",'Strike',105,'ExerciseDate',datetime(2022,9,15),'OptionType',"call",'ExerciseStyle',"american",'Name',"vanilla_option")
VanillaOpt = 
  Vanilla with properties:

       OptionType: "call"
    ExerciseStyle: "american"
     ExerciseDate: 15-Sep-2022
           Strike: 105
             Name: "vanilla_option"

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

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

BachelierModel = finmodel("Bachelier","Volatility",0.2)
BachelierModel = 
  Bachelier with properties:

     Volatility: 0.2000
    Correlation: 1

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

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

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

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

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

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

outPricer = finpricer("AssetMonteCarlo",'DiscountCurve',myRC,"Model",BachelierModel,'SpotPrice',150,'simulationDates',datetime(2022,9,15))
outPricer = 
  BachelierMonteCarlo with properties:

      DiscountCurve: [1x1 ratecurve]
          SpotPrice: 150
    SimulationDates: 15-Sep-2022
          NumTrials: 1000
      RandomNumbers: []
              Model: [1x1 finmodel.Bachelier]
       DividendType: "continuous"
      DividendValue: 0

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

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

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

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

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

    57.378    0.99107    -1.579e-14    2.5909    291.94    -2.5576    -2.1316e-10

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