IRMonteCarlo

Создайте IRMonteCarlo объект калькулятора цен для инструментов акции с помощью HullWhite, BraceGatarekMusiela, или LinearGaussian2F модель

Описание

Создайте и оцените Capполподкачка, Swaption, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект с HullWhite, BraceGatarekMusiela, SABRBraceGatarekMusiela, или LinearGaussian2F модель и IRMonteCarlo метод ценообразования с помощью этого рабочего процесса:

  1. Использование fininstrument создать FixedBond, FloatBond\capполподкачка, Swaption, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект.

  2. Использование finmodel задавать HullWhite или LinearGaussian2F модель для Capполподкачка, Swaption, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект.

    Использование finmodel задавать BraceGatarekMusiela или SABRBraceGatarekMusiela модель для Capпол, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект.

  3. При использовании HullWhite или LinearGaussian2F модель, использовать finpricer задавать IRMonteCarlo объект калькулятора цен для Capполподкачка, Swaption, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект.

    При использовании BraceGatarekMusiela или SABRBraceGatarekMusiela модель, использовать finpricer задавать IRMonteCarlo объект калькулятора цен для Capпол, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструментальный объект.

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

Для получения дополнительной информации о доступных инструментах, моделях и методах ценообразования для Capполподкачка, Swaption, FloatBond, FixedBond, FixedBondOption, FloatBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструменты, смотрите, Выбирают Instruments, Models и Pricers.

Создание

Описание

пример

IRMonteCarloPricerObj = finpricer(PricerType,'Model',model,'DiscountCurve',ratecurve_obj,'SimulationDates',simulation_dates) создает IRMonteCarlo объект калькулятора цен путем определения PricerType и устанавливает свойства с помощью необходимых аргументов пары "имя-значение" Model, DiscountCurve, и SimulationDates.

пример

IRMonteCarloPricerObj = finpricer(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, IRMonteCarloPricerObj = finpricer("irmontecarlo",'Model',HWModel,'DiscountCurve',ratecurve_obj,'SimulationDates',[datetime(2018,1,30); datetime(2019,1,30)],'NumTrials',500) создает IRMonteCarlo объект калькулятора цен использование HullWhite модель. Можно задать несколько аргументов пары "имя-значение".

Входные параметры

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

Тип калькулятора цен в виде строки со значением "IRMonteCarlo" или вектор символов со значением 'IRMonteCarlo'.

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

IRMonteCarlo Аргументы в виде пар имя-значение

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

Пример: IRMonteCarloPricerObj = finpricer("irmontecarlo",'Model',HWModel,'DiscountCurve',ratecurve_obj,'SimulationDates',[datetime(2018,1,30); datetime(2019,1,30)],'NumTrials',500)
Необходимый IRMonteCarlo Аргументы в виде пар имя-значение

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

Объект модели в виде разделенной запятой пары, состоящей из 'Model' и имя ранее созданного HullWhite, LinearGaussian2F, BraceGatarekMusiela, или SABRBraceGatarekMusiela объект модели. Создайте использование объекта модели finmodel.

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

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

Примечание

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

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

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

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

Дополнительный IRMonteCarlo Аргументы в виде пар имя-значение

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

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

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

priceВычислите цену за инструмент процентной ставки с IRMonteCarlo калькулятор цен

Примеры

свернуть все

Этот пример показывает рабочий процесс, чтобы оценить FixedBond инструмент при использовании HullWhite модель и IRMonteCarlo метод ценообразования.

Создайте FixedBond Инструментальный объект

Используйте fininstrument создать FixedBond инструментальный объект.

FixB = fininstrument("FixedBond","Maturity",datetime(2022,9,15),"CouponRate",0.05,'Name',"fixed_bond")
FixB = 
  FixedBond with properties:

                  CouponRate: 0.0500
                      Period: 2
                       Basis: 0
                EndMonthRule: 1
                   Principal: 100
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                   IssueDate: NaT
             FirstCouponDate: NaT
              LastCouponDate: NaT
                   StartDate: NaT
                    Maturity: 15-Sep-2022
                        Name: "fixed_bond"

Создайте HullWhite Объект модели

Используйте finmodel создать HullWhite объект модели.

HullWhiteModel = finmodel("HullWhite",'Alpha',0.32,'Sigma',0.49)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.3200
    Sigma: 0.4900

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

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2019,1,1);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 01-Jan-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте IRMonteCarlo Объект калькулятора цен

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

outPricer = finpricer("IRMonteCarlo",'Model',HullWhiteModel,'DiscountCurve',myRC,'SimulationDates',ZeroDates)
outPricer = 
  HWMonteCarlo with properties:

          NumTrials: 1000
      RandomNumbers: []
      DiscountCurve: [1x1 ratecurve]
    SimulationDates: [01-Jul-2019    01-Jan-2020    01-Jan-2021    ...    ]
              Model: [1x1 finmodel.HullWhite]

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

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

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

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

