Financial Instruments 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