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 объект прейскуранта путем определения 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-by- NBrownians-by- NTrials 3D массив временных рядов. Массив 3D временных рядов имеет следующие поля:

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

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

  • SizeJNSimulationDates-by- NBrownians-by- 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-by- NBrownians-by- NTrials 3D массив временных рядов.

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

Расчет на премию за раннее упражнение, возвращенный как скалярный указатель на функцию. Значение по умолчанию @longstaffschwartz_cubic использует метод Longstaff-Schwartz методом наименьших квадратов.

Типы данных: 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 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 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

Этот пример показывает рабочий процесс, чтобы оценить американскую опцию для 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 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