Toolbox™ финансовых инструментов включает в себя набор функций для инкапсуляции информации о сроке процентной ставки в единую структуру. Эти функции представляют собой удобный способ упаковки всей информации, связанной с условиями процентных ставок, в общий формат и разрешения взаимозависимостей при изменении одного или нескольких параметров. Для получения дополнительной информации см.:
Создание или изменение (intenvset) для обсуждения создания или изменения структуры условий процентной ставки (RateSpec) с использованием intenvset функция
Получение определенных свойств (intenvget) для обсуждения того, как извлечь определенные свойства из RateSpec
intenvset)Основная функция для создания или изменения структуры срока процентной ставки RateSpec (спецификация тарифов) - intenvset. Если первым аргументом для этой функции является ранее созданный RateSpec, функция изменяет существующую спецификацию скорости и возвращает новую. В противном случае создается RateSpec.
При использовании RateSpec чтобы указать структуру условий ставки для ценовых инструментов на основе доходностей (нулевых купонных ставок) или форвардных ставок, укажите нулевые ставки или форвардные ставки в качестве входного аргумента. Тем не менее, RateSpec структура не ограничена и не специфична для этой проблемной области. RateSpec является инкапсуляцией отношений скорости-времени; intenvset действует как конструктор или модификатор, и intenvget в качестве метода доступа. Модели процентных ставок, поддерживаемые программным обеспечением Financial Instruments Toolbox, работают либо с нулевыми ставками купонов, либо с форвардными ставками.
Другой intenvset аргументы - это пары имя-значение. Можно указать или изменить следующие аргументы пары имя-значение:
Basis
Compounding
Disc
EndDates
EndMonthRule
Rates
StartDates
ValuationDate
Для получения дополнительной информации о Basis, см. Базис.
Снова рассмотрим исходную таблицу процентных ставок (см. Расчет коэффициентов дисконтирования по ставкам).
От | Кому | Уровень |
|---|---|---|
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 |
Используйте информацию в этой таблице для заполнения RateSpec структура.
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]; rs = intenvset('Compounding',Compounding,'StartDates',... StartDates, 'EndDates', EndDates, 'Rates', Rates,... 'ValuationDate', ValuationDate)
rs =
FinObj: 'RateSpec'
Compounding: 2
Disc: [5x1 double]
Rates: [5x1 double]
EndTimes: [5x1 double]
StartTimes: [5x1 double]
EndDates: [5x1 double]
StartDates: 730531
ValuationDate: 730531
Basis: 0
EndMonthRule: 1
Некоторые свойства, заполненные в структуре, не были переданы явно в вызове RateSpec. Значения автоматически завершенных свойств зависят от явно переданных свойств. Рассмотрим, например, StartTimes и EndTimes векторы. С момента StartDates и EndDates векторы передаются, и ValuationDate, intenvset имеет всю информацию, необходимую для расчета StartTimes и EndTimes. Следовательно, эти два свойства доступны только для чтения.
intenvget)Функция, дополняющая intenvset является intenvget, которая получает специфичные для функции свойства из структуры срока процентной ставки. Его синтаксис:
ParameterValue = intenvget(RateSpec, 'ParameterName')
Получение вектора EndTimes от RateSpec структура, введите:
EndTimes = intenvget(rs, 'EndTimes')EndTimes =
1
2
3
4
5
Получить Disc, значения для коэффициентов дисконтирования, которые были рассчитаны автоматически intenvset, введите:
Disc = intenvget(rs, 'Disc')Disc =
0.9756
0.9463
0.9151
0.8799
0.8319
Эти коэффициенты дисконтирования соответствуют периодам, начинающимся с StartDates и заканчивается на EndDates.
Внимание
Хотя эти поля можно открыть непосредственно в структуре вместо использования intenvget, рекомендуется не делать этого. Формат структуры условий процентной ставки может измениться в будущих версиях инструментария. Если это произойдет, любой код, получающий доступ к RateSpec непосредственно поля перестанут работать.
Теперь используйте RateSpec структура с ее функциями для изучения того, как изменения в конкретных свойствах структуры процентного срока влияют на зависящие от нее. В упражнении измените значение Compounding с 2 (полугодовой) до 1 (годовой).
rs = intenvset(rs, 'Compounding', 1);
С тех пор StartTimes и EndTimes измеряются в единицах периодической скидки, изменение в Compounding с 2 до 1 переопределяет базовую единицу с полугодовой на годовую. Это означает, что период в шесть месяцев представлен значением 0.5, и период в один год представлен 1. Для получения векторов StartTimes и EndTimes, введите:
StartTimes = intenvget(rs, 'StartTimes'); EndTimes = intenvget(rs, 'EndTimes'); Times = [StartTimes, EndTimes]
Times =
0 0.5000
0 1.0000
0 1.5000
0 2.0000
0 2.5000
Так как все значения в StartDates совпадают с датой оценки, все StartTimes значения равны 0. С другой стороны, значения в EndDates векторы - это даты, разделенные шестимесячными периодами. Поскольку переопределенное значение компаундирования равно 1, EndTimes становится последовательностью чисел, разделенных приращениями 0,5.
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