exponenta event banner

swapbybdt

Инструмент ценового свопа из дерева процентных ставок Black-Derman-Toy

Описание

пример

[Price,PriceTree,CFTree,SwapRate] = swapbybdt(BDTTree,LegRate,Settle,Maturity) цены своп-инструмент из дерева процентных ставок Black-Derman-Toy. swapbybdt вычисляет цены ванильных свопов, амортизирующих свопов и форвардных свопов.

пример

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

Примеры

свернуть все

Цена процентного свопа с фиксированным этапом получения и плавающим платежным законом. Платежи производятся один раз в год, и условная основная сумма составляет 100 долларов США. Остальные аргументы имеют следующие значения:

  • Купонная ставка для фиксированной ноги: 0,15 (15%)

  • Спред для плавающей трассы: 10 базисных пунктов

  • Дата взаиморасчета: 01 января 2000 г.

  • Дата погашения свопа: 01 января 2003 г.

На основе приведенной выше информации задайте требуемые аргументы и создайте LegRate, LegType, и LegReset матрицы:

Settle = '01-Jan-2000';
Maturity = '01-Jan-2003';
Basis = 0; 
Principal = 100;
LegRate = [0.15 10]; % [CouponRate Spread] 
LegType = [1 0]; % [Fixed Float] 
LegReset = [1 1]; % Payments once per year

Оценить своп с помощью BDTTree включено в MAT-файл deriv.mat. BDTTree содержит информацию о времени и форвардной ставке, необходимую для оценки инструмента.

load deriv.mat;

Использовать swapbybdt для вычисления цены свопа.

Price  = swapbybdt(BDTTree, LegRate, Settle, Maturity,... 
LegReset, Basis, Principal, LegType)
Price = 7.4222

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

LegRate = [NaN 20]; 

[Price, PriceTree, CFTree, SwapRate] = swapbybdt(BDTTree,... 
LegRate, Settle, Maturity, LegReset, Basis, Principal, LegType)
Price = -1.4211e-14
PriceTree = struct with fields:
    FinObj: 'BDTPriceTree'
      tObs: [0 1 2 3 4]
     PTree: {1x5 cell}

CFTree = struct with fields:
    FinObj: 'BDTCFTree'
      tObs: [0 1 2 3 4]
    CFTree: {[NaN]  [NaN NaN]  [NaN NaN NaN]  [NaN NaN NaN NaN]  [NaN NaN NaN NaN]}

SwapRate = 0.1205

Цена амортизирующего свопа с использованием Principal входной аргумент для определения графика амортизации.

Создать RateSpec.

Rates = 0.035;
ValuationDate = '1-Jan-2011';
StartDates = ValuationDate;
EndDates = '1-Jan-2017';
Compounding = 1;

RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,...
'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: 0.8135
            Rates: 0.0350
         EndTimes: 6
       StartTimes: 0
         EndDates: 736696
       StartDates: 734504
    ValuationDate: 734504
            Basis: 0
     EndMonthRule: 1

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

Settle ='1-Jan-2011';
Maturity = '1-Jan-2017';
Period = 1;
LegRate = [0.04 10];

Определите график амортизации свопа.

Principal ={{'1-Jan-2013' 100;'1-Jan-2014' 80;'1-Jan-2015' 60;'1-Jan-2016' 40; '1-Jan-2017' 20}};

Создайте дерево BDT и предположим, что волатильность составляет 10%.

MatDates = {'1-Jan-2012'; '1-Jan-2013';'1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017'};
BDTTimeSpec = bdttimespec(ValuationDate, MatDates);
Volatility = 0.10;  
BDTVolSpec = bdtvolspec(ValuationDate, MatDates, Volatility*ones(1,length(MatDates))');
BDTT = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec);

Вычислите цену амортизирующего свопа.

Price = swapbybdt(BDTT, LegRate, Settle, Maturity, 'Principal' , Principal)
Price = 1.4574

Цена форвардного свопа с использованием StartDate входной аргумент для определения будущей даты начала свопа.

Создать RateSpec.

Rates = 0.0325;
ValuationDate = '1-Jan-2012';
StartDates = ValuationDate;
EndDates = '1-Jan-2018';
Compounding = 1;

RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,...
'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: 0.8254
            Rates: 0.0325
         EndTimes: 6
       StartTimes: 0
         EndDates: 737061
       StartDates: 734869
    ValuationDate: 734869
            Basis: 0
     EndMonthRule: 1

Построить дерево с волатильностью 10%.

MatDates = {'1-Jan-2013'; '1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017';'1-Jan-2018'};
BDTTimeSpec = bdttimespec(ValuationDate, MatDates);
Volatility = 0.10;  
BDTVolSpec = bdtvolspec(ValuationDate, MatDates, Volatility*ones(1,length(MatDates))');
BDTT = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec);

Рассчитайте цену форвардного свопа, который начинается через два года (1 января 2014 г.) и созревает через три года со ставкой форвардного свопа 3,85%.

Settle ='1-Jan-2012';
Maturity = '1-Jan-2017';
StartDate = '1-Jan-2014';
LegRate = [0.0385 10];

Price = swapbybdt(BDTT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = 1.3203

Используя предыдущие данные, вычислите ставку прямого свопа, ставку купона для фиксированной трассы, так что цена прямого свопа в момент времени = 0 равна нулю.

LegRate = [NaN 10];
[Price, ~,~, SwapRate] = swapbybdt(BDTT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = -4.5191e-12
SwapRate = 0.0335

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

свернуть все

Древовидная структура процентных ставок, созданная bdttree

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

Скорость ноги, указанная как NINSTоколо-2 с каждой строкой, определенной как одна из следующих:

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

  • [Spread CouponRate] (поплавковый)

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

  • [Spread Spread] (поплавок-поплавок)

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

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

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

Settle для каждого свопа устанавливается дата ValuationDate дерева BDT. Аргумент подкачки Settle игнорируется.

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

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

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

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

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

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

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

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

Базисный номер дня, представляющий базис для каждой ветви, определяемый как пара, разделенная запятыми, состоящая из 'Basis' и NINSTоколо-1 массив (или NINSTоколо-2 если 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' и вектор или клеточный массив.

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. LegType позволяет [1 1] (фиксированный-фиксированный), [1 0] (фиксированный поплавок), [0 1] (поплавковый), или [0 0] (float-float) свопы

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

Структура опционов ценообразования деривативов, указанная как пара, разделенная запятыми, состоящая из 'Options' и структура, полученная при использовании derivset.

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

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

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

  • 1 = Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.

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

Флажок для корректировки денежных потоков на основе фактического количества дней периода, указанного как пара, разделенная запятыми, состоящая из 'AdjustCashFlowsBasis' и NINSTоколо-1 (или NINSTоколо-2 если AdjustCashFlowsBasis отличается для каждой ветви) логики со значениями 0 (false) или 1 Правда.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Подробнее

свернуть все

Амортизирующий своп

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

Перемотка вперед

Соглашение о заключении соглашения о процентном свопе на фиксированную дату в будущем.

Представлен до R2006a