Понимание деревьев капитала

Введение

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 иногда более стабильна и точна, чем биномиальная модель при ценообразовании экзотических опций.

Создание двоичных деревьев Equity

Дерево цен на акции является основным модулем, представляющей эволюцию цены на акции в течение заданного периода времени. MATLAB® функции crrtree, eqptree, и lrtree создание деревьев CRR, деревьев EQP и деревьев LR, соответственно. Эти функции создают древовидную структуру выхода наряду с информацией о параметрах, используемых для создания дерева.

Функции crrtree, eqptree, и lrtree взять в качестве входных параметров три структуры:

  • Структура параметров запаса StockSpec

  • Структура процентной ставки RateSpec

  • Древовидная структура временного размещения TimeSpec

Последовательность вызовов для двоичных деревьев Equity

Синтаксис вызова для 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, аналогичны. Если при создании CRR или дерева EQP используются идентичные входные параметры, то отличаются только некоторые из полей древовидной структуры:

  • The Method поле имеет значение 'CRR' или 'EQP' указывает метод, используемый для построения структуры.

  • Цены в STree массив ячеек имеет ту же структуру, но цены в массиве ячеек различны.

  • Для EQP, поле структуры UpProb всегда содержит вектор со всеми элементами, установленными на 0,5, в то время как для CRR эти вероятности вычисляются на основе входных параметров, переданных при построении дерева.

См. также

| | | | | | | | | | | |

Похожие примеры

Подробнее о