MATLAB® Options
структура обеспечивает дополнительные входы для большинства функций ценообразования. The Options
структура
Описывает функции ценообразования, как использовать дерево процентных ставок для вычисления цен инструмента.
Определяет, какая дополнительная информация отображается в Командном окне вместе с ценами на приборы.
Сообщает функциям ценообразования, какой метод использовать в опциях барьера ценообразования.
Структура опций ценообразования в основном используется в ценообразовании финансовых производных на основе процентных ставок. Однако BarrierMethod
поле в структуре позволяет использовать его и в ценовом барьере опций а также.
Вы предоставляете опции ценообразования в необязательном Options
аргумент передан в функцию ценообразования. (См., например, bondbyhjm
, bdtprice
, barrierbycrr
, barrierbyeqp
, или barrierbyitt
.)
Если вы не задаете Options
аргумент в вызове функции ценообразования, функция использует структуру по умолчанию. Чтобы наблюдать структуру по умолчанию, используйте derivset
без аргументов.
Options = derivset Options = Diagnostics: 'off' Warnings: 'on' ConstRate: 'on' BarrierMethod: 'unenhanced'
The Options
структура имеет четыре поля: Diagnostics
, Warnings
, ConstRate
, и BarrierMethod
.
Diagnostics
указывает, отображается ли дополнительная информация, если дерево изменено. Значение по умолчанию для этой опции 'off'
. Если Diagnostics
установлено в 'on'
и ConstRate
установлено в 'off'
функции расчета цены отображают информацию, такую как число узлов на последнем уровне дерева, сгенерированного для целей расчета цены.
Warnings
указывает, отображать ли предупреждающие сообщения, когда дерево входа недостаточно для точной оценки инструментов. Значение по умолчанию для этой опции 'on'
. Если оба ConstRate
и Warnings
являются 'on'
предупреждение отображается, если у любого из инструментов в вход портфеле есть дата денежного потока между древовидными датами. Если ConstRate
является 'off'
, и Warnings
является 'on'
предупреждение отображается, если дерево изменено так, чтобы оно совпадало с датами денежного потока в инструментах портфеля.
ConstRate
указывает, следует ли принимать процентные ставки постоянными между древовидными датами. По умолчанию эта опция 'on'
, что не является произвольным предположением. Таким образом, функции ценообразования возвращают приблизительную цену для инструментов с денежными потоками между древовидными датами. Инструменты, показывающие денежные потоки только на узлах дерева, не затронуты этой опцией и возвращают точные (без арбитража) цены. Когда ConstRate
является 'off'
Функция ценообразования находит даты денежного потока для всех инструментов в портфеле. Если эти денежные потоки не совпадают точно с древовидными датами, создается новое дерево, которое используется для расчета цены. Это новое дерево имеет те же спецификации волатильности и начальной скорости дерева входа, но содержит узлы дерева для каждой даты, в которой по крайней мере один инструмент в портфеле имеет денежный поток. Следует иметь в виду, что число узлов в дереве растет экспоненциально с количеством древовидных дат. Итак, настройка ConstRate
'off'
значительно увеличивает потребности компьютера в памяти и процессорах.
При использовании биномиальных деревьев для ценового барьера опций это может потребовать многих шагов дерева для достижения точного результата, когда узлы дерева не совпадают с уровнем барьера. С BarrierMethod
Тулбокс обеспечивает способ улучшения, который повышает точность результатов без необходимости использования больших деревьев.
The BarrierMethod
для поля может быть задано значение 'unenhanced'
(по умолчанию) или 'interp'
. Если вы задаете 'unenhanced'
Вычисление коррекции не используется. В противном случае, если вы задаете 'interp'
тулбокс обеспечивает расширенную оценку путем интерполяции между узлами на контурах барьера.
Вы задаете метод барьера в последнем входном параметре, Options
, функций barrierbycrr
, barrierbyeqp
, barrierbyitt
, crrprice
, eqpprice
, ittprice
, crrsens
, eqpsens
, или ittsens
. Options
- структура, которую вы создаете с функцией derivset
. Использование derivset
, вы задаете, использовать ли расширенный или незавершенный метод.
Для получения дополнительной информации об этом алгоритме см. Derman, E., I. Kani, D. Ergener и I. Bardhan, «Расширенные численные методы для опций с барьерами», Financial Analysts Journal, (Nov. - Dec. 1995), pp. 65-74.
Настройте структуру Options, передав пары имя/значение свойства в derivset
функция.
В качестве примера рассмотрим структуру опций с ConstRate
'off'
и Diagnostics
'on'
.
Options = derivset('ConstRate', 'off', 'Diagnostics', 'on') Options = Diagnostics: 'on' Warnings: 'on' ConstRate: 'off' BarrierMethod: 'unenhanced'
Чтобы получить значение определенного свойства из структуры опций, используйте derivget
.
CR = derivget(Options, 'ConstRate') CR = Off
Примечание
Использовать derivset
и derivget
для создания структуры опций. Эти функции гарантированно останутся неизменными, в то время как реализации самой структуры могут быть изменены в будущем.
Теперь наблюдайте эффекты настройки ConstRate
'off'
. Получите даты из дерева HJM.
TreeDates = [HJMTree.TimeSpec.ValuationDate;... HJMTree.TimeSpec.Maturity] TreeDates = 730486 730852 731217 731582 731947 datedisp(TreeDates) 01-Jan-2000 01-Jan-2001 01-Jan-2002 01-Jan-2003 01-Jan-2004
Все инструменты в HJMInstSet
рассчитываются 1 января 2000 года, и все имеют денежные потоки один раз в год, за исключением второй облигации, которая имеет период 2. Эта облигация имеет денежные потоки дважды в год, причем каждый другой денежный поток, следовательно, падает между древовидными датами. Вы можете извлечь эту облигацию из портфеля, чтобы сравнить, как ее цена отличается, установив ConstRate
на 'on'
и 'off'
.
BondPort = instselect(HJMInstSet, 'Index', 2); instdisp(BondPort) Index Type CouponRate Settle Maturity Period Basis... 1 Bond 0.04 01-Jan-2000 01-Jan-2004 2 NaN...
Сначала оцените облигацию с ConstRate
'on'
(по умолчанию).
format long [BondPrice, BondPriceTree] = hjmprice(HJMTree, BondPort) Warning: Not all cash flows are aligned with the tree. Result will be approximated. BondPrice = 97.52801411736377 BondPriceTree = FinObj: 'HJMPriceTree' PBush: {1x5 cell} AIBush: {[0] [1x1x2 double] ... [1x4x2 double] [1x8 double]} tObs: [0 1 2 3 4]
Теперь пересчитайте цену настройки облигаций ConstRate
'off'
.
OptionsNoCR = derivset('ConstR', 'off') OptionsNoCR = Diagnostics: 'off' Warnings: 'on' ConstRate: 'off' [BondPriceNoCR, BondPriceTreeNoCR] = hjmprice(HJMTree,... BondPort, OptionsNoCR) Warning: Not all cash flows are aligned with the tree. Rebuilding tree. BondPriceNoCR = 97.53342361674437 BondPriceTreeNoCR = FinObj: 'HJMPriceTree' PBush: {1x9 cell} AIBush: {1x9 cell} tObs: [0 0.5000 1 1.5000 2 2.5000 3 3.5000 4]
Как указано в последнем предупреждении, поскольку денежные потоки облигации не совпадали с древовидными датами, для ценообразования облигации было создано новое дерево. Этот метод ценообразования возвращает более точные результаты, поскольку он гарантирует, что процесс свободен от арбитража. Это также занимает больше времени, чтобы вычислить и требует больше памяти. The tObs
поле структуры дерева цен указывает на увеличение использования памяти. BondPriceTree.tObs
имеет только пять элементов, в то время как BondPriceTreeNoCR.tObs
имеет девять. Хотя это может показаться не большим различием, это резко влияет на количество состояний в последнем узле.
size(BondPriceTree.PBush{end}) ans = 1 8 size(BondPriceTreeNoCR.PBush{end}) ans = 1 128
Различия становятся более очевидными, исследуя деревья цен с treeviewer
.
treeviewer(BondPriceTree, BondPort)
treeviewer(BondPriceTreeNoCR, BondPort)
All = [Delta ./ Price, Gamma ./ Price, Vega ./ Price, Price] All = -2.76 10.43 0.00 98.72 -3.56 16.64 -0.00 97.53 -166.18 13235.59 700.96 0.05 -2.76 10.43 0.00 98.72 -0.01 0.03 0 100.55 46.95 1090.63 14.91 6.28 -969.85 173969.77 1926.72 0.05 -76.39 287.00 0.00 3.690
instasian
| instbarrier
| instcompound
| instlookback
| instoptstock