Этот пример иллюстрирует, как Financial Instruments 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
Используйте ранее вычисленные значения в RateSpec, VolSpec и TimeSpec, чтобы создать дерево BDT.
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}
Визуализируйте эволюцию процентной ставки вдоль дерева путем рассмотрения структуры output 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 отображает структуру дерева уровня на левой панели. Древовидная визуализация на правой панели является пробелом, но путем выбора Diagram и нажатия на узлы можно исследовать уровни вдоль путей.
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
соответствуйте ценам в начальный момент времени наблюдения (tObs = 0), который задан как Дата Оценки дерева процентной ставки.
В Ценовом векторе первый элемент, 99.6374, представляет цену первого инструмента (4%-я Связь); второй элемент, 102.2460, представляет цену второго инструмента (5%-я Связь), и 4.2460 представляет цену Опции.