Financial Instruments Toolbox™ поддерживает пять типов моделей дерева рекомбинации, чтобы представлять эволюцию цен на акции:
Модель Кокса-Росса-Рубинштейна (CRR)
Модель с равными вероятностями (EQP)
Модель Лейзена-Реймера (LR)
Подразумеваемая модель триномиального дерева (ITT)
Стандартная модель триномиального дерева (STT)
Для обсуждения рекомбинирования деревьев смотрите Rate and Price Trees.
Модели CRR, EQP, LR, STT и ITT являются примерами дискретных временных моделей. Модель дискретного времени делит время на дискретные биты; цены могут быть рассчитаны только в эти конкретные моменты времени.
Модель CRR является одним из наиболее распространенных методов, используемых для моделирования эволюции складских процессов. Сила модели CRR заключается в ее простоте. Это хорошая модель при работе со многими уровнями дерева. Модель CRR приводит к правильному ожидаемому значению для каждого узла дерева и обеспечивает хорошее приближение для соответствующей локальной волатильности. Приближение становится лучше, когда количество временных шагов, представленных в дереве, увеличивается.
Модель EQP является другой моделью дискретного времени. Это имеет преимущество создания дерева с точной волатильностью в каждом узле дерева, даже с небольшим количеством временных шагов. Это также обеспечивает лучшие результаты, чем CRR, в некоторых конкретных торговых окружениях, например, когда волатильность акций низкая и процентные ставки высоки. Однако эта дополнительная точность вызывает повышенную сложность, что отражается в количестве вычислений, необходимых для постройки дерева.
Модель LR является другой моделью дискретного времени. Он имеет преимущество создания оценок, близких к модели Блэка-Скоулза, используя всего несколько шагов, при этом минимизируя колебания.
Модель ITT является подразумеваемым триномиальным деревом в стиле CRR, которое использует цены, котируемые из жидких опций на рынке с различными забастовками и зрелостями, чтобы построить дерево, которое более точно представляет рынок. Модель ITT обычно используется для оценки экзотических опций таким образом, чтобы они соответствовали рыночным ценам стандартных опций.
Модель STT является другой моделью дискретного времени. Считается, что это дает более точные результаты, чем биномиальная модель, когда моделируется меньше временных шагов. Модель STT иногда более стабильна и точна, чем биномиальная модель при ценообразовании экзотических опций.
Дерево цен на акции является основным модулем, представляющей эволюцию цены на акции в течение заданного периода времени. MATLAB® функции crrtree
, eqptree
, и lrtree
создание деревьев CRR, деревьев EQP и деревьев LR, соответственно. Эти функции создают древовидную структуру выхода наряду с информацией о параметрах, используемых для создания дерева.
Функции crrtree
, eqptree
, и lrtree
взять в качестве входных параметров три структуры:
Структура параметров запаса StockSpec
Структура процентной ставки RateSpec
Древовидная структура временного размещения TimeSpec
Синтаксис вызова для crrtree
является:
CRRTree = crrtree (StockSpec, RateSpec, TimeSpec)
Точно так же синтаксис вызова для eqptree
является:
EQPTree = eqptree (StockSpec, RateSpec, TimeSpec)
И синтаксис вызова для lrtree
является:
LRTree = lrtree(StockSpec, RateSpec, TimeSpec, Strike)
Все три функции требуют структур StockSpec
, RateSpec
, и TimeSpec
как входные параметры:
StockSpec
- структура, которая задает параметры акции, эволюция цены которой представлена деревом. Эта структура, созданная с помощью функции stockspec
, содержит информацию, такую как исходная цена акции, ее волатильность и информация о выплате дивидендов.
RateSpec
- спецификация процентной ставки для кривой начальной ставки. Создайте эту структуру с функцией intenvset
.
TimeSpec
- спецификация древовидного временного размещения. Создайте эти структуры с функциями crrtimespec
, eqptimespec
, и lrtimespec
. Структуры содержат информацию о отображении соответствующих дат в древовидную структуру, плюс количество временных шагов, используемых для создания дерева.
Структура StockSpec
инкапсулирует специфическую для запаса информацию, необходимую для создания двоичного дерева движения цены отдельного запаса.
Вы генерируете StockSpec
с функцией stockspec
. Эта функция требует двух входных параметров и принимает до три дополнительных входных параметров, которые зависят от существования и типа дивидендных выплат.
Синтаксис вызова stockspec
является:
StockSpec = stockspec (Sigma, AssetPrice, DividendType,...
Дивидендные суммы, ExDividendDates)
где:
Sigma
- десятичная годовая волатильность базовой безопасности.
AssetPrice
- цена запаса на дату оценки.
DividendType
- вектор символов, задающий тип дивидендов, выплачиваемых акциями. Допустимые значения cash
, constant
, или continuous
.
DividendAmounts
имеет значение, которое зависит от спецификации DividendType
. Для DividendType
cash
, DividendAmounts
является вектором денежных дивидендов. Для DividendType
constant
, это вектор постоянных годовых дивидендных выражений. Для DividendType
continuous
, это скаляр, представляющий непрерывно годовое дивидендное выражение.
ExDividendDates
также имеет значение, которое зависит от характера DividendType
. Для DividendType
cash
или constant
, ExDividendDates
- вектор дат дивидендов. Для DividendType
continuous
, ExDividendDates
игнорируется.
Рассмотрим акции с ценой $100 и годовой волатильностью 15%. Предположим, что акции выплачивают три денежных дивиденда в размере 5,00 долл. США на даты 01 января 2004 года, 01 июля 2005 года и 01 января 2006 года. Вы задаете эти параметры в MATLAB как:
Sigma = 0.15; AssetPrice = 100; DividendType = 'cash'; DividendAmounts = [5; 5; 5]; ExDividendDates = {'jan-01-2004', 'july-01-2005', 'jan-01-2006'}; StockSpec = stockspec(Sigma, AssetPrice, DividendType, ... DividendAmounts, ExDividendDates)
StockSpec = FinObj: 'StockSpec' Sigma: 0.1500 AssetPrice: 100 DividendType: 'cash' DividendAmounts: [3x1 double] ExDividendDates: [3x1 double]
The RateSpec
структура определяет окружение процентных ставок, используемую при построении двоичного дерева цен на акции. Моделирование структуры процентных ставок объясняет, как создать эти структуры с помощью функции intenvset
, учитывая процентные ставки, начальную и конечную даты для каждой ставки и сложное значение.
The TimeSpec
структура определяет размещение двоичного дерева:
Оно сопоставляет даты оценки и срока с их соответствующими временами.
Он определяет время уровней дерева путем деления временного интервала между оценкой и сроком погашения на интервалы с равными интервалами. Путем определения количества интервалов задается гранулярность древовидной временной структуры.
Синтаксис для создания TimeSpec
структура:
TimeSpec = crrtimespec(ValuationDate, Maturity, NumPeriods)
TimeSpec = eqptimespec (Дата оценки, Срок исполнения, NumPeriods)
TimeSpec = lrtimespec(ValuationDate, Maturity, NumPeriods)
где:
ValuationDate
- скалярная дата, указывающая дату расчета цены и первое наблюдение в дереве (местоположение корневого узла). Вы вводите ValuationDate
либо как серийный номер даты (сгенерирован с datenum
) или вектор символов даты.
Maturity
является скалярной датой, помечающей зрелость дерева, введенной в виде серийного номера даты или вектора символов даты.
NumPeriods
является скаляром, определяющим количество временных шагов в дереве; для примера, NumPeriods = 10
подразумевает 10 временных шагов и 11 древовидных уровней (0, 1, 2,..., 9, 10).
TimeSpec
Пример использования двоичного дереваРассмотрите возможность создания дерева CRR с датой оценки 1 января 2003 г., датой погашения 1 января 2008 г. и 20 временными шагами. Вы задаете эти параметры в MATLAB как:
ValuationDate = 'Jan-1-2003'; Maturity = 'Jan-1-2008'; NumPeriods = 20; TimeSpec = crrtimespec(ValuationDate, Maturity, NumPeriods)
TimeSpec = FinObj: 'BinTimeSpec' ValuationDate: 731582 Maturity: 733408 NumPeriods: 20 Basis: 0 EndMonthRule: 1 tObs: [1x21 double] dObs: [1x21 double]
Два векторных полей в TimeSpec
структура представляет особый интерес: dObs
и tObs
. Эти два поля представляют время наблюдения и соответствующие даты всех уровней дерева с dObs(1)
и tObs(1)
, соответственно, представляющий корневой узел (ValuationDate
), и dObs(end)
и tObs(end)
представляющий последний древовидный уровень (Maturity
).
Примечание
Отсутствует связь между датами, заданными для дерева, и подразумеваемым временем уровня дерева и сроками, заданными в структуре процентной ставки. Ставки в RateSpec
интерполируются или экстраполируются по мере необходимости, чтобы соответствовать временному распределению дерева.
Теперь можно использовать StockSpec
и TimeSpec
структуры, описанные ранее, для построения дерева равных вероятностей (EQPTree
), дерево CRR (CRRTree
) или дерево LR (LRTree
). Во-первых, необходимо определить структуру процентной ставки. В данном примере примите, что процентная ставка фиксируется на уровне 10% ежегодно в период между датой оценки дерева (1 января 2003 г.) и его сроком погашения.
ValuationDate = 'Jan-1-2003'; Maturity = 'Jan-1-2008'; Rate = 0.1; RateSpec = intenvset('Rates', Rate, 'StartDates', ... ValuationDate, 'EndDates', Maturity, 'Compounding', -1);
Как создать CRRTree
, введите:
CRRTree = crrtree(StockSpec, RateSpec, TimeSpec)
CRRTree = FinObj: 'BinStockTree' Method: 'CRR' StockSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [1x21 double] dObs: [1x21 double] STree: {1x21 cell} UpProbs: [1x20 double]
Как создать EQPTree
, введите:
EQPTree = eqptree(StockSpec, RateSpec, TimeSpec)
EQPTree = FinObj: 'BinStockTree' Method: 'EQP' StockSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [1x21 double] dObs: [1x21 double] STree: {1x21 cell} UpProbs: [1x20 double]
Дерево цен на акции является основным модулем, представляющей эволюцию цены на акции в течение заданного периода времени. Функция itttree
создает древовидную структуру выхода наряду с информацией о параметрах, используемых для создания дерева.
Функция itttree
принимает в качестве входных параметров четыре структуры:
Структура параметров запаса StockSpec
Структура процентной ставки RateSpec
Древовидная структура временного размещения TimeSpec
Структура спецификации опции запаса StockOptSpec
Синтаксис вызова для itttree
является:
ITTTree = itttree (StockSpec,RateSpec,TimeSpec,StockOptSpec)
StockSpec
- структура, которая задает параметры акции, эволюция цены которой представлена деревом. Эта структура, созданная с помощью функции stockspec
, содержит информацию, такую как исходная цена акции, ее волатильность и информация о выплате дивидендов.
RateSpec
- спецификация процентной ставки для кривой начальной ставки. Создайте эту структуру с функцией intenvset
.
TimeSpec
- спецификация древовидного временного размещения. Создайте эти структуры с функцией itttimespec
. Эта структура содержит информацию о отображении соответствующих дат в древовидную структуру, плюс количество временных шагов, используемых для создания дерева.
StockOptSpec
- структура, содержащая параметры европейских инструментов фондовых опций. Создайте эту структуру с функцией stockoptspec
.
Структура StockSpec
инкапсулирует специфическую для запаса информацию, необходимую для создания триномиального дерева движения цен отдельной акции.
Вы генерируете StockSpec
с функцией stockspec
. Эта функция требует двух входных параметров и принимает до три дополнительных входных параметров, которые зависят от существования и типа дивидендных выплат.
Синтаксис вызова stockspec
является:
StockSpec = stockspec (Sigma, AssetPrice, DividendType,...
Дивидендные суммы, ExDividendDates)
где:
Sigma
- десятичная годовая волатильность базовой безопасности.
AssetPrice
- цена запаса на дату оценки.
DividendType
- вектор символов, задающий тип дивидендов, выплачиваемых акциями. Допустимые значения cash
, constant
, или continuous
.
DividendAmounts
имеет значение, которое зависит от спецификации DividendType
. Для DividendType
cash
, DividendAmounts
является вектором денежных дивидендов. Для DividendType
constant
, это вектор постоянных годовых дивидендных выражений. Для DividendType
continuous
, это скаляр, представляющий непрерывно годовое дивидендное выражение.
ExDividendDates
также имеет значение, которое зависит от характера DividendType
. Для DividendType
cash
или constant
, ExDividendDates
- вектор дат дивидендов. Для DividendType
continuous
, ExDividendDates
игнорируется.
Рассмотрим акции с ценой $100 и годовой волатильностью 12%. Предположим, что акции должны выплатить дивидендное выражение в 6%. Вы задаете эти параметры в MATLAB как:
So = 100;
DividendYield = 0.06;
Sigma = .12;
StockSpec = stockspec(Sigma, So, 'continuous', DividendYield)
StockSpec = FinObj: 'StockSpec' Sigma: 0.1200 AssetPrice: 100 DividendType: 'continuous' DividendAmounts: 0.0600 ExDividendDates: []
Структура RateSpec
определяет окружение процентных ставок, используемую при построении двоичного дерева цен на акции. Моделирование структуры процентных ставок объясняет, как создать эти структуры с помощью функции intenvset
, учитывая процентные ставки, начальную и конечную даты для каждой ставки и сложное значение.
The TimeSpec
структура определяет размещение триномиального дерева:
Оно сопоставляет даты оценки и срока с их соответствующими временами.
Он определяет время уровней дерева путем деления временного интервала между оценкой и сроком погашения на интервалы с равными интервалами. Путем определения количества интервалов задается гранулярность древовидной временной структуры.
Синтаксис для создания TimeSpec
структура:
TimeSpec = itttimespec(ValuationDate, Maturity, NumPeriods)
где:
ValuationDate
- скалярная дата, указывающая дату расчета цены и первое наблюдение в дереве (местоположение корневого узла). Вы вводите ValuationDate
либо как серийный номер даты (сгенерирован с datenum
) или вектор символов даты.
Maturity
является скалярной датой, помечающей зрелость дерева, введенной в виде серийного номера даты или вектора символов даты.
NumPeriods
является скаляром, определяющим количество временных шагов в дереве; для примера, NumPeriods = 10
подразумевает 10 временных шагов и 11 древовидных уровней (0, 1, 2,..., 9, 10).
TimeSpec
Пример использования неявного триномиального дереваРассмотрите возможность создания дерева ITT с датой оценки 1 января 2006 г., датой погашения 1 января 2008 г. и четырьмя временными шагами. Вы задаете эти параметры в MATLAB как:
ValuationDate = '01-01-2006'; EndDate = '01-01-2008'; NumPeriods = 4; TimeSpec = itttimespec(ValuationDate, EndDate, NumPeriods)
TimeSpec = FinObj: 'ITTTimeSpec' ValuationDate: 732678 Maturity: 733408 NumPeriods: 4 Basis: 0 EndMonthRule: 1 tObs: [0 0.5000 1 1.5000 2] dObs: [732678 732860 733043 733225 733408]
Два векторных полей в TimeSpec
структура представляет особый интерес: dObs
и tObs
. Эти два поля представляют время наблюдения и соответствующие даты всех уровней дерева с dObs(1)
и tObs(1)
, соответственно, представляющий корневой узел (ValuationDate
), и dObs(end)
и tObs(end)
представляющий последний древовидный уровень (Maturity
).
The StockOptSpec
структура инкапсулирует опцию специфическую для запаса информацию, необходимую для создания подразумеваемого триномиального дерева. Вы генерируете StockOptSpec
с функцией stockoptspec
. Эта функция требует пяти входных параметров. Необязательный шестой аргумент InterpMethod
, задающий метод интерполяции, может быть включен. Синтаксис вызова stockoptspec
является:
[StockOptSpec] = stockoptspec(OptPrice, Strike, Settle, Maturity, OptSpec)
где:
Optprice
является NINST
-by- 1
вектор европейских опционных цен.
Strike
является NINST
-by- 1
вектор страйк-цен.
Settle
является скалярной датой, обозначающей дату расчета.
Maturity
является NINST
-by- 1
вектор дат зрелости.
OptSpec
является NINST
-by- 1
массив ячеек из векторов символов для значений 'call'
или 'put'
.
Примите во внимание следующие данные, приведенные по жидким опциям на рынке с различными ударами и зрелостью. Вы задаете эти параметры в MATLAB как:
Settle = '01/01/06'; Maturity = ['07/01/06'; '07/01/06'; '07/01/06'; '07/01/06'; '01/01/07'; '01/01/07'; '01/01/07'; '01/01/07'; '07/01/07'; '07/01/07'; '07/01/07'; '07/01/07'; '01/01/08'; '01/01/08'; '01/01/08'; '01/01/08']; Strike = [113; 101; 100; 88; 128; 112; 100; 78; 144; 112; 100; 69; 162; 112; 100; 61]; OptPrice = [ 0; 4.807905472659144; 1.306321897011867; 0.048039195057173; 0; 2.310953054191461; 1.421950392866235; 0.020414826276740; 0; 5.091986935627730; 1.346534812295291; 0.005101325584140; 0; 8.047628153217246; 1.219653432150932; 0.001041436654748]; OptSpec = { 'call'; 'call'; 'put'; 'put'; 'call'; 'call'; 'put'; 'put'; 'call'; 'call'; 'put'; 'put'; 'call'; 'call'; 'put'; 'put'}; StockOptSpec = stockoptspec(OptPrice, Strike, Settle, Maturity, OptSpec)
StockOptSpec = FinObj: 'StockOptSpec' OptPrice: [16x1 double] Strike: [16x1 double] Settle: 732678 Maturity: [16x1 double] OptSpec: {16x1 cell} InterpMethod: 'price'
Примечание
Алгоритм создания дерева ITT требует определения опции цен для всех узлов дерева. Сроки погашения этих опций соответствуют срокам на уровнях дерева, и забастовка по ценам на узлах дерева. Типы опций Calls
для узлов над центральными узлами и Puts
для нижеследующих и включая центральные узлы.
Очевидно, что все эти опции не будут доступны на рынке, что делает интерполяцию и экстраполяцию необходимыми для получения опционных цен узлов. Степень, в которой дерево отражает рынок, неизбежно будет привязана к результатам этих интерполяций и экстраполяций. Принимая во внимание, что экстраполяция менее точна, чем интерполяция, и, тем дальше, экстраполированные точки находятся от точек данных, функция itttree
выдает предупреждение с списком опций, для которых необходима экстраполяция.
Иногда может быть желательно просмотреть список идеальных цен на опцию, чтобы сформировать представление о необходимых областях значений. Это может быть достигнуто путем вызова функции itttree
указание только первых трех входных параметров. Второй выходной аргумент является массивом структур, содержащим список идеальных необходимых опций.
Теперь можно использовать StockSpec
, TimeSpec
, и StockOptSpec
Пример структуры запаса Использование неявного триномиального дерева, пример TimeSpec Использование неявного триномиального дерева и пример опционной структуры запаса Использование неявного триномиального дерева для построения неявного триномиального дерева (ITT). Во-первых, необходимо определить структуру терминов процентной ставки. В данном примере примите, что процентная ставка фиксируется на уровне 8% ежегодно в период между датой оценки дерева (1 января 2006 г.) и его сроком погашения.
Rate = 0.08; ValuationDate = '01-01-2006'; EndDate = '01-01-2008'; RateSpec = intenvset('StartDates', ValuationDate, 'EndDates', EndDate, ... 'ValuationDate', ValuationDate, 'Rates', Rate, 'Compounding', -1);
Как создать ITTTree
, введите:
ITTTree = itttree(StockSpec, RateSpec, TimeSpec, StockOptSpec)
ITTTree = FinObj: 'ITStockTree' StockSpec: [1x1 struct] StockOptSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 0.500000000000000 1 1.500000000000000 2] dObs: [732678 732860 733043 733225 733408] STree: {1x5 cell} Probs: {[3x1 double] [3x3 double] [3x5 double] [3x7 double]}
Дерево цен на акции является основным модулем, представляющей эволюцию цены на акции в течение заданного периода времени. Функция stttree
создает древовидную структуру выхода наряду с информацией о параметрах, используемых для создания дерева.
Функция stttree
принимает три структуры в качестве входных параметров:
Структура параметров запаса StockSpec
Структура процентной ставки RateSpec
Древовидная структура временного размещения TimeSpec
Синтаксис вызова для stttree
является:
STTTree = stttree (StockSpec,RateSpec,TimeSpec)
StockSpec
- структура, которая задает параметры акции, эволюция цены которой представлена деревом. Эта структура, созданная с помощью функции stockspec
, содержит информацию, такую как исходная цена акции, ее волатильность и информация о выплате дивидендов.
RateSpec
- спецификация процентной ставки для кривой начальной ставки. Создайте эту структуру с функцией intenvset
.
TimeSpec
- спецификация древовидного временного размещения. Создайте эти структуры с функцией stttimespec
. Эта структура содержит информацию о отображении соответствующих дат в древовидную структуру, плюс количество временных шагов, используемых для создания дерева.
Структура StockSpec
инкапсулирует специфическую для запаса информацию, необходимую для создания триномиального дерева движения цен отдельной акции.
Вы генерируете StockSpec
с функцией stockspec
. Эта функция требует двух входных параметров и принимает до три дополнительных входных параметров, которые зависят от существования и типа дивидендных выплат.
Синтаксис вызова stockspec
является:
StockSpec = stockspec (Sigma, AssetPrice, DividendType,...
Дивидендные суммы, ExDividendDates)
где:
Sigma
- десятичная годовая волатильность базовой безопасности.
AssetPrice
- цена запаса на дату оценки.
DividendType
- вектор символов, задающий тип дивидендов, выплачиваемых акциями. Допустимые значения cash
, constant
, или continuous
.
DividendAmounts
имеет значение, которое зависит от спецификации DividendType
. Для DividendType
cash
, DividendAmounts
является вектором денежных дивидендов. Для DividendType
constant
, это вектор постоянных годовых дивидендных выражений. Для DividendType
continuous
, это скаляр, представляющий непрерывно годовое дивидендное выражение.
ExDividendDates
также имеет значение, которое зависит от характера DividendType
. Для DividendType
cash
или constant
, ExDividendDates
- вектор дат дивидендов. Для DividendType
continuous
, ExDividendDates
игнорируется.
Рассмотрим акции с ценой $100 и годовой волатильностью 12%. Предположим, что акции должны выплатить дивидендное выражение в 6%. Вы задаете эти параметры в MATLAB как:
So = 100;
DividendYield = 0.06;
Sigma = .12;
StockSpec = stockspec(Sigma, So, 'continuous', DividendYield)
StockSpec = FinObj: 'StockSpec' Sigma: 0.1200 AssetPrice: 100 DividendType: 'continuous' DividendAmounts: 0.0600 ExDividendDates: []
Структура RateSpec
определяет окружение процентных ставок, используемую при построении двоичного дерева цен на акции. Моделирование структуры процентных ставок объясняет, как создать эти структуры с помощью функции intenvset
, учитывая процентные ставки, начальную и конечную даты для каждой ставки и сложное значение.
The TimeSpec
структура определяет размещение триномиального дерева:
Оно сопоставляет даты оценки и срока с их соответствующими временами.
Он определяет время уровней дерева путем деления временного интервала между оценкой и сроком погашения на интервалы с равными интервалами. Путем определения количества интервалов задается гранулярность древовидной временной структуры.
Синтаксис для создания TimeSpec
структура:
TimeSpec = stttimespec(ValuationDate, Maturity, NumPeriods)
где:
ValuationDate
- скалярная дата, указывающая дату расчета цены и первое наблюдение в дереве (местоположение корневого узла). Вы вводите ValuationDate
либо как серийный номер даты (сгенерирован с datenum
) или вектор символов даты.
Maturity
является скалярной датой, помечающей зрелость дерева, введенной в виде серийного номера даты или вектора символов даты.
NumPeriods
является скаляром, определяющим количество временных шагов в дереве; для примера, NumPeriods = 10
подразумевает 10 временных шагов и 11 древовидных уровней (0, 1, 2,..., 9, 10).
TimeSpec
Пример использования стандартного триномиального дереваРассмотрите возможность создания дерева STT с датой оценки 1 января 2006 г., датой погашения 1 января 2008 г. и четырьмя временными шагами. Вы задаете эти параметры в MATLAB как:
ValuationDate = '01-01-2006'; EndDate = '01-01-2008'; NumPeriods = 4; TimeSpec = stttimespec(ValuationDate, EndDate, NumPeriods)
TimeSpec = FinObj: 'STTTimeSpec' ValuationDate: 732678 Maturity: 733408 NumPeriods: 4 Basis: 0 EndMonthRule: 1 tObs: [0 0.5000 1 1.5000 2] dObs: [732678 732860 733043 733225 733408]
Два векторных полей в TimeSpec
структура представляет особый интерес: dObs
и tObs
. Эти два поля представляют время наблюдения и соответствующие даты всех уровней дерева с dObs(1)
и tObs(1)
, соответственно, представляющий корневой узел (ValuationDate
), и dObs(end)
и tObs(end)
представляющий последний древовидный уровень (Maturity
).
Теперь можно использовать StockSpec
, TimeSpec
Пример структуры запаса Использование неявного триномиального дерева и примера TimeSpec Использование неявного триномиального дерева для создания стандартного триномиального дерева (STT). Во-первых, необходимо определить структуру терминов процентной ставки. В данном примере примите, что процентная ставка фиксируется на уровне 8% ежегодно в период между датой оценки дерева (1 января 2006 г.) и его сроком погашения.
Rate = 0.08; ValuationDate = '01-01-2006'; EndDate = '01-01-2008'; RateSpec = intenvset('StartDates', ValuationDate, 'EndDates', EndDate, ... 'ValuationDate', ValuationDate, 'Rates', Rate, 'Compounding', -1);
Как создать STTTree
, введите:
STTTree = stttree(StockSpec, RateSpec, TimeSpec)
STTTree = FinObj: 'STStockTree' StockSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 0.5000 1 1.5000 2] dObs: [732678 732860 733043 733225 733408] STree: {1x5 cell} Probs: {[3x1 double] [3x3 double] [3x5 double] [3x7 double]}
Financial Instruments Toolbox использует бинарные и триномиальные деревья акций, чтобы представлять цены опций акций и базовых акций. На самом высоком уровне эти деревья имеют обернутые вокруг них конструкции. Структуры инкапсулируют информацию, необходимую для интерпретации информации в дереве.
Чтобы изучить равенство, двоичное дерево или триномиальное дерево, загрузите данные в MAT-файл deriv.mat
в рабочее пространство MATLAB.
load deriv.mat
Отображение списка переменных, загруженных из MAT-файла с whos
команда.
Name Size Bytes Class Attributes BDTInstSet 1x1 27344 struct BDTTree 1x1 7322 struct BKInstSet 1x1 27334 struct BKTree 1x1 8532 struct CRRInstSet 1x1 21066 struct CRRTree 1x1 7086 struct EQPInstSet 1x1 21066 struct EQPTree 1x1 7086 struct HJMInstSet 1x1 27336 struct HJMTree 1x1 8334 struct HWInstSet 1x1 27334 struct HWTree 1x1 8532 struct ITTInstSet 1x1 21070 struct ITTTree 1x1 12660 struct STTInstSet 1x1 21070 struct STTTree 1x1 7782 struct ZeroInstSet 1x1 17458 struct ZeroRateSpec 1x1 2152 struct
CRRTree
Можно детально изучить содержимое CRRTree
структура, содержащаяся в этом файле.
CRRTree
CRRTree = FinObj: 'BinStockTree' Method: 'CRR' StockSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1 2 3 4] dObs: [731582 731947 732313 732678 733043] STree: {[100] [110.5171 90.4837] [122.1403 100 81.8731] [1x4 double] [1x5 double]} UpProbs: [0.7309 0.7309 0.7309 0.7309]
The Method
поле структуры указывает, что это дерево CRR, а не дерево EQP.
Поля StockSpec
, TimeSpec
, и RateSpec
удержание исходных структур, переданных в функцию crrtree
. Они содержат всю контекстную информацию, необходимую для интерпретации древовидных данных.
Поля tObs
и dObs
- векторы, содержащие время и даты наблюдений, то есть время и даты уровней дерева. В этой конкретной ситуации tObs
показывает, что дерево имеет зрелость четыре года (tObs(end) = 4
) и что он имеет четыре временных шагов (длина tObs
- пять).
Полевые dObs
показывает конкретные даты для уровней дерева с гранулярностью один день. Это означает, что все значения в tObs
которые соответствуют данному дню с 00:00 часов до 24:00 часов отображаются на соответствующее значение в dObs
. Вы можете использовать функцию datestr
чтобы преобразовать эти последовательные даты MATLAB в их представления векторов символов.
Полевые UpProbs
является вектором, представляющим вероятности для движений вверх от любого узла на каждом уровне. Этот вектор имеет по одному элементу на уровень дерева. Все узлы для данного уровня имеют одинаковую вероятность движения вверх. В рассматриваемом конкретном случае вероятность движения вверх составляет 0,7309 для всех уровней, и вероятность движения вниз составляет 0,2691 (1 − 0,7309).
Наконец, поле STree
содержит фактическое дерево запасов. Он представлен в MATLAB как массив ячеек с каждым элементом массива ячеек, содержащим вектор цен, соответствующий древовидному уровню. Цены в порядке убывания, то есть CRRTree.STree{3}(1)
представляет самый верхний элемент третьего уровня дерева, и CRRTree.STree{3}(end)
представляет нижний элемент того же уровня дерева.
ITTTree
Можно детально изучить содержимое ITTTree
структура, содержащаяся в этом файле.
ITTTree
ITTTree = FinObj: 'ITStockTree' StockSpec: [1x1 struct] StockOptSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 1 2 3 4] dObs: [732678 733043 733408 733773 734139] STree: {1x5 cell} Probs: {[3x1 double] [3x3 double] [3x5 double] [3x7 double]}
Поля StockSpec
, StockOptSpec
, TimeSpec
, и RateSpec
удержание исходных структур, переданных в функцию itttree
. Они содержат всю контекстную информацию, необходимую для интерпретации древовидных данных.
Поля tObs
и dObs
- векторы, содержащие время и даты наблюдений, а также время и даты уровней дерева. В этой конкретной ситуации tObs
показывает, что дерево имеет зрелость четыре года (tObs(end) = 4
) и что он имеет четыре временных шагов (длина tObs
- пять).
Полевые dObs
показывает конкретные даты для уровней дерева с гранулярностью один день. Это означает, что все значения в tObs
которые соответствуют данному дню с 00:00 часов до 24:00 часов отображаются на соответствующее значение в dObs
. Вы можете использовать функцию datestr
чтобы преобразовать эти последовательные даты MATLAB в их представления векторов символов.
Полевые Probs
является вектором, представляющим вероятности движений от любого узла на каждом уровне. Этот вектор имеет три элемента на узел дерева. В рассматриваемом конкретном случае в tObs
= 1
вероятность для движения вверх равна 0,4675, и вероятность для движения вниз равна 0,1934.
Наконец, поле STree
содержит фактическое дерево запасов. Он представлен в MATLAB как массив ячеек с каждым элементом массива ячеек, содержащим вектор цен, соответствующий древовидному уровню. Цены в порядке убывания, то есть ITTTree.STree{4}(1)
представляет верхний элемент четвертого уровня дерева, и ITTTree.STree{4}(end)
представляет нижний элемент того же уровня дерева.
CRRTree
Функция treepath
можно изолировать определенный набор узлов двоичного дерева путем определения пути, используемого для достижения последнего узла. В качестве примера рассмотрим узлы, извлеченные из корневого узла, затем следуя движению вниз, затем движению вверх и, наконец, движению вниз. Вы используете вектор, чтобы задать путь, с 1
соответствующий движению вверх и 2
соответствующий движению вниз. Затем восходящий путь представляется как [2 1 2]
. Чтобы получить значения всех узлов, затронутых этим путем, введите:
SVals = treepath(CRRTree.STree, [2 1 2])
SVals = 100.0000 90.4837 100.0000 90.4837
Первое значение в вектор SVals
соответствует корневому узлу, а последнее значение соответствует конечному узлу, достигнутому путем следования указанному пути.
ITTTree
Функция trintreepath
можно изолировать определенный набор узлов триномиального дерева путем определения пути, используемого для достижения последнего узла. В качестве примера рассмотрим узлы, постукиваемые, начиная с корневого узла, затем следуя движению вверх, затем среднему движению и, наконец, движению вниз. Вы используете вектор, чтобы задать путь, с 1
соответствующий движению вверх, 2
соответствующий среднему движению, и 3
соответствующий движению вниз. Затем восходящий-средний-нисходящий путь представляется как [1 3 2 3]
. Чтобы получить значения всех узлов, затронутых этим путем, введите:
pathSVals = trintreepath(ITTTree, [1 3 2 3])
pathSVals = 50.0000 66.3448 50.0000 50.0000 37.6819
Первое значение в вектор pathSVals
соответствует корневому узлу, а последнее значение соответствует конечному узлу, достигнутому путем следования указанному пути.
По сути структуры, представляющие деревья CRR и деревья EQP, аналогичны. Если при создании CRR или дерева EQP используются идентичные входные параметры, то отличаются только некоторые из полей древовидной структуры:
The Method
поле имеет значение 'CRR'
или 'EQP'
указывает метод, используемый для построения структуры.
Цены в STree
массив ячеек имеет ту же структуру, но цены в массиве ячеек различны.
Для EQP, поле структуры UpProb
всегда содержит вектор со всеми элементами, установленными на 0,5, в то время как для CRR эти вероятности вычисляются на основе входных параметров, переданных при построении дерева.
crrtimespec
| crrtree
| eqptimespec
| eqptree
| intenvset
| itttimespec
| itttree
| lrtimespec
| lrtree
| stockoptspec
| stockspec
| treepath
| trintreepath