exponenta event banner

InflationBond

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

Описание

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

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

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

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

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

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

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

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

Создание

Описание

пример

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

пример

InflationBond = fininstrument(___,Name,Value) задает дополнительные свойства, используя дополнительные пары имя-значение в дополнение к требуемым аргументам в предыдущем синтаксисе. Например, InflationBond = fininstrument("InflationBond",'Maturity',Maturity,'CouponRate',CouponRate,'IssueDate',IssueDate) создает InflationBond вариант.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Частота платежей, указанная как разделенная запятыми пара, состоящая из 'Period' и скалярное целое число. Значения для Period являются 1, 2, 3, 4, 6, или 12.

Типы данных: 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' и скалярный числовой.

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

Флаг, указывающий, корректируется ли денежный поток согласно соглашению о количестве дней, указанному как пара, разделенная запятыми, состоящая из 'DaycountAdjustedCashFlow' и скалярный логический со значением true или false.

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

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

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

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

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

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

Соглашения о рабочих днях для дат движения денежных средств, указанные как пара, разделенная запятыми, состоящая из 'BusinessDayConvention' и скалярный строковый или символьный вектор. Выбор соглашения о рабочих днях определяет, как обрабатываются дни, не связанные с бизнесом. Дни, не связанные с бизнесом, определяются как выходные дни, а также любая другая дата, когда предприятия не открыты (например, официальные праздники). Значения:

  • "actual" - Дни, не связанные с бизнесом, фактически игнорируются. Предполагается, что денежные потоки, приходящиеся на нерабочие дни, распределяются на фактическую дату.

  • "follow" - Денежные потоки, приходящиеся на некоммерческий день, предполагается распределить на следующий рабочий день.

  • "modifiedfollow" - Денежные потоки, приходящиеся на некоммерческий день, предполагается распределить на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, вместо него используется предыдущий рабочий день.

  • "previous" - Денежные потоки, приходящиеся на некоммерческий день, предполагается распределить в предыдущий рабочий день.

  • "modifiedprevious" - Денежные потоки, приходящиеся на некоммерческий день, предполагается распределить в предыдущий рабочий день. Однако если предыдущий рабочий день находится в другом месяце, вместо него принимается следующий рабочий день.

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

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

H = holidays(datetime('today'),datetime(2025,12,15));
InflationBondObj = fininstrument("InflationBond",'CouponRate',0.34,'Maturity',datetime(2025,12,15),'Holidays',H)

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

Флаг правила конца месяца для генерации дат при Maturity - дата окончания месяца с 30 или менее днями, указанная как пара, разделенная запятыми, состоящая из 'EndMonthRule' и скалярное логическое значение true или false.

  • Если установить EndMonthRule кому false, программное обеспечение игнорирует правило, что означает, что дата платежа всегда совпадает с числовым днем месяца.

  • Если установить EndMonthRule кому true, программа устанавливает правило, означающее, что дата платежа всегда является последним фактическим днем месяца.

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

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

Когда FirstCouponDate и LastCouponDate оба указаны, FirstCouponDate имеет приоритет при определении структуры купонных выплат. Если не указать FirstCouponDateдаты оплаты денежного потока определяются из других входных данных.

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

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

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

При указании LastCouponDate но не FirstCouponDate, LastCouponDate определяет структуру купона облигации. Купонная структура облигации усечена при LastCouponDateнезависимо от того, куда она попадает, и следует только дата денежного потока погашения облигации. Если не указать LastCouponDateдаты оплаты денежного потока определяются из других входных данных.

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Флаг правила конца месяца для генерации дат при Maturity - дата окончания месяца, имеющая 30 или менее дней, возвращенная в виде скалярной логической.

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

В этом примере показан поток операций для оценки InflationBond инструмент при использовании 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]

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

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

IssueDate = datetime(2021,1,1);
Maturity = datetime(2026,1,1);
CouponRate = 0.02;

InflationBond = fininstrument("InflationBond", 'IssueDate', IssueDate, 'Maturity', Maturity, 'CouponRate', CouponRate,'Name',"inflation_bond_instrument")
InflationBond = 
  InflationBond with properties:

                  CouponRate: 0.0200
                      Period: 2
                       Basis: 0
                   Principal: 100
    DaycountAdjustedCashFlow: 0
                         Lag: 3
       BusinessDayConvention: "actual"
                    Holidays: NaT
                EndMonthRule: 1
                   IssueDate: 01-Jan-2021
             FirstCouponDate: NaT
              LastCouponDate: NaT
                    Maturity: 01-Jan-2026
                        Name: "inflation_bond_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]

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

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

[Price, outPR] = price(outPricer, InflationBond)
Price = 112.1856
outPR = 
  priceresult with properties:

       Results: [1x1 table]
    PricerData: []

outPR.Results
ans=table
    Price 
    ______

    112.19

Подробнее

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

Алгоритмы

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

I (0,T) Pn (0,T) = I (0) Pr (0,T) BTIPS (0,TM) = 1I (T0) ∑i=1McI (0) Pr (  0,Ti )  +   FI  ( 0 )   Pr  ( 0,TM) = 1I (T0) ∑i=1McI (0,Ti) Pn (0,Ti) + FI (0,TM) Pn (0,TM)

где

  • Pn - номинальная цена облигации с нулевым купоном.

  • Pr - реальная цена облигаций с нулевым купоном.

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

  • I (0,T) - безубыточный индекс инфляции для периода (0, T).

  • I (0) - индекс инфляции при (t = 0).

  • I (T0) - базовый индекс инфляции на дату выпуска (t = T0).

  • BTIPS (0,TM) является индексированной по инфляции ценой облигаций.

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

  • C - купон.

  • F - номинал.

Ссылки

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

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

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

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