Financial Instruments Toolbox™ поддерживает пять типов переобъединения древовидных моделей, чтобы представлять эволюцию курсов акций:
Модель (CRR) Кокса-Росса-Рубинштейна
Равная модель (EQP) вероятностей
Модель (LR) Лайзена-Раймера
Модель Implied trinomial tree (ITT)
Модель Standard trinomial tree (STT)
Для обсуждения повторно объединяющихся деревьев смотрите Деревья Уровня и Цены.
CRR, EQP, LR, STT и модели ITT являются примерами моделей дискретного времени. Модель дискретного времени делит время на дискретные биты; цены могут только быть вычислены в эти определенные времена.
Модель CRR является одним из наиболее распространенных методов, используемых, чтобы смоделировать эволюцию процессов запаса. Сила модели CRR находится в ее простоте. Это - хорошая модель при контакте со многими древовидными уровнями. Модель CRR дает к правильному ожидаемому значению для каждого узла дерева и обеспечивает хорошее приближение для соответствующей локальной энергозависимости. Приближение становится лучше, когда число временных шагов, представленных в дереве, увеличено.
Модель EQP является другой моделью дискретного времени. Это имеет преимущество создания дерева с точной энергозависимостью в каждом древовидном узле, даже с небольшими числами временных шагов. Это также обеспечивает лучшие результаты, чем CRR в некоторых данных торговых средах, например, когда энергозависимость запаса является низкой, и процентные ставки высоки. Однако эта дополнительная точность вызывает увеличенную сложность, которая отражается в количестве вычислений, требуемых создавать дерево.
Модель LR является другой моделью дискретного времени. Это имеет преимущество создания оценок близко к модели Black-Scholes с помощью только нескольких шагов, также минимизируя колебание.
Модель 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 (Сигма, AssetPrice, DividendType...
DividendAmounts, 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]
RateSpec
структура задает среду процентной ставки, используемую при создании двоичного дерева курса акций. Моделирование Структуры Термина Процентной ставки объясняет, как создать эти структуры с помощью функции intenvset
, учитывая процентные ставки, запуск и конечные даты каждого уровня и значение соединения.
TimeSpec
структура задает древовидное размещение двоичного дерева:
Это сопоставляет оценку и даты погашения к их соответствующим временам.
Это задает время уровней дерева путем деления отрезка времени между оценкой и зрелостью на равномерно распределенные интервалы. Путем определения количества интервалов вы задаете гранулярность древовидной временной структуры.
Синтаксис для создания TimeSpec
структура:
TimeSpec = crrtimespec(ValuationDate, Maturity, NumPeriods)
TimeSpec = eqptimespec (ValuationDate, Зрелость, 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 (Сигма, AssetPrice, DividendType...
DividendAmounts, 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
, учитывая процентные ставки, запуск и конечные даты каждого уровня и значение соединения.
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
).
StockOptSpec
структура инкапсулирует запас опции определенная информация, запрошенная для создания подразумеваемого трехчленного дерева. Вы генерируете StockOptSpec
с функцией stockoptspec
. Эта функция требует пяти входных параметров. Дополнительный шестой аргумент InterpMethod
, определение метода интерполяции, может быть включен. Синтаксис для вызова stockoptspec
:
[StockOptSpec] = stockoptspec(OptPrice, Strike, Settle, Maturity, OptSpec)
где:
Optprice
NINST
- 1
вектор из европейских цен опции.
Strike
NINST
- 1
вектор из цен исполнения опциона.
Settle
скалярная дата, отмечающая расчетный день.
Maturity
NINST
- 1
вектор из дат погашения.
OptSpec
NINST
- 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 (Сигма, AssetPrice, DividendType...
DividendAmounts, 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
, учитывая процентные ставки, запуск и конечные даты каждого уровня и значение соединения.
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]
Method
поле структуры указывает, что это - дерево CRR, не дерево EQP.
Поля StockSpec
, TimeSpec
, и RateSpec
содержите исходные структуры, переданные в функциональный crrtree
. Они содержат всю контекстную информацию, требуемую интерпретировать древовидные данные.
Поля tObs
и dObs
векторы, содержащие времена наблюдения и даты, то есть, времена и даты уровней дерева. В данном случае, tObs
показывает, что дерево имеет зрелость четырех лет (tObs(end) = 4
) и это это имеет четыре временных шага (длина tObs
пять).
Поле dObs
показывает определенные даты древовидных уровней, с гранулярностью одного дня. Это означает что все значения в tObs
это соответствует данному дню с 0: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
это соответствует данному дню с 0: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 использование идентичных входных параметров, только несколько полей древовидной структуры отличаются:
Method
поле имеет значение 'CRR'
или 'EQP'
указание на метод раньше создавало структуру.
Цены в STree
массив ячеек имеет ту же структуру, но цены в массиве ячеек отличаются.
Для EQP, поля UpProb
структуры всегда содержит вектор со всем набором элементов к 0,5, в то время как для CRR, эти вероятности вычисляются на основе входных параметров, переданных при создании дерева.
crrtimespec
| crrtree
| eqptimespec
| eqptree
| intenvset
| itttimespec
| itttree
| lrtimespec
| lrtree
| stockoptspec
| stockspec
| treepath
| trintreepath