exponenta event banner

Пол

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.

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' и даты с использованием времени даты, серийных номеров дат, массива ячеек векторов символов даты или массива строк даты. Например:

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

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

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

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

Свойства

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

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

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

Дата погашения этажа, возвращенная в качестве даты и времени.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типы данных: 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 object и используйте 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 object и используйте 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 object и используйте 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 object и используйте 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