exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

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

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

Праздники, используемые в вычислительных рабочих днях, указанные как пара, разделенная запятыми, состоящая из '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 матрица дат платежа для каждого примечания.

Подробнее

свернуть все

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

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

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