Цены на инструменты от дерева процентной ставки Black-Derman-Toy
[
вычисляет цены без арбитражей на инструменты с помощью дерева процентной ставки, созданного с Price
,PriceTree
] = bdtprice(BDTTree
,InstSet
)bdttree
. Все инструменты содержатся в переменной финансового инструмента, InstSet
, оценены.
bdtprice
инструментальные типы указателей: 'Bond'
, 'CashFlow'
, 'OptBond'
, 'OptEmBond'
, 'OptFloat'
, 'OptEmFloat'
, 'Fixed'
, 'Float'
\cap
пол
, 'RangeFloat'
подкачка
. Смотрите instadd
создать заданные типы.
Загрузите дерево BDT и инструменты из файла данных deriv.mat
оценивать дно и инструменты связи, содержавшиеся в инструментальном наборе.
load deriv.mat; BDTSubSet = instselect(BDTInstSet,'Type', {'Bond', 'Cap'}); instdisp(BDTSubSet)
instdisp(BDTSubSet) Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name Quantity 1 Bond 0.1 01-Jan-2000 01-Jan-2003 1 NaN NaN NaN NaN NaN NaN NaN 10% Bond 100 2 Bond 0.1 01-Jan-2000 01-Jan-2004 2 NaN NaN NaN NaN NaN NaN NaN 10% Bond 50 Index Type Strike Settle Maturity CapReset Basis Principal Name Quantity 3 Cap 0.15 01-Jan-2000 01-Jan-2004 1 NaN NaN 15% Cap 30
Оцените связь и дно.
[Price, PriceTree] = bdtprice(BDTTree, BDTSubSet)
Warning: Not all cash flows are aligned with the tree. Result will be approximated. > In checktree at 289 In bdtprice at 85 Price = 95.5030 93.9079 1.4375 PriceTree = FinObj: 'BDTPriceTree' PTree: {[3x1 double] [3x2 double] [3x3 double] [3x4 double] [3x4 double]} AITree: {[3x1 double] [3x2 double] [3x3 double] [3x4 double] [3x4 double]} tObs: [0 1 2 3 4]
Можно использовать treeviewer
функция, чтобы видеть цены на эти три инструмента вдоль ценового дерева.
Оцените следующие мультиступенчатые облигации на предъявителя с помощью следующих данных:
Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2010'; StartDates = ValuationDate; EndDates = {'Jan-1-2011'; 'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'}; Compounding = 1; % Create RateSpec RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding); % Create a portfolio of stepped coupon bonds with different maturities Settle = '01-Jan-2010'; Maturity = {'01-Jan-2011';'01-Jan-2012';'01-Jan-2013';'01-Jan-2014'}; CouponRate = {{'01-Jan-2011' .042;'01-Jan-2012' .05; '01-Jan-2013' .06; '01-Jan-2014' .07}}; % Display the instrument portfolio ISet = instbond(CouponRate, Settle, Maturity, 1); instdisp(ISet)
Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face 1 Bond [Cell] 01-Jan-2010 01-Jan-2011 1 0 1 NaN NaN NaN NaN 100 2 Bond [Cell] 01-Jan-2010 01-Jan-2012 1 0 1 NaN NaN NaN NaN 100 3 Bond [Cell] 01-Jan-2010 01-Jan-2013 1 0 1 NaN NaN NaN NaN 100 4 Bond [Cell] 01-Jan-2010 01-Jan-2014 1 0 1 NaN NaN NaN NaN 100
Создайте BDTTree
оценивать ступенчатые облигации на предъявителя. Примите энергозависимость, чтобы быть 10%
Sigma = 0.1;
BDTTimeSpec = bdttimespec(ValuationDate, EndDates, Compounding);
BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))');
BDTT = bdttree(BDTVolSpec, RS, BDTTimeSpec);
% Compute the price of the stepped coupon bonds
PBDT = bdtprice(BDTT, ISet)
PBDT = 4×1
100.6763
100.7368
100.9266
101.0115
Оцените портфель ступенчатых вызываемых связей, и продвинулся связи ванили с помощью следующих данных: данные для структуры термина процентной ставки следующие:
Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2010'; StartDates = ValuationDate; EndDates = {'Jan-1-2011'; 'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'}; Compounding = 1; %Create RateSpec RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding); % Create an instrument portfolio of 3 stepped callable bonds and three % stepped vanilla bonds Settle = '01-Jan-2010'; Maturity = {'01-Jan-2012';'01-Jan-2013';'01-Jan-2014'}; CouponRate = {{'01-Jan-2011' .042;'01-Jan-2012' .05; '01-Jan-2013' .06; '01-Jan-2014' .07}}; OptSpec='call'; Strike=100; ExerciseDates='01-Jan-2011'; %Callable in one year % Bonds with embedded option ISet = instoptembnd(CouponRate, Settle, Maturity, OptSpec, Strike,... ExerciseDates, 'Period', 1); % Vanilla bonds ISet = instbond(ISet, CouponRate, Settle, Maturity, 1); % Display the instrument portfolio instdisp(ISet)
Index Type CouponRate Settle Maturity OptSpec Strike ExerciseDates Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face AmericanOpt 1 OptEmBond [Cell] 01-Jan-2010 01-Jan-2012 call 100 01-Jan-2011 1 0 1 NaN NaN NaN NaN 100 0 2 OptEmBond [Cell] 01-Jan-2010 01-Jan-2013 call 100 01-Jan-2011 1 0 1 NaN NaN NaN NaN 100 0 3 OptEmBond [Cell] 01-Jan-2010 01-Jan-2014 call 100 01-Jan-2011 1 0 1 NaN NaN NaN NaN 100 0 Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face 4 Bond [Cell] 01-Jan-2010 01-Jan-2012 1 0 1 NaN NaN NaN NaN 100 5 Bond [Cell] 01-Jan-2010 01-Jan-2013 1 0 1 NaN NaN NaN NaN 100 6 Bond [Cell] 01-Jan-2010 01-Jan-2014 1 0 1 NaN NaN NaN NaN 100
Создайте BDTTree
и цена инструменты. Сборка дерево Принимает энергозависимость, чтобы быть 10%
Sigma = 0.1; BDTTimeSpec = bdttimespec(ValuationDate, EndDates, Compounding); BDTVolSpec = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))'); BDTT = bdttree(BDTVolSpec, RS, BDTTimeSpec); %The first three rows corresponds to the price of the stepped callable bonds and the %last three rows corresponds to the price of the stepped vanilla bonds. PBDT = bdtprice(BDTT, ISet)
PBDT = 6×1
100.4799
100.3228
100.0840
100.7368
100.9266
101.0115
Вычислите цену портфеля с примечаниями области значений и долговым обязательством с плавающей ставкой с помощью следующих данных: данные для структуры термина процентной ставки следующие:
Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2011'; StartDates = ValuationDate; EndDates = {'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'; 'Jan-1-2015'}; Compounding = 1; % Create RateSpec RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding); % Create an instrument portfolio with two range notes and a floating rate % note with the following data: Spread = 200; Settle = 'Jan-1-2011'; Maturity = 'Jan-1-2014'; % First Range Note: RateSched(1).Dates = {'Jan-1-2012'; 'Jan-1-2013' ; 'Jan-1-2014'}; RateSched(1).Rates = [0.045 0.055; 0.0525 0.0675; 0.06 0.08]; % Second Range Note: RateSched(2).Dates = {'Jan-1-2012'; 'Jan-1-2013' ; 'Jan-1-2014'}; RateSched(2).Rates = [0.048 0.059; 0.055 0.068 ; 0.07 0.09]; % Create InstSet InstSet = instadd('RangeFloat', Spread, Settle, Maturity, RateSched); % Add a floating-rate note InstSet = instadd(InstSet, 'Float', Spread, Settle, Maturity); % Display the portfolio instrument instdisp(InstSet)
Index Type Spread Settle Maturity RateSched FloatReset Basis Principal EndMonthRule 1 RangeFloat 200 01-Jan-2011 01-Jan-2014 [Struct] 1 0 100 1 2 RangeFloat 200 01-Jan-2011 01-Jan-2014 [Struct] 1 0 100 1 Index Type Spread Settle Maturity FloatReset Basis Principal EndMonthRule CapRate FloorRate 3 Float 200 01-Jan-2011 01-Jan-2014 1 0 100 1 Inf -Inf
Создайте BDTTree
и цена инструменты. Сборка дерево Принимает энергозависимость, чтобы быть 10%.
Sigma = 0.1;
BDTTS = bdttimespec(ValuationDate, EndDates, Compounding);
BDTVS = bdtvolspec(ValuationDate, EndDates, Sigma*ones(1, length(EndDates))');
BDTT = bdttree(BDTVS, RS, BDTTS);
% Price the portfolio
Price = bdtprice(BDTT, InstSet)
Price = 3×1
100.2841
98.0757
105.5147
bdtprice
Используйте instswap
создать подкачку плавающую плавающую и оценить подкачку с bdtprice
.
RateSpec = intenvset('Rates',.05,'StartDate',today,'EndDate',datemnth(today,60)); IS = instswap([.02 .03],today,datemnth(today,60),[], [], [], [1 1]); VolSpec = bdtvolspec(today,datemnth(today,[10 60]),[.01 .02]); TimeSpec = bdttimespec(today,cfdates(today,datemnth(today,60),1)); BDTTree = bdttree(VolSpec,RateSpec,TimeSpec); bdtprice(BDTTree,IS)
ans = -4.3220
bdtprice
Используйте instswap
создать несколько подкачек и оценить подкачки с bdtprice
.
RateSpec = intenvset('Rates',.05,'StartDate',today,'EndDate',datemnth(today,60)); IS = instswap([.03 .02],today,datemnth(today,60),[], [], [], [1 1]); IS = instswap(IS,[200 300],today,datemnth(today,60),[], [], [], [0 0]); IS = instswap(IS,[.08 300],today,datemnth(today,60),[], [], [], [1 0]); VolSpec = bdtvolspec(today,datemnth(today,[10 60]),[.01 .02]); TimeSpec = bdttimespec(today,cfdates(today,datemnth(today,60),1)); BDTTree = bdttree(VolSpec,RateSpec,TimeSpec); bdtprice(BDTTree,IS)
ans = 4.3220 -4.3220 -0.2701
BDTTree
— Древовидная структура процентной ставкиДревовидная структура процентной ставки, заданная при помощи bdttree
.
Типы данных: struct
InstSet
— Переменная InstrumentПеременная Instrument, содержащая набор NINST
инструменты, заданное использование instadd
. Инструменты категоризированы типом; каждый тип может иметь различные поля данных. Сохраненное поле данных является вектором-строкой или вектором символов для каждого инструмента.
Типы данных: struct
Options
— Производные оценивая структуру опций(Необязательно) Производные оценивая структуру опций, созданное использование derivset
.
Типы данных: struct
Price
— Цена за каждый инструмент во время 0Цена за каждый инструмент во время 0, возвращенный как NINST
- 1
вектор. Цены вычисляются обратным динамическим программированием на дереве процентной ставки. Если инструмент не может быть оценен, NaN
возвращен в той записи.
Связанные функции оценки одно типа:
bondbybdt
— Оцените связь от дерева BDT.
capbybdt
— Оцените дно от дерева BDT.
cfbybdt
— Оцените произвольный набор потоков наличности от дерева BDT.
fixedbybdt
— Оцените примечание с фиксированной процентной ставкой от дерева BDT.
floatbybdt
— Оцените долговое обязательство с плавающей ставкой от дерева BDT.
floorbybdt
— Оцените пол от дерева BDT.
optbndbybdt
— Оцените опцию связи от дерева BDT.
optfloatbybdt
— Оцените долговое обязательство с плавающей ставкой с опцией от дерева BDT.
optemfloatbybdt
— Оцените долговое обязательство с плавающей ставкой со встроенной опцией от дерева BDT.
optembndbybdt
— Оцените связь со встроенной опцией деревом BDT.
rangefloatbybdt
— Диапазон цен, плавающий примечание с помощью дерева BDT.
swapbybdt
— Оцените подкачку от дерева BDT.
swaptionbybdt
— Оцените swaption от дерева BDT.
PriceTree
— Древовидная структура цен на инструментыДревовидная структура цен на инструменты, возвращенных как структура MATLAB® деревьев, содержащих векторы цен на инструменты и начисленных процентов, и вектор времен наблюдения для каждого узла. В PriceTree
:
PriceTree.PTree
содержит чистые цены.
PriceTree.AITree
содержит начисленные проценты.
PriceTree.tObs
содержит времена наблюдения.
bdtsens
| bdttree
| instadd
| intenvprice
| intenvsens
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.