Financial Instruments Toolbox™ включает набор функций, чтобы инкапсулировать информацию о термине процентной ставки в одну структуру. Эти функции представляют удобный способ группировать всю информацию, связанную с условиями процентной ставки в распространенный формат и разрешить взаимозависимости, когда один или несколько параметров изменяется. Для получения информации см.:
Создание или Изменение (intenvset) для обсуждения того, как создать или изменить процентную ставку, называют структуру (RateSpec
) с помощью функции intenvset
Obtaining Specific Properties (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
. Значения автоматически завершенных свойств зависят от свойств, которые явным образом передаются. Рассмотрите, например, векторы EndTimes
и StartTimes
. Поскольку 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