BraceGatarekMusiela

Создайте BraceGatarekMusiela объект модели для Capпол, FixedBond, FloatBond, FloatBondOption, FixedBondOption, OptionEmbeddedFixedBond, или OptionEmbeddedFloatBond инструмент

Описание

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

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

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

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

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

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

Создание

Описание

пример

BraceGatarekMusielaModelObj = finmodel(ModelType,'Volatility',volatility_value,'Correlation',correlation_value) создает BraceGatarekMusiela объект модели путем определения ModelType и необходимые аргументы пары "имя-значение" Volatility и Correlation установить свойства.

пример

BraceGatarekMusielaModelObj = finmodel(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, BraceGatarekMusielaModelObj = finmodel("BraceGatarekMusiela",'Volatility',VolFunc,'Correlation',Correlation,'Period',1) создает BraceGatarekMusiela объект модели. Можно задать несколько аргументов пары "имя-значение".

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

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

Тип модели в виде строки со значением "BraceGatarekMusiela" или вектор символов со значением 'BraceGatarekMusiela'.

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

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

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

Пример: BraceGatarekMusielaModelObj = finmodel("BraceGatarekMusiela",'Volatility',VolFunc,'Correlation',Correlation,'Period',1)

Энергозависимость в виде разделенной запятой пары, состоящей из 'Volatility' и (NumRates-1)-by-1 cell-массив указателей на функцию. Каждый указатель на функцию должен занять время как вход и возвратить скалярную энергозависимость.

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

Корреляционная матрица в виде разделенной запятой пары, состоящей из 'Correlation' и (NumRates-1) (NumRates-1) корреляционная матрица.

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

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

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

Количество Броуновских факторов в виде разделенной запятой пары, состоящей из 'NumFactors' и числовой скаляр. Значением по умолчанию является NaN что означает тот NumFactors равно количеству уровней.

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

Период форвардных курсов в виде разделенной запятой пары, состоящей из 'Period' и числовой скаляр. Значением по умолчанию является 2, означающие форвардные курсы расположены с интервалами в 0, .5, 1, 1.5, и так далее.

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

Свойства

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

Энергозависимость, возвращенная как (NumRates-1)-by-1 cell-массив указателей на функцию.

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

Корреляционная матрица, возвращенная как (NumRates-1) (NumRates-1) корреляционная матрица.

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

Количество Броуновских факторов, возвращенных как числовой скаляр.

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

Период форвардных курсов, возвращенных как числовой скаляр.

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

Примеры

свернуть все

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

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