swapbycir

Ценовой инструмент подкачки от дерева процентной ставки Кокса-Инджерсолла-Росса

Описание

пример

[Price,PriceTree,SwapRate] = swapbycir(CIRTree,LegRate,Settle,Maturity) оценивает инструмент подкачки от Кокса-Инджерсолла-Росса (CIR) дерево процентной ставки. swapbycir вычисляет цены подкачек ванили, амортизируя подкачки, и вперед подкачивает использование модели CIR ++ с подходом Навалька-Беляевой (NB).

пример

[Price,PriceTree,SwapRate] = swapbycir(___,Name,Value) добавляют дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

Задайте подкачку процентной ставки с фиксированным участком получения и плавающим участком оплаты. Платежи осуществлены один раз в год, и отвлеченная основная сумма составляет 100$.

Basis = 0; 
Principal = 100;
LegRate = [0.06 20]; % [CouponRate Spread] 
LegType = [1 0]; % [Fixed Float] 
LegReset = [1 1]; % Payments once per year

Создайте RateSpec использование intenvset функция.

Rates = [0.035; 0.042147; 0.047345; 0.052707]; 
Dates = {'Jan-1-2017'; 'Jan-1-2018'; 'Jan-1-2019'; 'Jan-1-2020'; 'Jan-1-2021'}; 
ValuationDate = 'Jan-1-2017'; 
EndDates = Dates(2:end)'; 
Compounding = 1; 
RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', ValuationDate, 'EndDates',EndDates,'Rates', Rates, 'Compounding', Compounding); 

Создайте CIR дерево.

NumPeriods = 5;  
Alpha = 0.03; 
Theta = 0.02;  
Sigma = 0.1;   
Settle = '01-Jan-2017'; 
Maturity = '01-Jan-2022'; 
CIRTimeSpec = cirtimespec(ValuationDate, Maturity, NumPeriods); 
CIRVolSpec = cirvolspec(Sigma, Alpha, Theta); 

CIRT = cirtree(CIRVolSpec, RateSpec, CIRTimeSpec)
CIRT = struct with fields:
      FinObj: 'CIRFwdTree'
     VolSpec: [1x1 struct]
    TimeSpec: [1x1 struct]
    RateSpec: [1x1 struct]
        tObs: [0 1 2 3 4]
        dObs: [736696 737061 737426 737791 738156]
     FwdTree: {1x5 cell}
     Connect: {[3x1 double]  [3x3 double]  [3x5 double]  [3x7 double]}
       Probs: {[3x1 double]  [3x3 double]  [3x5 double]  [3x7 double]}

Оцените подкачку процентной ставки.

[Price,PriceTree] = swapbycir(CIRT,LegRate,Settle,Maturity,'LegReset',LegReset,'Basis',3,'Principal',100,'LegType',LegType) 
Price = 2.5522
PriceTree = struct with fields:
     FinObj: 'CIRPriceTree'
       tObs: [0 1 2 3 4 5]
      PTree: {1x6 cell}
    Connect: {[3x1 double]  [3x3 double]  [3x5 double]  [3x7 double]}

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

свернуть все

Древовидная структура процентной ставки, созданная cirtree

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

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

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

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

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

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

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

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

Расчетный день, заданный или как скаляр или как NINST- 1 вектор из последовательных чисел даты, векторов символов даты, строковых массивов или массивов datetime.

Settle дата каждой подкачки назначена к ValuationDate из дерева CIR. Аргумент Settle подкачки проигнорирован.

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

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

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

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

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

Пример: [Price,PriceTree,SwapRate] = swapbycir(CIRTree,LegRate,Settle,Maturity,LegReset,Basis,Principal,LegType)

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

Типы данных: 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

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

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

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

Тип участка в виде разделенной запятой пары, состоящей из 'LegType' и NINST- 2 матрица со значениями:

  • [1 1] (фиксировано зафиксированная) подкачка

  • [1 0] подкачка (фиксировано-плавающая)

  • [0 1] (зафиксированная плаванием) подкачка

  • [0 0] подкачка (плавающая плавающая)

Каждая строка представляет инструмент. Каждый столбец указывает, фиксируется ли соответствующий участок (1) или плавание (0). Эта матрица задает интерпретацию значений, вводимых в LegRate.

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

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

  • 0 = Проигнорируйте правило, подразумевая, что платежный день всегда является тем же числовым днем месяца.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Используйте этот аргумент, чтобы оценить прямые подкачки, то есть, подкачки, которые запускаются на будущей дате

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

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

свернуть все

Ожидаемые цены подкачки во время 0, возвращенный как NINST- 1 вектор.

Древовидная структура цен на инструменты, возвращенных как структура MATLAB деревьев, содержащих векторы из swaption цен на инструменты и вектор времен наблюдения для каждого узла. В PriceTree:

  • PriceTree.tObs содержит времена наблюдения.

  • PriceTree.PTree содержит чистые цены.

Уровни, применимые к фиксированному участку, возвращенному как NINST- 1 вектор из уровней, применимых к фиксированному участку, таким образом, что значения подкачек являются нулем во время 0. Этот уровень используется в вычислении цен подкачек, когда уровень задал для фиксированного участка в LegRate isnan. SwapRate выход дополнен NaN для тех инструментов, в который CouponRate не установлен в NaN.

Больше о

свернуть все

Амортизация подкачки

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

Передайте подкачку

Соглашение ввести в процентную ставку подкачивает расположение относительно установленной даты в будущем.

Ссылки

[1] Cox, J., Ингерсолл, J. и С. Росс. "Теория термина структура процентных ставок". Econometrica. Издание 53, 1985.

[2] Brigo, D. и Ф. Меркурио. Модели процентной ставки - теория и практика. Финансы Спрингера, 2006.

[3] Hirsa, A. Вычислительные методы в финансах. Нажатие CRC, 2012.

[4] Nawalka, S., Soto, G. и Н. Беляева. Динамическое моделирование структуры термина. Вайли, 2007.

[5] Нельсон, D. и К. Рамасвами. "Простые Биномиальные Процессы как Приближения Диффузии в Финансовых Моделях". Анализ Финансовых Исследований. Vol 3. 1990, стр 393–430.

Введенный в R2018a