exponenta event banner

Общие сведения о деревьях долевого участия

Введение

Financial Instruments Toolbox™ поддерживает пять типов рекомбинирующих моделей деревьев для представления эволюции цен на акции:

  • Модель Кокса-Росса-Рубинштейна (CRR)

  • Модель равных вероятностей (EQP)

  • Модель Лейзена-Реймера (LR)

  • Модель подразумеваемого триномиального дерева (ITT)

  • Стандартная модель триномиального дерева (STT)

Обсуждение рекомбинирующих деревьев см. в разделе Деревья тарифов и цен.

Модели 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

Вызов последовательности для двоичных деревьев 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, ...
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, Maturity, 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, ...
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(Sigma, 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]}

Изучение деревьев долевого участия

Инструментарий финансовых инструментов использует бинарные и триномиальные деревья акций для представления цен опционов акций и базовых акций. На самом высоком уровне эти деревья имеют обвитые вокруг себя конструкции. Структуры инкапсулируют информацию, необходимую для интерпретации информации в дереве.

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

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

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

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

См. также

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

Связанные примеры

Подробнее