Цены на инструменты от дерева процентной ставки Хита-Джарроу-Мортона
[ вычисляет цены без арбитражей на инструменты с помощью дерева процентной ставки, созданного с Price,PriceTree] = hjmprice(HJMTree,InstSet)hjmtree. Все инструменты содержатся в переменной финансового инструмента, InstSet, оценены.
hjmprice инструментальные типы указателей: 'Bond', 'CashFlow', 'OptBond', 'OptEmBond', 'OptEmBond', 'OptFloat', 'OptEmFloat', 'Fixed', 'Float'\capпол, 'RangeFloat'подкачка. Смотрите instadd создать заданные типы.
Загрузите дерево HJM и инструменты из файла данных deriv.mat.
load deriv.mat; HJMSubSet = instselect(HJMInstSet,'Type', {'Bond', 'Cap'}); instdisp(HJMSubSet)
Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name Quantity 1 Bond 0.04 01-Jan-2000 01-Jan-2003 1 NaN NaN NaN NaN NaN NaN NaN 4% bond 100 2 Bond 0.04 01-Jan-2000 01-Jan-2004 2 NaN NaN NaN NaN NaN NaN NaN 4% bond 50 Index Type Strike Settle Maturity CapReset Basis Principal Name Quantity 3 Cap 0.03 01-Jan-2000 01-Jan-2004 1 NaN NaN 3% Cap 30
Используйте hjmprice оценивать инструменты.
[Price, PriceTree] = hjmprice(HJMTree, HJMSubSet)
Warning: Not all cash flows are aligned with the tree. Result will be approximated.
> In checktree (line 289)
In hjmprice (line 85)
Price =
98.7159
97.5280
6.2831
PriceTree =
FinObj: 'HJMPriceTree'
PBush: {[3x1 double] [3x1x2 double] [3x2x2 double] [3x4x2 double] [3x8 double]}
AIBush: {[3x1 double] [3x1x2 double] [3x2x2 double] [3x4x2 double] [3x8 double]}
tObs: [0 1 2 3 4]
Можно использовать treeviewer видеть цены на эти три инструмента вдоль ценового дерева.
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;
Создайте RateSpec.
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RS = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [4x1 double]
Rates: [4x1 double]
EndTimes: [4x1 double]
StartTimes: [4x1 double]
EndDates: [4x1 double]
StartDates: 734139
ValuationDate: 734139
Basis: 0
EndMonthRule: 1
Создайте портфель ступенчатых облигаций на предъявителя с различными сроками платежа.
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}}; 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
Создайте дерево со следующими данными:
Volatility = [.2; .19; .18; .17];
CurveTerm = [ 1; 2; 3; 4];
HJMTimeSpec = hjmtimespec(ValuationDate, EndDates);
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec,RS,HJMTimeSpec)HJMT = struct with fields:
FinObj: 'HJMFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734139 734504 734869 735235]
TFwd: {[4x1 double] [3x1 double] [2x1 double] [3]}
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
FwdTree: {[4x1 double] [3x1x2 double] [2x2x2 double] [1x4x2 double]}
Вычислите цену ступенчатых облигаций на предъявителя.
PHJM = hjmprice(HJMT, ISet)
PHJM = 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;
Создайте RateSpec.
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RS = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [4x1 double]
Rates: [4x1 double]
EndTimes: [4x1 double]
StartTimes: [4x1 double]
EndDates: [4x1 double]
StartDates: 734139
ValuationDate: 734139
Basis: 0
EndMonthRule: 1
Создайте инструментальный портфель трех ступенчатых вызываемых связей и трех ступенчатых связей ванили и отобразите инструментальный портфель.
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); 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
Создайте дерево со следующими данными:
Volatility = [.2; .19; .18; .17];
CurveTerm = [ 1; 2; 3; 4];
HJMTimeSpec = hjmtimespec(ValuationDate, EndDates);
HJMVolSpec = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVolSpec,RS,HJMTimeSpec)HJMT = struct with fields:
FinObj: 'HJMFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734139 734504 734869 735235]
TFwd: {[4x1 double] [3x1 double] [2x1 double] [3]}
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
FwdTree: {[4x1 double] [3x1x2 double] [2x2x2 double] [1x4x2 double]}
Оцените инструментальный набор с помощью hjmprice.
PHJM = hjmprice(HJMT, ISet)
PHJM = 6×1
100.3682
100.1557
99.9232
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;
Создайте RateSpec.
RS = intenvset('ValuationDate', ValuationDate, 'StartDates',... StartDates, 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RS = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [4x1 double]
Rates: [4x1 double]
EndTimes: [4x1 double]
StartTimes: [4x1 double]
EndDates: [4x1 double]
StartDates: 734504
ValuationDate: 734504
Basis: 0
EndMonthRule: 1
Создайте инструментальный портфель с двумя примечаниями области значений и долговое обязательство с плавающей ставкой со следующими данными и отобразите результаты:
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 an 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
Данные, чтобы создать дерево следующие:
Volatility = [.2; .19; .18; .17];
CurveTerm = [ 1; 2; 3; 4];
MaTree = {'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'; 'Jan-1-2015'};
HJMTS = hjmtimespec(ValuationDate, MaTree);
HJMVS = hjmvolspec('Proportional', Volatility, CurveTerm, 1e6);
HJMT = hjmtree(HJMVS, RS, HJMTS)HJMT = struct with fields:
FinObj: 'HJMFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734504 734869 735235 735600]
TFwd: {[4x1 double] [3x1 double] [2x1 double] [3]}
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
FwdTree: {[4x1 double] [3x1x2 double] [2x2x2 double] [1x4x2 double]}
Оцените портфель.
Price = hjmprice(HJMT, InstSet)
Price = 3×1
91.1555
90.6656
105.5147
hjmpriceИспользуйте instswap создать подкачку плавающую плавающую и оценить подкачку с hjmprice.
RateSpec = intenvset('Rates',.05,'StartDate',today,'EndDate',datemnth(today,60)); IS = instswap([.02 .03],today,datemnth(today,60),[], [], [], [1 1]); VolSpec = hjmvolspec('Constant', .2); TimeSpec = hjmtimespec(today,cfdates(today,datemnth(today,60),1)); HJMTree = hjmtree(VolSpec,RateSpec,TimeSpec); hjmprice(HJMTree,IS)
ans = -4.3220
hjmpriceИспользуйте instswap создать несколько подкачек и оценить подкачки с hjmprice.
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 = hjmvolspec('Constant', .2); TimeSpec = hjmtimespec(today,cfdates(today,datemnth(today,60),1)); HJMTree = hjmtree(VolSpec,RateSpec,TimeSpec); hjmprice(HJMTree,IS)
ans = 3×1
4.3220
-4.3220
-0.2701
HJMTree — Древовидная структура процентной ставкиДревовидная структура процентной ставки, заданная при помощи hjmtree.
Типы данных: struct
InstSet — Переменная InstrumentПеременная Instrument, содержащая набор NINST инструменты, заданное использование instadd. Инструменты категоризированы типом; каждый тип может иметь различные поля данных. Сохраненное поле данных является вектором-строкой или вектором символов для каждого инструмента.
Типы данных: struct
Options — Производные оценивая структуру опций(Необязательно) Производные оценивая структуру опций, созданное использование derivset.
Типы данных: struct
Price — Цена за каждый инструментЦена за каждый инструмент, возвращенный как NINST- 1 вектор. Цены вычисляются обратным динамическим программированием на дереве процентной ставки. Если инструмент не может быть оценен, NaN возвращен в той записи.
Связанные функции оценки одно типа:
bondbyhjm — Оцените связь от дерева HJM.
capbyhjm — Оцените дно от дерева HJM.
cfbyhjm — Оцените произвольный набор потоков наличности от дерева HJM.
fixedbyhjm — Оцените примечание с фиксированной процентной ставкой от дерева HJM.
floatbyhjm — Оцените долговое обязательство с плавающей ставкой от дерева HJM.
floorbyhjm — Оцените пол от дерева HJM.
optbndbyhjm — Оцените опцию связи от дерева HJM.
optembndbyhjm — Оцените связь со встроенной опцией деревом HJM.
optfloatbybdt — Оцените долговое обязательство с плавающей ставкой с опцией от дерева HJM.
optemfloatbybdt — Оцените долговое обязательство с плавающей ставкой со встроенной опцией от дерева HJM.
rangefloatbyhjm — Диапазон цен, плавающий примечание с помощью дерева HJM.
swapbyhjm — Оцените подкачку от дерева HJM.
swaptionbyhjm — Оцените swaption от дерева HJM.
PriceTree — Древовидная структура цен на инструментыДревовидная структура цен на инструменты, возвращенных как структура MATLAB® деревьев, содержащих векторы цен на инструменты и начисленных процентов, и вектор времен наблюдения для каждого узла. В PriceTree:
PriceTree.PTree содержит чистые цены.
PriceTree.AITree содержит начисленные проценты.
PriceTree.tObs содержит времена наблюдения.
hjmsens | hjmtree | hjmvolspec | instadd | intenvprice | intenvsens
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.