exponenta event banner

ZeroCouponInflationSwap

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

Описание

Создать и оценить ZeroCouponInflationSwap объект инструмента с использованием этого рабочего процесса:

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

  2. Использовать ratecurve чтобы указать модель процентной ставки для ZeroCouponInflationSwap инструмент.

  3. Использовать inflationcurve для задания модели кривой инфляции.

  4. Использовать finpricer для указания Inflation способ ценообразования.

  5. Использовать inflationCashflows для вычисления денежных потоков для ZeroCouponInflationSwap инструмент.

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

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

Создание

Описание

пример

ZCInflationSwap = fininstrument(InstrumentType,'Maturity',maturity_date,'Notional',notional_value,'FixedInflationRate',inflation_rate) создает ZeroCouponInflationSwap путем указания объекта InstrumentType и задает свойства для необходимых аргументов пары имя-значение Maturity, Notional, и FixedInflationRate.

пример

ZCInflationSwap = fininstrument(___,Name,Value) задает дополнительные свойства, используя пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, ZCInflationSwap = fininstrument("ZeroCouponInflationSwap", 'Maturity',Maturity,'Notional',Notional,'FixedInflationRate',FixedInflationRate,'StartDate',StartDate) создает ZeroCouponInflationSwap инструмент. Можно указать несколько аргументов пары имя-значение.

Входные аргументы

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

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

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

ZeroCouponInflationSwap Аргументы пары «имя-значение»

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

Пример: ZCInflationSwap = fininstrument("ZeroCouponInflationSwap", 'Maturity',Maturity,'Notional',Notional,'FixedInflationRate',FixedInflationRate,'StartDate',StartDate)
Необходимый ZeroCouponInflationSwap Аргументы пары «имя-значение»

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

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

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

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

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

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

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

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

Дополнительный ZeroCouponInflationSwap Аргументы пары «имя-значение»

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

Дата начала свопа, указанная как пара, разделенная запятыми, состоящая из 'StartDate' и скалярное значение datetime, порядковый номер даты, вектор символов даты или строка даты. Если не указано, при расчете цены ZeroCouponInflationSwap прибор, Inflation прайсер использует Settle дата DiscountCurve в качестве StartDate.

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

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

База подсчета дней для фиксированной ветви, указанная как пара, разделенная запятыми, состоящая из '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

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

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

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

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

Свойства

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

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

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

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

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

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

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

Замена даты начинается, возвращается в качестве даты и времени.

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

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

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

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

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

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

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

Функции объекта

inflationCashflowsВычислить денежные потоки для ZeroCouponInflationSwap инструмент

Примеры

свернуть все

В этом примере показан поток операций для оценки ZeroCouponInflationSwap инструмент при использовании inflationcurve объект и Inflation способ ценообразования.

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

Создать ratecurve объект с использованием ratecurve.

Settle = datetime(2021,1,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;
ZeroCurve = ratecurve('zero',Settle,ZeroDates,ZeroRates)
ZeroCurve = 
  ratecurve with properties:

                 Type: "zero"
          Compounding: -1
                Basis: 0
                Dates: [10x1 datetime]
                Rates: [10x1 double]
               Settle: 15-Jan-2021
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создать inflationcurve Объект

Создание inflationcurve объект с использованием inflationcurve.

BaseDate = datetime(2020, 10, 1);
InflationTimes = [0 calyears([1 2 3 4 5 7 10 20 30])]';
InflationIndexValues = [100 102 103.5 105 106.8 108.2 111.3 120.1 130.4 150.2]';
InflationDates = BaseDate + InflationTimes;
myInflationCurve = inflationcurve(InflationDates,InflationIndexValues)
myInflationCurve = 
  inflationcurve with properties:

                    Basis: 0
                    Dates: [10x1 datetime]
     InflationIndexValues: [10x1 double]
    ForwardInflationRates: [9x1 double]
              Seasonality: [12x1 double]

Создать ZeroCouponInflationSwap Объект КИП

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

StartDate = datetime(2021,1,1);
Maturity = datetime(2022,10,1);
FixedInflationRate = 0.015;
Notional = 2000;

ZCInflationSwap = fininstrument("ZeroCouponInflationSwap",'StartDate',StartDate,'Maturity',Maturity,'FixedInflationRate',FixedInflationRate,'Notional',Notional,'Name',"zero_coupon_inflation_swap_instrument")
ZCInflationSwap = 
  ZeroCouponInflationSwap with properties:

              Notional: 2000
    FixedInflationRate: 0.0150
                 Basis: 0
                   Lag: 3
             StartDate: 01-Jan-2021
              Maturity: 01-Oct-2022
                  Name: "zero_coupon_inflation_swap_instrument"

Создать Inflation Объект прайсера

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

outPricer = finpricer("Inflation",'DiscountCurve',ZeroCurve,'InflationCurve',myInflationCurve)
outPricer = 
  Inflation with properties:

     DiscountCurve: [1x1 ratecurve]
    InflationCurve: [1x1 inflationcurve]

Цена ZeroCouponInflationSwap Инструмент

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

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

       Results: [1x1 table]
    PricerData: []

outPR.Results
ans=table
    Price 
    ______

    9.5675

Подробнее

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

Алгоритмы

Чтобы оценить своп с индексацией инфляции по нулевому купону (ZCIS), используйте кривую инфляции и номинальную кривую дисконта (безмодельный подход), где денежные потоки дисконтируются с использованием кривой номинальной дисконтирования.

Денежные потоки при погашении t = TM: FixedLeg = N × [(1 + k) M 1] CeLeg = N × [I (TM) I0 − 1]

где

  • N - ссылочное условное обозначение подкачки.

  • k - фиксированный уровень инфляции.

  • M - количество лет жизни свопа.

  • I (TM) - индекс инфляции на дату погашения с некоторым лагом (например, три месяца).

  • I0 - индекс инфляции на дату начала с некоторым лагом (например, три месяца).

Ссылки

[1] Броуди, Д.К., Кросби, Дж. и Ли, Х. «Коррекция выпуклости в связанных с инфляцией производных». Журнал рисков. ноябрь 2008 года, стр. 124-129.

[2] Керкхоф, Дж. «Деривативы инфляции: рынки, продукты и ценообразование». Количественное исследование с фиксированным доходом, Lehman Brothers, июль 2005 года.

[3] Чжан, J. X. «Идеи своп-оценки с ограниченной индексацией цен (LPI)». Журнал Уилмотт. № 57, январь 2012 года, стр. 58-69.

Представлен в R2021a