Структура термина процентной ставки представляет эволюцию процентных ставок в течение времени. В MATLAB® среда процентной ставки инкапсулируется в структуре под названием RateSpec
(спецификация уровня). Эта структура содержит всю информацию, запрошенную, чтобы полностью идентифицировать эволюцию процентных ставок. Несколько функций, включенных в программное обеспечение Financial Instruments Toolbox™, выделены созданию и управлению структуры RateSpec
. Многие другие берут эту структуру в качестве входного параметра, представляющего эволюцию процентных ставок.
Перед рассмотрением далее структуры RateSpec
, исследуйте три функции, которые обеспечивают ключевую функциональность для работы с процентными ставками: disc2rate
, его противоположное, rate2disc
и ratetimes
. Первые две функции сопоставляют между коэффициентами дисконтирования и процентными ставками. Третья функция, ratetimes
, вычисляет, эффект термина изменяется на процентных ставках.
Коэффициентами дисконтирования являются коэффициенты, обычно раньше находил текущее значение будущих потоков наличности. По сути, существует прямое отображение между уровнем, применимым к промежутку времени и соответствующим коэффициентом дисконтирования. Функциональный disc2rate
преобразовывает коэффициенты дисконтирования для данного термина (период) в процентные ставки. Функциональный rate2disc
делает противоположное; это преобразовывает процентные ставки, применимые к данному термину (период) в соответствующие коэффициенты дисконтирования.
Как пример, рассмотрите эти пересчитанные на год уровни облигации с нулевым купоном.
От | К | Уровень |
---|---|---|
15 февраля 2000 | 15 августа 2000 | 0.05 |
15 февраля 2000 | 15 февраля 2001 | 0.056 |
15 февраля 2000 | 15 августа 2001 | 0.06 |
15 февраля 2000 | 15 февраля 2002 | 0.065 |
15 февраля 2000 | 15 августа 2002 | 0.075 |
Чтобы вычислить коэффициенты дисконтирования, соответствующие этим процентным ставкам, вызовите rate2disc
с помощью синтаксиса
Disc = rate2disc(Compounding, Rates, EndDates, StartDates, ValuationDate)
где:
Compounding
представляет частоту, на которой нулевые уровни составлены, когда пересчитано на год. В данном примере примите это значение, чтобы быть 2.
Rates
является вектором годовых процентных ставок, представляющих процентную ставку, применимую к каждому временному интервалу.
EndDates
является вектором дат, представляющих конец каждого термина процентной ставки (период).
StartDates
является вектором дат, представляющих начало каждого термина процентной ставки.
ValuationDate
является датой наблюдения, для которого вычисляются коэффициенты дисконтирования. В этом конкретном примере используйте 15 февраля 2000 в качестве начинающейся даты всех условий процентной ставки.
Затем, установите переменные в MATLAB.
StartDates = ['15-Feb-2000']; EndDates = ['15-Aug-2000'; '15-Feb-2001'; '15-Aug-2001';... '15-Feb-2002'; '15-Aug-2002']; Compounding = 2; ValuationDate = ['15-Feb-2000']; Rates = [0.05; 0.056; 0.06; 0.065; 0.075];
Наконец, вычислите коэффициенты дисконтирования.
Disc = rate2disc(Compounding, Rates, EndDates, StartDates,... ValuationDate)
Disc = 0.9756 0.9463 0.9151 0.8799 0.8319
Путем добавления четвертого столбца в таблицу уровней (см. Вычисление Коэффициентов дисконтирования от Уровней), чтобы включать соответствующие скидки, вы видите эволюцию коэффициентов дисконтирования.
От | К | Уровень | Скидка |
---|---|---|---|
15 февраля 2000 | 15 августа 2000 | 0.05 | 0.9756 |
15 февраля 2000 | 15 февраля 2001 | 0.056 | 0.9463 |
15 февраля 2000 | 15 августа 2001 | 0.06 | 0.9151 |
15 февраля 2000 | 15 февраля 2002 | 0.065 | 0.8799 |
15 февраля 2000 | 15 августа 2002 | 0.075 | 0.8319 |
Функциональный rate2disc
опционально возвращает два дополнительных выходных аргумента: EndTimes
и StartTimes
. Эти векторы факторов времени представляют даты начала и даты окончания в скидке периодические модули. Шкала этих модулей определяется значением входной переменной Compounding
.
Чтобы исследовать фактор времени выходные параметры, найдите соответствующие значения в предыдущем примере.
[Disc, EndTimes, StartTimes] = rate2disc(Compounding, Rates,... EndDates, StartDates, ValuationDate);
Расположите эти два вектора в единый массив для более легкой визуализации.
Times = [StartTimes, EndTimes]
Times = 0 1 0 2 0 3 0 4 0 5
Поскольку дата оценки равна дате начала всех периодов, вектор StartTimes
состоит из 0s. Кроме того, поскольку значение Compounding
равняется 2, уровни раз в полгода составляются, который устанавливает модули периодической скидки к шести месяцам. Векторный EndDates
состоит из дат, разделенных интервалами шести месяцев с даты оценки. Это объясняет, почему вектор EndTimes
является прогрессией целых чисел от 1 до 5.
Функциональный rate2disc
также размещает альтернативный синтаксис, который использует периодические дисконтные модули вместо дат. Поскольку отношение между коэффициентами дисконтирования и процентными ставками основано на периодах времени а не в абсолютные даты, эта форма rate2disc
позволяет вам работать непосредственно с периодами времени. В этом режиме дата оценки соответствует 0, и векторы, StartTimes
и EndTimes
используются в качестве входных параметров вместо их эквивалентов даты, StartDates
и EndDates
. Этот синтаксис для rate2disc
:
Disc = rate2disc(Compounding, Rates, EndTimes, StartTimes)
Используя, как введено StartTimes
и векторы EndTimes
, вычисленные ранее, необходимо получить предыдущие результаты для коэффициентов дисконтирования.
Disc = rate2disc(Compounding, Rates, EndTimes, StartTimes)
Disc = 0.9756 0.9463 0.9151 0.8799 0.8319
Функциональный disc2rate
является дополнением к rate2disc
. Это находит уровни применимыми к набору соединения периодов, учитывая коэффициент дисконтирования в те периоды. Синтаксис для того, чтобы вызвать эту функцию:
Rates = disc2rate(Compounding, Disc, EndDates, StartDates, ValuationDate)
Каждый аргумент к этой функции имеет то же значение как в rate2disc
. Используйте результаты, которые, как находят в предыдущем примере, возвращали значения уровня, с которых вы запустили.
Rates = disc2rate(Compounding, Disc, EndDates, StartDates,... ValuationDate)
Rates = 0.0500 0.0560 0.0600 0.0650 0.0750
Как в случае rate2disc
, disc2rate
опционально возвращает StartTimes
и векторы EndTimes
, представляющие запуск и время окончания, измеренное в скидке периодические модули. Снова, работая с теми же значениями как прежде, необходимо получить те же числа.
[Rates, EndTimes, StartTimes] = disc2rate(Compounding, Disc,... EndDates, StartDates, ValuationDate);
Расположите результаты в матрице, удобной для отображения.
Result = [StartTimes, EndTimes, Rates]
Result = 0 1.0000 0.0500 0 2.0000 0.0560 0 3.0000 0.0600 0 4.0000 0.0650 0 5.0000 0.0750
Как с rate2disc
, отношение между уровнями и коэффициентами дисконтирования определяется периодами времени а не абсолютными датами. Так, альтернативный синтаксис для disc2rate
использует временные векторы вместо дат, и это принимает, что дата оценки соответствует времени = 0. Основанный на времени синтаксис вызова:
Rates = disc2rate(Compounding, Disc, EndTimes, StartTimes);
Используя этот синтаксис, вы снова получаете исходные значения для процентных ставок.
Rates = disc2rate(Compounding, Disc, EndTimes, StartTimes)
Rates = 0.0500 0.0560 0.0600 0.0650 0.0750
bdtprice
| bdtsens
| bdttimespec
| bdttree
| bdtvolspec
| bkprice
| bksens
| bktimespec
| bktree
| bkvolspec
| bondbybdt
| bondbybk
| bondbyhjm
| bondbyhw
| bondbyzero
| capbybdt
| capbybk
| capbyblk
| capbyhjm
| capbyhw
| cfbybdt
| cfbybk
| cfbyhjm
| cfbyhw
| cfbyzero
| fixedbybdt
| fixedbybk
| fixedbyhjm
| fixedbyhw
| fixedbyzero
| floatbybdt
| floatbybk
| floatbyhjm
| floatbyhw
| floatbyzero
| floatdiscmargin
| floatmargin
| floorbybdt
| floorbybk
| floorbyblk
| floorbyhjm
| floorbyhw
| hjmprice
| hjmsens
| hjmtimespec
| hjmtree
| hjmvolspec
| hwcalbycap
| hwcalbyfloor
| hwprice
| hwsens
| hwtimespec
| hwtree
| hwvolspec
| instbond
| instcap
| instcf
| instfixed
| instfloat
| instfloor
| instoptbnd
| instoptembnd
| instoptemfloat
| instoptfloat
| instrangefloat
| instswap
| instswaption
| intenvprice
| intenvsens
| intenvset
| mmktbybdt
| mmktbyhjm
| oasbybdt
| oasbybk
| oasbyhjm
| oasbyhw
| optbndbybdt
| optbndbybk
| optbndbyhjm
| optbndbyhw
| optembndbybdt
| optembndbybk
| optembndbyhjm
| optembndbyhw
| optemfloatbybdt
| optemfloatbybk
| optemfloatbyhjm
| optemfloatbyhw
| optfloatbybdt
| optfloatbybk
| optfloatbyhjm
| optfloatbyhw
| rangefloatbybdt
| rangefloatbybk
| rangefloatbyhjm
| rangefloatbyhw
| swapbybdt
| swapbybk
| swapbyhjm
| swapbyhw
| swapbyzero
| swaptionbybdt
| swaptionbybk
| swaptionbyblk
| swaptionbyhjm
| swaptionbyhw