floatbyzero

Примечание с плавающей ставкой цены из набора нулевых кривых

Описание

пример

[Price,DirtyPrice,CFlowAmounts,CFlowDates] = floatbyzero(RateSpec,Spread,Settle,Maturity) расценивает примечание с плавающей ставкой из набора нулевых кривых.

floatbyzero вычисляет цены ванильных купюр с плавающей ставкой и амортизирующих купюр с плавающей ставкой.

пример

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

Примеры

свернуть все

Оцените 20-базовую точку записку с плавающей ставкой с помощью набора нулевых кривых.

Загрузка deriv.mat, который обеспечивает ZeroRateSpec, структура процентной ставки, необходимая для ценообразования облигации.

load deriv.mat;

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

Spread = 20;
Settle = '01-Jan-2000';
Maturity = '01-Jan-2003';

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

Price = floatbyzero(ZeroRateSpec, Spread, Settle, Maturity)
Price = 100.5529

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

Создайте RateSpec.

Rates = [0.03583; 0.042147; 0.047345; 0.052707; 0.054302];
ValuationDate = '15-Nov-2011';
StartDates = ValuationDate;
EndDates = {'15-Nov-2012';'15-Nov-2013';'15-Nov-2014' ;'15-Nov-2015';'15-Nov-2016'};
Compounding = 1;
RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,...
'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [5x1 double]
            Rates: [5x1 double]
         EndTimes: [5x1 double]
       StartTimes: [5x1 double]
         EndDates: [5x1 double]
       StartDates: 734822
    ValuationDate: 734822
            Basis: 0
     EndMonthRule: 1

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

Settle ='15-Nov-2011';
Maturity = '15-Nov-2015';
Spread = 15;

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

Principal ={{'15-Nov-2012' 100;'15-Nov-2013' 70;'15-Nov-2014' 40;'15-Nov-2015' 10}};

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

Price  = floatbyzero(RateSpec, Spread, Settle, Maturity, 'Principal', Principal)
Price = 100.3059

Если Settle не находится на дате сброса примечания с плавающей скоростью, floatbyzero пытается получить последнюю плавающую скорость перед Settle от RateSpec или LatestFloatingRate параметр. Когда дата сброса для этой скорости выходит за область значений RateSpecLatestFloatingRate не задан), floatbyzero Не удается получить частоту для этой даты и генерирует ошибку. В этом примере показано, как использовать LatestFloatingRate входной параметр, чтобы избежать ошибки.

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

load deriv.mat;

Spread = 20;
Settle = '01-Jan-2000';
Maturity = '01-Dec-2003';

Price = floatbyzero(ZeroRateSpec, Spread, Settle, Maturity)
Error using floatbyzero (line 256)
The rate at the instrument starting date cannot be obtained from RateSpec.
 Its reset date (01-Dec-1999) is out of the range of dates contained in RateSpec.
 This rate is required to calculate cash flows at the instrument starting date.
 Consider specifying this rate with the 'LatestFloatingRate' input parameter.

Здесь, дата сброса для скорости по Settle был 01-Dec-1999, что было раньше даты оценки ZeroRateSpec (01 января 2000 года). Этой ошибки можно избежать, указав скорость на дату начала инструмента с помощью LatestFloatingRate аргумент пары "имя-значение".

Определите LatestFloatingRate и рассчитать цену с плавающей ставкой.

Price = floatbyzero(ZeroRateSpec, Spread, Settle, Maturity, 'LatestFloatingRate', 0.03)
Price =

  100.0285

Определите ставки OIS и Libor.

Settle = datenum('15-Mar-2013');
CurveDates = daysadd(Settle,360*[1/12 2/12 3/12 6/12 1 2 3 4 5 7 10],1);
OISRates = [.0018 .0019 .0021 .0023 .0031 .006  .011 .017 .021 .026 .03]';
LiborRates = [.0045 .0047 .005 .0055 .0075 .011 .016 .022 .026 .030 .0348]';

Постройте график двух кривых.

figure,plot(CurveDates,OISRates,'r');hold on;plot(CurveDates,LiborRates,'b')
datetick
legend({'OIS Curve', 'Libor Curve'})

Figure contains an axes. The axes contains 2 objects of type line. These objects represent OIS Curve, Libor Curve.

Создайте связанную RateSpec для кривых OIS и Libor.

OISCurve = intenvset('Rates',OISRates,'StartDate',Settle,'EndDates',CurveDates);
LiborCurve = intenvset('Rates',LiborRates,'StartDate',Settle,'EndDates',CurveDates);

Задайте примечание с плавающей скоростью.

Maturity = datenum('15-Mar-2018');

Вычислите цену для примечания с плавающей ставкой. The LiborCurve term structure будет использоваться для формирования плавающих денежных потоков плавающего инструмента. The OISCurve для дисконтирования денежных потоков будет использоваться структура терминов.

Price = floatbyzero(OISCurve,0,Settle,Maturity,'ProjectionCurve',LiborCurve)
Price = 102.4214

Некоторые инструменты требуют использования различных кривых процентных ставок для создания плавающих денежных потоков и дисконтирования. Это когда ProjectionCurve параметр полезен. Когда вы предоставляете оба RateSpec и ProjectionCurve, floatbyzero использует RateSpec в целях дисконтирования и использует ProjectionCurve для генерации плавающих денежных потоков.

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

свернуть все

Годовая структура терминов нулевой ставки, заданная с помощью intenvset для создания RateSpec.

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

Количество базисных точек над скоростью ссылки, заданное как NINST-by- 1 вектор.

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

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

Settle должно быть раньше Maturity.

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

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

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

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

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

Пример: [Price,DirtyPrice,CFlowAmounts,CFlowDates] = floatbyzero(RateSpec,Spread,Settle,Maturity,'Principal',Principal)

Частота платежей в год, заданная как разделенная разделенными запятой парами, состоящая из 'FloatReset' и a NINST-by- 1 вектор.

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

Базис отсчета дней, заданный как разделенная разделенными запятой парами, состоящая из 'Basis' и a NINST-by- 1 вектор.

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

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

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

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

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

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

Ставка для следующего плавающего платежа, установленного на последнюю дату сброса, заданная как разделенная разделенными запятой парами, состоящая из 'LatestFloatingRate' и a NINST-by- 1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

Цены ноты с плавающей ставкой, возвращенные как (NINST) по количеству кривых (NUMCURVES) матрица. Каждый столбец возникает из-за одной из нулевых кривых.

Цена грязной ноты (чистая + начисленные проценты), возвращенная как NINST- by- NUMCURVES матрица. Каждый столбец возникает из-за одной из нулевых кривых.

Суммы денежного потока, возвращенные как NINST- by- NUMCFS матрица денежных потоков для каждой ноты. Если в RateSpec задано несколько кривых вход, затем первый NCURVES строки соответствуют первой заметке, второй NCURVES строки соответствуют второй заметке и так далее.

Даты движения денежных средств, возвращенные как NINST- by- NUMCFS матрица дат платежей для каждой ноты.

Подробнее о

свернуть все

Примечание с плавающей скоростью

floating-rate note является обеспечением, подобным облигации, но процентная ставка банкноты периодически сбрасывается относительно ссылки индекса ставки, чтобы отразить колебания рыночных процентных ставок.

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