Cap

Cap инструментальный объект

Описание

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

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

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

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

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

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

Создание

Описание

пример

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

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 (СИА)

  • 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 — ШИНА/252

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

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

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

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

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

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

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

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

Типы данных: логический

Соглашения рабочего дня в виде разделенной запятой пары, состоящей из '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' и ratecurve объект. Этот объект должен быть создан с помощью ratecurve. Используйте этот дополнительный вход, если прямая кривая отличается от дисконтной кривой.

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

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

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

Свойства

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

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

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

Дата погашения дна, возвращенная как datetime.

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

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

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

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

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

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

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

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

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

Отметьте, чтобы настроить потоки наличности на основе фактического дневного количества периода, возвращенного как логическое со значением true или false.

Типы данных: логический

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

Типы данных: 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 объект калькулятора цен и использование 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 объект калькулятора цен и использование 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 объект калькулятора цен и использование 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 объект калькулятора цен и использование 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