Swap

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

Описание

Создайте и оцените Swap инструментальный объект, использующий этот рабочий процесс:

  1. Использование fininstrument создать Swap инструментальный объект.

  2. Используйте ratecurve задавать модель кривой для Swap инструмент или использование finmodel задавать HullWhite или BlackKarasinski модель.

  3. Использование finpricer задавать Discount метод ценообразования при использовании ratecurve возразите или IRTree метод ценообразования при использовании HullWhite или BlackKarasinski модель для Swap инструмент.

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

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

Создание

Описание

пример

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

Swap инструмент поддерживает подкачки ванили, амортизируя подкачки и прямые подкачки. Можно использовать Swap инструмент для подкачки единой валюты, но не валютного свопа. Для получения дополнительной информации о Swap инструмент, смотрите Больше О.

пример

SwapInstrument = fininstrument(___,Name,Value) устанавливает дополнительные свойства с помощью дополнительных пар "имя-значение" в дополнение к обязательным аргументам в предыдущем синтаксисе. Например, SwapInstrument = fininstrument("Swap",'Maturity',datetime(2019,1,30),'LegRate',[0.06 0.12],'LegType',["fixed","fixed"],'Basis',1,'Notional',100,'StartDate',datetime(2016,1,30),'DaycountAdjustedCashFlow',true,'BusinessDayConvention',"follow",'ProjectionCurve',ratecurve,'Name',"swap_instrument") создает Swap опция со зрелостью от 30 января 2019. Можно задать несколько аргументов пары "имя-значение".

Входные параметры

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

Инструментальный тип в виде строки со значением "Swap" или вектор символов со значением 'Swap'.

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

Swap Аргументы в виде пар имя-значение

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

Пример: SwapInstrument = fininstrument("Swap",'Maturity',datetime(2019,1,30),'LegRate',[0.06 0.12],'LegType',["fixed","fixed"],'Basis',1,'Notional',100,'StartDate',datetime(2016,1,30),'DaycountAdjustedCashFlow',true,'BusinessDayConvention',"follow",'ProjectionCurve',ratecurve,'Name',"swap_instrument")
Необходимый Swap Аргументы в виде пар имя-значение

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

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

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

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

Уровень участка в десятичных значениях в виде разделенной запятой пары, состоящей из 'LegRate' и NINST- 2 матрица. Каждая строка может быть задана как одно из следующего:

  • [CouponRate Spread] (фиксированное плавание)

  • [Spread CouponRate] (зафиксированный плаванием)

  • [CouponRate CouponRate] (фиксировано зафиксированный)

  • [Spread Spread] (плавание плавающее)

CouponRate десятичный годовой показатель. Spread количество пунктов в десятичных числах по ссылочному уровню. Первый столбец представляет участок получения, в то время как второй столбец представляет участок оплаты.

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

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

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

Тип участка в виде разделенной запятой пары, состоящей из 'LegType' и массив ячеек из символьных векторов или массив строк с поддерживаемыми значениями. LegType задает интерпретацию значений, вводимых в LegRate.

Примечание

Когда вы задаете Swap инструмент как базовый актив для Swaption инструмент при использовании Normal, SABR, Black, или HullWhite калькулятор цен, Swap LegType должен быть ["fixed","float"] или ["float","fixed"]. Необходимо также установить ExerciseStyle аргумент пары "имя-значение" связанного Swaption инструмент к 'European'.

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

Кривая уровня для проектирования плавающих потоков наличности в виде разделенной запятой пары, состоящей из 'ProjectionCurve' и ratecurve объект. Необходимо создать этот объект с помощью ratecurve. Используйте этот дополнительный вход, если прямая кривая отличается от дисконтной кривой.

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

Частота платежей в год в виде разделенной запятой пары, состоящей из 'Reset' и скаляр или NINST- 2 если Reset отличается для каждого участка) с одним из следующих значений: 0, 1, 2, 3, 4, 6, или 12.

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

Основание дневного количества, представляющее основание для каждого участка в виде разделенной запятой пары, состоящей из 'Basis' и NINST- 1 массив (или NINST- 2 если Basis отличается для каждого участка).

  • 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

Отвлеченная основная сумма или основное значение планируют в виде разделенной запятой пары, состоящей из 'Notional' и числовой скаляр или расписание. Используйте скаляр для ванили Swap инструмент и расписание для амортизации Swap инструмент.

Notional принимает скаляр для основной суммы (или NINST- 2 матрица, если Notional отличается для каждого участка), или a timetable для основных расписаний значения. Для расписаний первый столбец расписания является датами, и второй столбец является связанным отвлеченным основным значением. Дата указывает в последний день, что основное значение допустимо.

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

