Понимание деревьев акции

Введение

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]

Создание подразумеваемых трехчленных деревьев

Дерево курсов акций является основной единицей, представляющей эволюцию цены запаса за установленный срок времени. Функция MATLAB 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-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]}

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

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

  • Поле Method имеет значение 'CRR' или 'EQP', указывающего, что метод раньше создавал структуру.

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

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

Смотрите также

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

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

Больше о

Для просмотра документации необходимо авторизоваться на сайте