Структура срока процентной ставки отражает эволюцию процентных ставок во времени. В MATLAB ® среда процентных ставок инкапсулируется в структуру, называемуюRateSpec (спецификация тарифа). Эта структура содержит всю информацию, необходимую для полного определения эволюции процентных ставок. Некоторые функции, включенные в программное обеспечение 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 вектор состоит из 0 с. Также, поскольку значение 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