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

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

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

  100.0285

Задайте уровни LIBOR и OIS.

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'})

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

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

Задайте долговое обязательство с плавающей ставкой.

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

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

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

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

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

свернуть все

Пересчитанный на год нулевой уровень называет структуру, заданное использование intenvset создать RateSpec.

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

Количество пунктов по ссылочному уровню в виде NINST- 1 вектор.

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

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

Settle должен быть ранее, чем Maturity.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

Больше о

свернуть все

Долговое обязательство с плавающей ставкой

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

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