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 pricer использует 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.

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

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

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

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

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

Начинается обмен датой, возвращается как datetime.

Типы данных: 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 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)M1]InflationLeg=N×[I(TM)I01]

где

  • N является условным обозначением ссылки на своп.

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

  • M - это количество лет для срока службы свопа.

  • I (T M) - индекс инфляции на дату погашения с некоторой задержкой (для примера, трех месяцев).

  • I 0 - индекс инфляции на дату начала с некоторой задержкой (для примера, трех месяцев).

Ссылки

[1] Brody, D. C., Crosby, J. and Li, H. «Convexity Adjustments in Inflation-Linked Derivatives». Журнал «Риск». Ноябрь 2008, с. 124-129.

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

[3] Zhang, J. X. «Limited Price Indexation (LPI) Swap Valuation Ideas». Журнал Wilmott. № 57, январь 2012, с. 58-69.

Введенный в R2021a