Cap

Описание

Создайте и оцените Cap объект инструмента, использующий этот рабочий процесс:

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

  2. Использовать finmodel для задания HullWhite, BlackKarasinski, Black, или Normal модель для Cap прибора.

  3. Использовать finpricer для задания Normal, Black, HullWhite, или IRTree метод ценообразования для Cap прибора.

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

Для получения дополнительной информации о доступных моделях и методах ценообразования для Cap инструмент, см. «Выбор инструментов», «Модели» и «Цены».

Создание

Описание

пример

CapOpt = fininstrument(InstrumentType,'Strike',strike_value,'Maturity',maturity_date) создает Cap объект путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" Strike и Maturity.

The Cap инструмент поддерживает ванильные и амортизирующие прописные буквы.

пример

CapOpt = fininstrument(___,Name,Value) устанавливает необязательные свойства с помощью дополнительных пар "имя-значение" в дополнение к необходимым аргументам в предыдущем синтаксисе. Для примера, CapOpt = fininstrument("Cap",'Strike',0.65,'Maturity',datetime(2019,1,30),'Reset',4,'Principal',100,'ResetOffset',1,'Basis',1,'DaycountAdjustedCashFlow',true,'BusinessDayConvention',"follow",'ProjectionCurve',ratecurve_object,'Name',"cap_option") создает Cap опция с ударом 0,65. Можно задать несколько аргументы пары "имя-значение".

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

расширить все

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

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

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

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

Пример: CapOpt = fininstrument("Cap",'Strike',0.65,'Maturity',datetime(2019,1,30),'Reset',4,'Principal',100,'ResetOffset',1,'Basis',1,'DaycountAdjustedCashFlow',true,'BusinessDayConvention',"follow",'ProjectionCurve',ratecurve_object,'Name',"cap_option")
Требуемая Cap Аргументы в виде пар имя-значение

расширить все

Предельная цена доставки, заданная как разделенная разделенными запятой парами, состоящая из 'Strike' и скаляр неотрицательное десятичное значение.

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

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

Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что Maturity свойство сохранено как datetime.

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

Необязательные Cap Аргументы в виде пар имя-значение

расширить все

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

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

Базис отсчета дней, заданный как разделенная разделенными запятой парами, состоящая из 'Basis' и скаляр целое число с одним из следующих значений:

  • 0 - факт/факт

  • 1 - 30/360 (SIA)

  • 2 - факт/360

  • 3 - фактический/365

  • 4 - 30/360 (PSA)

  • 5 - 30/360 (ISDA)

  • 6 - 30/360 (европейский)

  • 7 - фактический/365 (японский)

  • 8 - факт/факт (ICMA)

  • 9 - факт/360 (ICMA)

  • 10 - факт/365 (ICMA)

  • 11 - 30/360E (ICMA)

  • 12 - факт/365 (ISDA)

  • 13 - BUS/252

Для получения дополнительной информации см. раздел Базиса.

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

График основной суммы или основного значения, заданный как разделенная разделенными запятой парами, состоящая из 'Principal' и скаляр число или расписание.

Principal принимает timetable, где первый столбец - даты, а второй - связанное с ним основное значение. Дата указывает на последний день действия основного значения.

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

Задержка в настройке скорости, заданная как разделенная разделенными запятой парами, состоящая из 'ResetOffset' и скалярным числом.

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

Флаг для корректировки денежных потоков на основе фактического счетчика дней периода, заданный как разделенная разделенными запятой парами, состоящая из 'DaycountAdjustedCashFlow' и скаляр со значением true или false.

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

Соглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention' и скалярную строку или вектор символов для соглашения о рабочем дне. Выбор для соглашения о рабочих днях определяет, как обрабатываются дни небизнеса. Дни небизнеса определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (для примера, уставных праздников). Значения:

  • "actual" - Дни небизнеса эффективно игнорируются. Денежные потоки, которые приходятся на нерабочие дни, считаются распределенными на фактическую дату.

  • "follow" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными на следующий рабочий день.

  • "modifiedfollow" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными на следующий рабочий день. Однако, если следующий рабочий день находится в другом месяце, вместо этого принимается предыдущий рабочий день.

  • "previous" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными в предыдущий рабочий день.

  • "modifiedprevious" - Денежные потоки, которые приходятся на день небизнеса, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.

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

Праздничные дни, используемые в вычислении рабочих дней, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays' и дат с использованием datetimes, серийных номеров дат, массива ячеек векторов символов дат или строковых массивов дат. Для примера:

H = holidays(datetime('today'),datetime(2025,12,15));
CapOpt = fininstrument("Cap",'Strike',100,'Maturity',datetime(2025,12,15),'Holidays',H)

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

Кривая ставки, используемая при прогнозировании будущих денежных потоков, заданная как разделенная разделенными запятой парами, состоящая из 'ProjectionCurve' и a ratecurve объект. Этот объект должен быть создан с помощью ratecurve. Используйте этот необязательный вход, если прямая кривая отличается от кривой скидки.

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

Определяемое пользователем имя инструмента, заданное как разделенная разделенными запятой парами, состоящая из 'Name' и скалярную строку или вектор символов.

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

Свойства

расширить все

Опция опциона, возвращенная в виде скалярного неотрицательного значения.

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

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

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

Сбрасывайте платежи частоты в год, возвращайте как скалярное число.

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

Базис отсчета дней, возвращенный как скалярное целое число.

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