Последний плавающий курс для участков плавающих в виде разделенной запятой пары, состоящей из 'LatestFloatingRate' и скалярное числовое значение.

LatestFloatingRate NINST- 1 матрица (или NINST- 2 матрица, если LatestFloatingRate отличается для каждого участка).

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

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

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

Отметьте, чтобы настроить потоки наличности на основе фактического дневного количества периода в виде разделенной запятой пары, состоящей из 'DaycountAdjustedCashFlow' и NINST- 1 (или NINST- 2 если AdjustCashFlowsBasis отличается для каждого участка) logicals со значениями true или false.

Типы данных: логический

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

  • "actual" — Нерабочие дни эффективно проигнорированы. Потоки наличности, которые падают в нерабочие дни, приняты, чтобы быть распределенными в фактическую дату.

  • "follow" — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день.

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

  • "previous" — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день.

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

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

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

H = holidays(datetime('today'),datetime(2025,12,15));
Swap = fininstrument("Swap",'Maturity',datetime(2025,12,15),'LegRate',[0.06 20],'Holidays',H)

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

Правило конца месяца отмечает для генерации дат когда Maturity дата конца месяца в течение месяца с 30 или меньшим количеством дней в виде разделенной запятой пары, состоящей из 'EndMonthRule' и логическое значение true или false использование NINST- 1 (или NINST- 2 если EndMonthRule отличается для каждого участка).

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

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

Типы данных: логический

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

Используйте StartDate оценивать прямую подкачку, то есть, подкачку, которая запускается позднее.

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

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

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

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

Свойства

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

Дата погашения, возвращенная как datetime.

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

Уровень участка, возвращенный как NINST- 2 матрица десятичных значений, с каждой строкой, заданной как одно из следующего:

  • [CouponRate Spread] (фиксированное плавание)

  • [Spread CouponRate] (зафиксированный плаванием)

  • [CouponRate CouponRate] (фиксировано зафиксированный)

  • [Spread Spread] (плавание плавающее)

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

Тип участка, возвращенный как массив строк со значениями ["fixed","fixed"], ["fixed","float"], ["float","fixed"], или ["float","float"].

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

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

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

Сбросьте частоту в год для каждой подкачки, возвращенной как NINST- 2 вектор.

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

Дневное основание количества, возвращенное как NINST- 2 вектор.

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

Отстаньте в установлении норм, возвращенном как NINST- 2 вектор.

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

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

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

Уровень для следующей плавающей оплаты, установленной в последнюю дату сброса, возвратился как скалярное числовое значение.

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

Отметьте, чтобы настроить потоки наличности на основе фактического дневного количества периода, возвращенного как NINST- 1 матрица (или NINST- 2 матрица, если AdjustCashFlowsBasis отличается для каждого участка) logicals со значениями true или false.

Типы данных: логический

Соглашения рабочего дня, возвращенные как строка или NINST- 2 массив строк, если BusinessDayConvention отличается для каждого участка.

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

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

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

Правило конца месяца отмечает для генерации дат когда Maturity дата конца месяца в течение месяца с 30 или меньшим количеством дней, возвращенных как логический скаляр.

Типы данных: логический

Подкачка даты запускается, возвращенный как datetime.

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

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

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

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

cashflowsВычисляет поток наличности для FixedBond, FloatBondподкачка, FRA, или Deposit инструмент
parswaprateВычислите уровень подкачки паритета для Swap инструмент

Примеры

свернуть все

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

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

Создайте ratecurve объект с помощью ratecurve поскольку базовая процентная ставка изгибается для Swap инструмент.

