В этом примере показано, как Toolbox™ финансовых инструментов используется для создания дерева Black-Derman-Toy (BDT) и оценки портфеля инструментов с использованием модели BDT.
Структура RateSpec представляет собой структуру терминов процентных ставок, которая определяет начальную спецификацию форвардной ставки, из которой извлекаются древовидные ставки. Для заполнения структуры RateSpec используется информация о годовых нулевых ставках купонов в таблице ниже.
From To Rate
01 Jan 2005 01 Jan 2006 0.0275
01 Jan 2005 01 Jan 2007 0.0312
01 Jan 2005 01 Jan 2008 0.0363
01 Jan 2005 01 Jan 2009 0.0415
01 Jan 2005 01 Jan 2010 0.0458
StartDates = ['01 Jan 2005']; EndDates = ['01 Jan 2006'; '01 Jan 2007'; '01 Jan 2008'; '01 Jan 2009'; '01 Jan 2010']; ValuationDate = ['01 Jan 2005']; Rates = [0.0275; 0.0312; 0.0363; 0.0415; 0.0458]; Compounding = 1; RateSpec = intenvset('Compounding',Compounding,'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates,'ValuationDate', ValuationDate)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [5x1 double]
Rates: [5x1 double]
EndTimes: [5x1 double]
StartTimes: [5x1 double]
EndDates: [5x1 double]
StartDates: 732313
ValuationDate: 732313
Basis: 0
EndMonthRule: 1
Создайте структуру VolSpec, которая определяет процесс волатильности со следующими данными.
Volatility = [0.005; 0.0055; 0.006; 0.0065; 0.007]; BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Volatility)
BDTVolSpec = struct with fields:
FinObj: 'BDTVolSpec'
ValuationDate: 732313
VolDates: [5x1 double]
VolCurve: [5x1 double]
VolInterpMethod: 'linear'
Структура TimeSpec определяет временную структуру для дерева процентных ставок. Эта структура определяет отображение между временем наблюдения на каждом уровне дерева и соответствующими датами.
Maturity = EndDates; BDTTimeSpec = bdttimespec(ValuationDate, Maturity, Compounding)
BDTTimeSpec = struct with fields:
FinObj: 'BDTTimeSpec'
ValuationDate: 732313
Maturity: [5x1 double]
Compounding: 1
Basis: 0
EndMonthRule: 1
Для создания дерева BDT используйте ранее вычисленные значения для RateSpec, VolSpec и TimeSpec.
BDTTree = bdttree(BDTVolSpec, RateSpec, BDTTimeSpec)
BDTTree = struct with fields:
FinObj: 'BDTFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3 4]
dObs: [732313 732678 733043 733408 733774]
TFwd: {[5x1 double] [4x1 double] [3x1 double] [2x1 double] [4]}
CFlowT: {[5x1 double] [4x1 double] [3x1 double] [2x1 double] [5]}
FwdTree: {1x5 cell}
Визуализируйте эволюцию процентных ставок вдоль дерева путем просмотра структуры вывода BDTTree. BDTTree возвращает обратное дерево скидок, которое можно преобразовать в дерево процентных ставок с помощью cvtree функция.
BDTTreeR = cvtree(BDTTree);
Посмотрите на верхнюю ветвь и нижнюю ветвь дерева:
%Rate at root node:
RateRoot = treepath(BDTTreeR.RateTree, [0]) RateRoot = 0.0275
%Rates along upper branch:
RatePathUp = treepath(BDTTreeR.RateTree, [1 1 1 1]) RatePathUp = 5×1
0.0275
0.0347
0.0460
0.0560
0.0612
%Rates along lower branch:
RatePathDown = treepath(BDTTreeR.RateTree, [2 2 2 2])RatePathDown = 5×1
0.0275
0.0351
0.0472
0.0585
0.0653
Можно также отобразить графическое представление дерева для интерактивного анализа скоростей на узлах дерева до наступления срока годности. Функция treeviewer отображает структуру дерева ставок на левой панели. Визуализация дерева на правой панели пуста, но, выбрав пункт Схема и щелкнув узлы, можно проверить скорости вдоль путей.
treeviewer(BDTTreeR)

Создайте портфель, состоящий из двух облигационных инструментов и опциона на 5% облигацию.
% Bonds CouponRate = [0.04;0.05]; Settle = '01 Jan 2005'; Maturity = ['01 Jan 2009';'01 Jan 2010']; Period = 1; % Option OptSpec = {'call'}; Strike = 98; ExerciseDates = ['01 Jan 2010']; AmericanOpt = 1; InstSet = instadd('Bond',CouponRate, Settle, Maturity, Period); InstSet = instadd(InstSet,'OptBond', 2, OptSpec, Strike, ExerciseDates, AmericanOpt);
Проверьте набор приборов, содержащихся в переменной InstSet.
instdisp(InstSet)
Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face 1 Bond 0.04 01-Jan-2005 01-Jan-2009 1 0 1 NaN NaN NaN NaN 100 2 Bond 0.05 01-Jan-2005 01-Jan-2010 1 0 1 NaN NaN NaN NaN 100 Index Type UnderInd OptSpec Strike ExerciseDates AmericanOpt 3 OptBond 2 call 98 01-Jan-2010 1
Рассчитайте цену каждого инструмента в наборе инструментов.
Price = bdtprice(BDTTree, InstSet)
Price = 3×1
99.6374
102.2460
4.2460
Цены в векторе выпуска Price соответствуют ценам в нулевое время наблюдения (tOb = 0), которое определяется как Дата оценки дерева процентных ставок.
В векторе Price первый элемент 99.6374 представляет цену первого инструмента (4% Bond); второй элемент, 102.2460, представляет цену второго инструмента (5% Облигации), а 4.2460 - цену Опциона.
hedgeopt | hedgeslf | instadd | instaddfield | instdelete | instdisp | instfields | instfind | instget | instgetcell | instlength | instselect | instsetfield | insttypes | intenvset