Сумма основной суммы или график основного значения, возвращенные в виде скалярного числа для суммы основной суммы или расписания для графика основного значения.

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

Задержка в настройке скорости, возвращенная в виде скалярного числа.

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

Флаг для корректировки денежных потоков на основе фактического количества дней периода, возвращаемый как логический со значением true или false.

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

Соглашения о рабочих днях, возвращенные как строка.

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

Праздничные дни, используемые в вычислении рабочих дней, возвращенные как datetimes.

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

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

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

Определяемое пользователем имя инструмента, возвращаемое как строка.

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

Примеры

свернуть все

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

Создание Cap Объект прибора

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

CapOpt = fininstrument("Cap",'Strike',0.02,'Maturity',datetime(2019,1,30),'Reset',4,'Principal',100,'Basis',8,'Name',"cap_option")
CapOpt = 
  Cap with properties:

                      Strike: 0.0200
                    Maturity: 30-Jan-2019
                 ResetOffset: 0
                       Reset: 4
                       Basis: 8
                   Principal: 100
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "cap_option"

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.62,'Sigma',0.99)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.6200
    Sigma: 0.9900

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

Создайте ratecurve объект, использующий ratecurve.

Settle = datetime(2018,9,15);
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: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создание HullWhite Объект прейскуранта

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

outPricer = finpricer("analytic",'Model',HullWhiteModel,'DiscountCurve',myRC)
outPricer = 
  HullWhite with properties:

    DiscountCurve: [1x1 ratecurve]
            Model: [1x1 finmodel.HullWhite]

Ценовые Cap Инструмент

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

Price = price(outPricer,CapOpt)
Price = 2.9366

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

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

Создайте ratecurve объект, использующий ratecurve для базовой кривой процентной ставки для cap прибора.

Settle = datetime(2018,9,15);
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: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создание Cap Объект прибора

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

CapOpt = fininstrument("Cap",'Maturity',datetime(2022,9,15),'Strike',0.04,'ProjectionCurve',myRC)
CapOpt = 
  Cap with properties:

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

Создание Normal Объект модели

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

NormalModel = finmodel("Normal",'Volatility',0.01)
NormalModel = 
  Normal with properties:

    Volatility: 0.0100

Создание Normal Объект прейскуранта

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

outPricer = finpricer("analytic",'DiscountCurve',myRC,'Model',NormalModel)
outPricer = 
  Normal with properties:

    DiscountCurve: [1x1 ratecurve]
            Shift: 0
            Model: [1x1 finmodel.Normal]

Ценовые Cap Инструмент

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

[Price, outPR] = price(outPricer, CapOpt)
Price = 0.0701
outPR = 
  priceresult with properties:

       Results: [1x1 table]
    PricerData: []

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

Создание Cap Объект прибора

Использование fininstrument для создания амортизирующего Cap объект прибора.

CADates = [datetime(2020,9,1) ; datetime(2023,9,1)];
CAPrincipal = [100; 85];
Principal = timetable(CADates,CAPrincipal);

CapOpt = fininstrument("Cap",'Maturity',datetime(2023,9,1),'Strike',0.015,'Principal',Principal,'Name',"cap_amortizing_option")
CapOpt = 
  Cap with properties:

                      Strike: 0.0150
                    Maturity: 01-Sep-2023
                 ResetOffset: 0
                       Reset: 1
                       Basis: 0
                   Principal: [2x1 timetable]
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "cap_amortizing_option"

Создание Black Объект модели

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

BlackModel = finmodel("Black",'Volatility',0.2)
BlackModel = 
  Black with properties:

    Volatility: 0.2000
         Shift: 0

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

Создайте ratecurve объект, использующий ratecurve.

Settle = datetime(2018,9,1);
Type = 'zero';
ZeroTimes = [calyears([1 2 3 4 5 7 10])]';
ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168]';
ZeroDates = Settle + ZeroTimes;
            
myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates);

Создание Black Объект прейскуранта

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

outPricer = finpricer("analytic",'Model',BlackModel,'DiscountCurve',myRC)
outPricer = 
  Black with properties:

            Model: [1x1 finmodel.Black]
    DiscountCurve: [1x1 ratecurve]

Ценовые Cap Инструмент

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

Price = price(outPricer,CapOpt)
Price = 0.3897

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

Создание Cap Объект прибора

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

CapOpt = fininstrument("Cap",'Strike',0.02,'Maturity',datetime(2020,1,30),'Reset',4,'Principal',100,'Basis',8,'Name',"cap_option")
CapOpt = 
  Cap with properties:

                      Strike: 0.0200
                    Maturity: 30-Jan-2020
                 ResetOffset: 0
                       Reset: 4
                       Basis: 8
                   Principal: 100
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "cap_option"

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.01,'Sigma',0.10)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.0100
    Sigma: 0.1000

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

Создайте ratecurve объект, использующий ratecurve.

Settle = datetime(2018,9,15);
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: 15-Sep-2018
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создание IRTree Объект прейскуранта

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

CFdates = cfdates(Settle, CapOpt.Maturity, CapOpt.Reset, CapOpt.Basis);
outPricer = finpricer("IRTree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',CFdates')
outPricer = 
  HWBKTree with properties:

             Tree: [1x1 struct]
        TreeDates: [6x1 datetime]
            Model: [1x1 finmodel.HullWhite]
    DiscountCurve: [1x1 ratecurve]

Ценовые Cap Инструмент

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

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

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

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

    2.7733    31.655    -49.227    28.932

Подробнее о

расширить все

Введенный в R2020a