ZeroCouponInflationSwap

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

Описание

Создайте и оцените ZeroCouponInflationSwap инструментальный объект для одного или нескольких инструментов Подкачки Инфляции Нулевого купона с помощью этого рабочего процесса:

  1. Использование fininstrument создать ZeroCouponInflationSwap инструментальный объект для одного или нескольких инструментов Подкачки Инфляции Нулевого купона.

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

  3. Используйте inflationcurve чтобы задать инфляцию изгибают модель.

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

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

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

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

Создание

Описание

пример

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', NINST- 1 массив строк со значениями "ZeroCouponInflationSwap", или NINST- 1 массив ячеек из символьных векторов со значениями 'ZeroCouponInflationSwap'.

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

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

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

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

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

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

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

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

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

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

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

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

Дневной базис количества для фиксированного участка в виде разделенной запятой пары, состоящей из 'Basis' и скалярное целое число или NINST- 1 вектор из целых чисел для следующего:

  • 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

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

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

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

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

Свойства

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

Подкачайте дату погашения, возвращенную как скалярный datetime или NINST- 1 вектор из datetimes.

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

Отвлеченная сумма, возвращенная как числовой скаляр или NINST- 1 вектор из десятичных чисел.

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

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

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

Подкачка даты запускается, возвращенный как скалярный datetime или NINST- 1 вектор из datetimes.

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

Дневной базис количества для фиксированного участка, возвращенного как скалярное целое число или NINST- 1 вектор из целых чисел.

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

Задержка индексации в месяцах, возвращенных как числовой скаляр или NINST- 1 числовой вектор.

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

Пользовательское имя для инструмента, возвращенного как строка или NINST- 1 массив строк.

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

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

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

Создайте ratecurve объект с помощью ratecurve.

Settle = datetime(2021,12,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-Dec-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,5,1 ; 2021,6,1 ; 2021,7,1]);
Maturity = datetime([2022,10,1 ; 2022,11,1 ;2022,12,1]);
FixedInflationRate = 0.015;
Notional = [20000 ; 30000 ; 40000] ;

ZCInflationSwap = fininstrument("ZeroCouponInflationSwap",'StartDate',StartDate,'Maturity',Maturity,'FixedInflationRate',FixedInflationRate,'Notional',Notional,'Name',"zero_coupon_inflation_swap_instrument")
ZCInflationSwap=3×1 object
  3x1 ZeroCouponInflationSwap array with properties:

    Notional
    FixedInflationRate
    Basis
    Lag
    StartDate
    Maturity
    Name

Создайте Inflation Объект калькулятора цен

Используйте finpricer создать Inflation объект калькулятора цен и использование 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 = 3×1

   59.4576
   80.6037
   89.4137

outPR=1×3 object
  1x3 priceresult array with properties:

    Results
    PricerData

outPR.Results
ans=table
    Price 
    ______

    59.458

ans=table
    Price 
    ______

    80.604

ans=table
    Price 
    ______

    89.414

Больше о

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

Алгоритмы

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

 Потоки наличности в зрелости t=TM:FixedLeg=N×[(1+k)M1]InflationLeg=N×[I(TM)I01]

где

  • N является ссылкой, отвлеченной из подкачки.

  • k является фиксированным уровнем инфляции.

  • M является номером лет для жизни подкачки.

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

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

Ссылки

[1] Броуди, D. C. Кросби, J. и Литий, H. "Корректировки выпуклости в Соединенных с инфляцией Производных". Рискните Журналом. Ноябрь 2008, стр 124–129.

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

[3] Чжан, J. X. "Идей Оценки Подкачки Ограниченной индексации цен (LPI)". Журнал Wilmott. № 57, январь 2012, стр 58–69.

Введенный в R2021a