Settle = datetime(2019,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-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте Swap Инструментальный объект

Используйте fininstrument создать ваниль Swap инструментальный объект.

Swap = fininstrument("Swap",'Maturity',datetime(2024,9,15),'LegRate',[0.022 0.019 ],'LegType',["float","fixed"],'ProjectionCurve',myRC,'Name',"swap_instrument")
Swap = 
  Swap with properties:

                     LegRate: [0.0220 0.0190]
                     LegType: ["float"    "fixed"]
                       Reset: [2 2]
                       Basis: [0 0]
                    Notional: 100
          LatestFloatingRate: [NaN NaN]
                 ResetOffset: [0 0]
    DaycountAdjustedCashFlow: [0 0]
             ProjectionCurve: [1x2 ratecurve]
       BusinessDayConvention: ["actual"    "actual"]
                    Holidays: NaT
                EndMonthRule: [1 1]
                   StartDate: NaT
                    Maturity: 15-Sep-2024
                        Name: "swap_instrument"

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

Используйте finpricer создать Discount объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("Discount", 'DiscountCurve',myRC)
outPricer = 
  Discount with properties:

    DiscountCurve: [1x1 ratecurve]

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

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

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

       Results: [1x2 table]
    PricerData: []

outPR.Results
ans=1×2 table
    Price       DV01  
    ______    ________

    7.2279    -0.02212

Этот пример показывает рабочий процесс, чтобы оценить амортизацию Swap инструмент, когда вы используете ratecurve и Discount метод ценообразования.

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

Создайте ratecurve объект с помощью ratecurve поскольку базовая процентная ставка изгибается для Swap инструмент.

Settle = datetime(2019,1,1);
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: 01-Jan-2019
         InterpMethod: "linear"
    ShortExtrapMethod: "next"
     LongExtrapMethod: "previous"

Создайте Swap Инструментальный объект

Используйте fininstrument создать амортизацию Swap инструментальный объект.

Maturity = datetime(2024,1,1);
ADates = datetime([2020,1,1 ; 2024,1,1]);
APrincipal = [100; 85];
Notional = timetable(ADates,APrincipal);
Swap = fininstrument("Swap",'Maturity',Maturity,'LegRate',[0.035,0.01],'Reset',[1 1],'Notional',Notional,'Name',"swap_instrument")
Swap = 
  Swap with properties:

                     LegRate: [0.0350 0.0100]
                     LegType: ["fixed"    "float"]
                       Reset: [1 1]
                       Basis: [0 0]
                    Notional: [2x1 timetable]
          LatestFloatingRate: [NaN NaN]
                 ResetOffset: [0 0]
    DaycountAdjustedCashFlow: [0 0]
             ProjectionCurve: [0x0 ratecurve]
       BusinessDayConvention: ["actual"    "actual"]
                    Holidays: NaT
                EndMonthRule: [1 1]
                   StartDate: NaT
                    Maturity: 01-Jan-2024
                        Name: "swap_instrument"

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

Используйте finpricer создать Discount объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

outPricer = finpricer("Discount", 'DiscountCurve',myRC)
outPricer = 
  Discount with properties:

    DiscountCurve: [1x1 ratecurve]

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

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

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

       Results: [1x2 table]
    PricerData: []

outPR.Results
ans=1×2 table
    Price       DV01  
    ______    ________

    5.7183    0.022979

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

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

Создайте ratecurve объект с помощью ratecurve поскольку базовая процентная ставка изгибается для Swap инструмент.

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

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

Создайте Swap Инструментальный объект

Используйте fininstrument создать ваниль Swap инструментальный объект.

LegType = ["float","fixed"]
LegType = 1x2 string
    "float"    "fixed"

Swap = fininstrument("Swap",'Maturity',datetime(2030,9,15),'LegRate',[0.022 0.019],'LegType',LegType,'ProjectionCurve',myRC,'Name',"swap_instrument");

Создайте HullWhite Объект модели

Используйте finmodel создать HullWhite объект модели.

HullWhiteModel = finmodel("HullWhite",'Alpha',0.032,'Sigma',0.04)
HullWhiteModel = 
  HullWhite with properties:

    Alpha: 0.0320
    Sigma: 0.0400

Вычислите Swap Инструментальные даты потока наличности

Используйте cfdates вычислить потоки наличности.

CFdates = cfdates(Settle, Swap.Maturity, Swap.Reset(1), Swap.Basis(1))
CFdates = 1x22 datetime
Columns 1 through 5

   15-Mar-2020   15-Sep-2020   15-Mar-2021   15-Sep-2021   15-Mar-2022

Columns 6 through 10

   15-Sep-2022   15-Mar-2023   15-Sep-2023   15-Mar-2024   15-Sep-2024

Columns 11 through 15

   15-Mar-2025   15-Sep-2025   15-Mar-2026   15-Sep-2026   15-Mar-2027

Columns 16 through 20

   15-Sep-2027   15-Mar-2028   15-Sep-2028   15-Mar-2029   15-Sep-2029

Columns 21 through 22

   15-Mar-2030   15-Sep-2030

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

Используйте finpricer создать IRTree объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".

HWTreePricer = finpricer("IRTree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',CFdates')
HWTreePricer = 
  HWBKTree with properties:

             Tree: [1x1 struct]
        TreeDates: [22x1 datetime]
            Model: [1x1 finmodel.HullWhite]
    DiscountCurve: [1x1 ratecurve]

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

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

[Price, outPR] = price(HWTreePricer, Swap,"all")
Price = 24.3727
outPR = 
  priceresult with properties:

       Results: [1x4 table]
    PricerData: [1x1 struct]

outPR.Results
ans=1×4 table
    Price        Vega        Gamma     Delta 
    ______    __________    _______    ______

    24.373    8.5265e-10    -8790.5    820.67

Больше о

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

Введенный в R2020a