swapbyhjm

Ценовой инструмент подкачки от дерева процентной ставки Хита-Джарроу-Мортона

Синтаксис

[Price,PriceTree,CFTree,SwapRate] = swapbyhjm(HJMTree,LegRate,Settle,Maturity)
[Price,PriceTree,CFTree,SwapRate] = swapbyhjm(___,Name,Value)

Описание

пример

[Price,PriceTree,CFTree,SwapRate] = swapbyhjm(HJMTree,LegRate,Settle,Maturity) оценивает инструмент подкачки от дерева процентной ставки Хита-Джарроу-Мортона. swapbyhjm вычисляет цены подкачек ванили, амортизируя подкачки и прямые подкачки.

пример

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

Примеры

свернуть все

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

  • Купонная ставка для фиксированного участка: 0.06 (6%)

  • Распространитесь для плавания участка: 20 пунктов

  • Расчетный день подкачки: 01 января 2000

  • Дата погашения подкачки: 01 января 2003

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

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

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

load deriv.mat; 

Используйте swapbyhjm, чтобы вычислить цену подкачки.

[Price, PriceTree, CFTree] = swapbyhjm(HJMTree, LegRate,... 
Settle, Maturity, LegReset, Basis, Principal, LegType) 
Price = 

   3.6923 

PriceTree = 

    FinObj: 'HJMPriceTree'
      tObs: [0 1 2 3 4]
     PBush: {1x5 cell}

CFTree = 

    FinObj: 'HJMCFTree'
      tObs: [0 1 2 3 4]
    CFBush: {[0] [1x1x2 double] [1x2x2 double] ... [1x8 double]}

Используйте treeviewer, чтобы исследовать CFTree графически и видеть потоки наличности от подкачки и вперед и вниз ответвления. Положительный поток наличности указывает на приток (доход - платежи> 0), в то время как отрицательный поток наличности указывает на отток (доход - платежи <0).

treeviewer(CFTree)

В этом примере вы продали подкачку (получите фиксированную процентную ставку и заплатите плавающий курс). Во время   t = 3, если процентные ставки понижаются, ваш поток наличности, положительные (2,63$), означая, что вы получаете эту сумму. Но если процентные ставки повышаются, ваш поток наличности отрицателен (-1,58$), означая, что вы должны эту сумму.

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

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

LegRate = [NaN 20]; 

[Price, PriceTree, CFTree, SwapRate] = swapbyhjm(HJMTree,... 
LegRate, Settle, Maturity, LegReset, Basis, Principal, LegType) 
Price = 

   0

PriceTree = 

FinObj: 'HJMPriceTree' 
  tObs: [0 1 2 3 4] 
 PBush:{[0] [1x1x2 double] [1x2x2 double] ... [1x8 double]}

CFTree = 

FinObj: 'HJMCFTree' 
  tObs: [0 1 2 3 4] 
CFBush:{[0] [1x1x2 double] [1x2x2 double] ... [1x8 double]}

SwapRate = 

   0.0466

Оцените подкачку амортизации с помощью входного параметра 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}};

Создайте дерево HJM с помощью следующих данных:

MatDates = {'1-Jan-2012'; '1-Jan-2013';'1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017'};
HJMTimeSpec = hjmtimespec(RateSpec.ValuationDate, MatDates);
Volatility = [.10; .08; .06; .04];
CurveTerm = [ 1; 2; 3; 4];
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec,RateSpec,HJMTimeSpec);

Вычислите цену подкачки амортизации.

Price = swapbyhjm(HJMT, LegRate, Settle, Maturity, 'Principal', Principal)
Price = 1.4574

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

Создайте RateSpec.

Rates = 0.0374;
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.8023
            Rates: 0.0374
         EndTimes: 6
       StartTimes: 0
         EndDates: 737061
       StartDates: 734869
    ValuationDate: 734869
            Basis: 0
     EndMonthRule: 1

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

MatDates = {'1-Jan-2013'; '1-Jan-2014';'1-Jan-2015';'1-Jan-2016';'1-Jan-2017';'1-Jan-2018'};
HJMTimeSpec = hjmtimespec(RateSpec.ValuationDate, MatDates);
Volatility = [.10; .08; .06; .04];
CurveTerm = [ 1; 2; 3; 4];
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec,RateSpec,HJMTimeSpec);

Вычислите цену прямой подкачки, которая запускается через год (1 января 2013) и назревает за четыре года с прямым уровнем подкачки 4,25%.

Settle ='1-Jan-2012';
Maturity = '1-Jan-2017';
StartDate = '1-Jan-2013';
LegRate = [0.0425 10];

Price = swapbyhjm(HJMT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = 1.4434

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

LegRate = [NaN 10];
[Price, ~,~, SwapRate] = swapbyhjm(HJMT, LegRate, Settle, Maturity, 'StartDate', StartDate)
Price = 0
SwapRate = 0.0384

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основание дневного количества, представляющее основание для каждого участка, заданного как пара, разделенная запятой, состоящая из 'Basis' и NINST-by-1 массив (или NINST-by-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-by-1 вектор или NINST-by-1 массив ячеек (или NINST-by-2, если Principal отличается для каждого участка) отвлеченных основных сумм или основных расписаний значения. Для расписаний каждым элементом массива ячеек является NumDates-by-2 массив, где первый столбец является датами, и второй столбец является своим связанным отвлеченным основным значением. Дата указывает в последний день, что основное значение допустимо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

Подкачайте потоки наличности, возвращенные как древовидная структура с вектором потоков наличности подкачки в каждом узле. Эта структура содержит только NaN s, потому что с деревьями переобъединения бинома, потоки наличности не могут быть вычислены точно в каждом узле дерева.

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

Больше о

свернуть все

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

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

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

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

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

Для просмотра документации необходимо авторизоваться на сайте