outPR.Results
ans=1×4 table
    Price      Delta     Gamma     Vega
    ______    _______    ______    ____

    115.03    -397.13    1430.4     0  

Этот пример показывает рабочий процесс, чтобы оценить Cap инструмент при использовании LinearGaussian2F модель и IRMonteCarlo метод ценообразования.

Создайте Cap Инструментальный объект

Используйте fininstrument создать Cap инструментальный объект.

CapOpt = fininstrument("Cap","Maturity",datetime(2022,9,15),'Strike',0.01,'Reset',2,'Name',"cap_option")
CapOpt = 
  Cap with properties:

                      Strike: 0.0100
                    Maturity: 15-Sep-2022
                 ResetOffset: 0
                       Reset: 2
                       Basis: 0
                   Principal: 100
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "cap_option"

Создайте LinearGaussian2F Объект модели

Используйте finmodel создать LinearGaussian2F объект модели.

LinearGaussian2FModel = finmodel("LinearGaussian2F",'Alpha1',0.07,'Sigma1',0.01,'Alpha2',0.5,'Sigma2',0.006,'Correlation',-0.7)
LinearGaussian2FModel = 
  LinearGaussian2F with properties:

         Alpha1: 0.0700
         Sigma1: 0.0100
         Alpha2: 0.5000
         Sigma2: 0.0060
    Correlation: -0.7000

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

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2019,1,1);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 01-Jan-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте IRMonteCarlo Объект калькулятора цен

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

outPricer = finpricer("IRMonteCarlo",'Model',LinearGaussian2FModel,'DiscountCurve',myRC,'SimulationDates',ZeroDates)
outPricer = 
  G2PPMonteCarlo with properties:

          NumTrials: 1000
      RandomNumbers: []
      DiscountCurve: [1x1 ratecurve]
    SimulationDates: [01-Jul-2019    01-Jan-2020    01-Jan-2021    ...    ]
              Model: [1x1 finmodel.LinearGaussian2F]

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

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

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

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

outPR.Results
ans=1×4 table
    Price     Delta     Gamma          Vega       
    ______    ______    _____    _________________

    1.2389    132.71    11038    131.63    -163.71

Этот пример показывает рабочий процесс, чтобы оценить Floor инструмент при использовании BraceGatarekMusiela модель и IRMonteCarlo метод ценообразования.

Создайте инструментальный объект пола

Используйте fininstrument создать Floor инструментальный объект.

FloorOpt = fininstrument("Floor","Maturity",datetime(2022,9,15),'Strike',0.05,'Reset',1,'Name',"floor_option")
FloorOpt = 
  Floor with properties:

                      Strike: 0.0500
                    Maturity: 15-Sep-2022
                 ResetOffset: 0
                       Reset: 1
                       Basis: 0
                   Principal: 100
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "floor_option"

Создайте объект модели BraceGatarekMusiela

Используйте finmodel создать BraceGatarekMusiela объект модели.

BGMVolFunc = @(a,t) (a(1)*t + a(2)).*exp(-a(3)*t) + a(4);
BGMVolParams = [.3 -.02 .7 .14];
numRates = 20;
VolFunc(1:numRates-1) = {@(t) BGMVolFunc(BGMVolParams,t)};
Beta = .08;
CorrFunc = @(i,j,Beta) exp(-Beta*abs(i-j));
Correlation = CorrFunc(meshgrid(1:numRates-1)',meshgrid(1:numRates-1),Beta);
BGM = finmodel("BraceGatarekMusiela",'Volatility',VolFunc,'Correlation',Correlation,'Period',1);

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

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2019,1,1);
Type = 'zero';
ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293]';
ZeroDates = Settle + ZeroTimes;
 
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [9x1 datetime]
                Rates: [9x1 double]
               Settle: 01-Jan-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте IRMonteCarlo Объект калькулятора цен

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

outPricer = finpricer("IRMonteCarlo",'Model',BGM,'DiscountCurve',myRC,'SimulationDates',ZeroDates)
outPricer = 
  BGMMonteCarlo with properties:

          NumTrials: 1000
      RandomNumbers: []
      DiscountCurve: [1x1 ratecurve]
    SimulationDates: [01-Jul-2019    01-Jan-2020    01-Jan-2021    ...    ]
              Model: [1x1 finmodel.BraceGatarekMusiela]

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

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

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

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

outPR.Results
ans=1×3 table
    Price     Delta     Gamma 
    ______    ______    ______

    14.788    -400.4    1280.7

Введенный в R2021b