Floor

Floor объект прибора

Описание

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

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

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

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

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

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

Создание

Описание

пример

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

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

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сбрасывайте частотные платежи в год, заданные как разделенная разделенными запятой парами, состоящая из '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));
FloorOpt = fininstrument("floor",'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

Примеры

свернуть все

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

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

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

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"

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

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

FloorOpt = fininstrument("Floor",'Maturity',datetime(2022,9,15),'Strike',0.03,'ProjectionCurve',myRC)
FloorOpt = 
  Floor with properties:

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

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

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

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

    Volatility: 0.2000
         Shift: 0

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

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

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

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

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

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

[Price, outPR] = price(outPricer,FloorOpt)
Price = 8.0878
outPR = 
  priceresult with properties:

       Results: [1x1 table]
    PricerData: []

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

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

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

FloorOpt = fininstrument("Floor",'Strike',0.039,'Maturity',datetime(2019,1,30),'Reset',4,'Principal',100,'Basis',12,'Name',"floor_option")
FloorOpt = 
  Floor with properties:

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

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

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

HullWhiteModel = finmodel("HullWhite",'Alpha',0.032,'Sigma',0.04)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.0320
    Sigma: 0.0400

Создание 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]

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

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

Price = price(outPricer,FloorOpt)
Price = 1.2676

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

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

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

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

FloorOpt = fininstrument("Floor",'Maturity',datetime(2023,9,1),'Strike',0.015,'Principal',Principal,'Name',"floor_amortizing_option")
FloorOpt = 
  Floor 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: "floor_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]

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

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

Price = price(outPricer,FloorOpt)
Price = 3.0030

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

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

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

FloorOpt = fininstrument("Floor",'Strike',0.03,'Maturity',datetime(2020,1,30),'Reset',4,'Principal',100,'Basis',8,'Name',"floor_option")
FloorOpt = 
  Floor with properties:

                      Strike: 0.0300
                    Maturity: 30-Jan-2020
                 ResetOffset: 0
                       Reset: 4
                       Basis: 8
                   Principal: 100
             ProjectionCurve: [0x0 ratecurve]
    DaycountAdjustedCashFlow: 0
       BusinessDayConvention: "actual"
                    Holidays: NaT
                        Name: "floor_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, FloorOpt.Maturity, FloorOpt.Reset, FloorOpt.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]

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

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

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

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

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

    5.7821    31.821    141.45    -110.54

Подробнее о

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

Введенный в R2020a