Цены на инструменты из дерева процентных ставок Hull-White
[
вычисляет бесплатные арбитражные цены на инструменты с помощью дерева процентных ставок, созданного с Price
,PriceTree
] = hwprice(HWTree
,InstSet
)hwtree
. Все инструменты, содержащиеся в переменной финансового инструмента, InstSet
, оценены.
hwprice
обрабатывает типы инструментов: 'Bond'
, 'CashFlow'
, 'OptBond'
, 'OptEmBond'
, 'OptEmBond'
, 'OptFloat'
, 'OptEmFloat'
, 'Fixed'
, 'Float'
, 'Cap'
, 'Floor'
, 'RangeFloat'
, 'Swap'
. Посмотрите instadd
для создания определенных типов.
Загрузите дерево HW и инструменты из файла данных deriv.mat
.
load deriv.mat; HWSubSet = instselect(HWInstSet,'Type', {'Bond', 'Cap'}); instdisp(HWSubSet)
instdisp(HWSubSet) Index Type CouponRate Settle Maturity Period Basis EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate Face Name Quantity 1 Bond 0.04 01-Jan-2004 01-Jan-2007 1 0 1 NaN NaN NaN NaN 100 4% bond 20 2 Bond 0.04 01-Jan-2004 01-Jan-2008 1 0 1 NaN NaN NaN NaN 100 4% bond 15 Index Type Strike Settle Maturity CapReset Basis Principal Name Quantity 3 Cap 0.06 01-Jan-2004 01-Jan-2008 1 0 100 6% Cap 10
Оцените прописную букву и облигационные инструменты.
[Price, PriceTree] = hwprice(HWTree, HWSubSet);
100.9188 99.3296 0.5837
Вы можете использовать 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
Создайте дерево со следующими данными:
VolDates = ['1-Jan-2011'; '1-Jan-2012'; '1-Jan-2013'; '1-Jan-2014']; VolCurve = 0.01; AlphaDates = '01-01-2014'; AlphaCurve = 0.1; HWVolSpec = hwvolspec(RS.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTimeSpec = hwtimespec(RS.ValuationDate, VolDates, Compounding); HWT = hwtree(HWVolSpec, RS, HWTimeSpec)
HWT = struct with fields:
FinObj: 'HWFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734139 734504 734869 735235]
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
Connect: {[2] [2 3 4] [2 3 4 5 6]}
FwdTree: {[1.0350] [1.0677 1.0494 1.0314] [1x5 double] [1x7 double]}
Рассчитать цену ступенчатых купонных облигаций.
PHW = hwprice(HWT, ISet)
PHW = 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
Облигации со встроенной опцией.
ISet = instoptembnd(CouponRate, Settle, Maturity, OptSpec, Strike,... ExerciseDates, 'Period', 1);
Ванильные связи.
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
Создайте дерево со следующими данными:
VolDates = ['1-Jan-2011'; '1-Jan-2012'; '1-Jan-2013'; '1-Jan-2014']; VolCurve = 0.01; AlphaDates = '01-01-2014'; AlphaCurve = 0.1; HWVolSpec = hwvolspec(RS.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTimeSpec = hwtimespec(RS.ValuationDate, VolDates, Compounding); HWT = hwtree(HWVolSpec, RS, HWTimeSpec)
HWT = struct with fields:
FinObj: 'HWFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734139 734504 734869 735235]
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
Connect: {[2] [2 3 4] [2 3 4 5 6]}
FwdTree: {[1.0350] [1.0677 1.0494 1.0314] [1x5 double] [1x7 double]}
Вычислите цену ступенчатых вызываемых облигаций и ступенчатых ванильных облигаций.
PHW = hwprice(HWT, ISet)
PHW = 6×1
100.4089
100.2043
100.0197
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];
Создание 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
Данные для создания дерева следующие:
VolDates = ['1-Jan-2012'; '1-Jan-2013'; '1-Jan-2014';'1-Jan-2015']; VolCurve = 0.01; AlphaDates = '01-01-2015'; AlphaCurve = 0.1; HWVS = hwvolspec(RS.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTS = hwtimespec(RS.ValuationDate, VolDates, Compounding); HWT = hwtree(HWVS, RS, HWTS)
HWT = struct with fields:
FinObj: 'HWFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1 2 3]
dObs: [734504 734869 735235 735600]
CFlowT: {[4x1 double] [3x1 double] [2x1 double] [4]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
Connect: {[2] [2 3 4] [2 3 4 5 6]}
FwdTree: {[1.0350] [1.0677 1.0494 1.0314] [1x5 double] [1x7 double]}
Оцените портфель.
Price = hwprice(HWT, InstSet)
Price = 3×1
99.3327
98.1580
105.5147
hwprice
Использование instswap
чтобы создать своп с плавающей запятой и оценить своп с hwprice
.
RateSpec = intenvset('Rates',.05,'StartDate',today,'EndDate',datemnth(today,60)); IS = instswap([.02 .03],today,datemnth(today,60),[], [], [], [1 1]); VolSpec = hwvolspec(today,datemnth(today,60),.01,datemnth(today,60),.1); TimeSpec = hwtimespec(today,cfdates(today,datemnth(today,60),1)); HWTree = hwtree(VolSpec,RateSpec,TimeSpec); hwprice(HWTree,IS)
ans = -4.3220
hwprice
Использование instswap
чтобы создать несколько свопов и оценить свопы с hwprice
.
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 = hwvolspec(today,datemnth(today,60),.01,datemnth(today,60),.1); TimeSpec = hwtimespec(today,cfdates(today,datemnth(today,60),1)); HWTree = hwtree(VolSpec,RateSpec,TimeSpec); hwprice(HWTree,IS)
ans = 4.3220 -4.3220 -0.2701
HWTree
- Древовидная структура процентной ставкиДревовидная структура процентной ставки, заданная при помощи hwtree
.
Типы данных: struct
InstSet
- Переменная КИПиАПеременная инструмента, содержащая набор NINST
приборы, заданные с помощью instadd
. Инструменты классифицируются по типам; каждый тип может иметь различные поля данных. Сохраненное поле данных является вектором-строкой или вектором символов для каждого инструмента.
Типы данных: struct
Options
- Структура деривативных опционов ценообразования(Необязательно) структура опций калькуляции производных, созданная с помощью derivset
.
Типы данных: struct
Price
- Цена за каждый инструментЦена за каждый инструмент, возвращенная как NINST
-by- 1
вектор. Цены вычисляются путем обратного динамического программирования в дереве процентных ставок. Если инструмент не может быть оценен, NaN
возвращается в эту запись.
Связанными однотипными функциями ценообразования являются:
bondbyhw
: Цена облигации с дерева Халл-Уайт.
capbyhw
: Цена за прописную букву с дерева Халл-Уайт.
cfbyhw
: Цена произвольного набора денежных потоков из дерева Халл-Уайт.
fixedbyhw
: Цена фиксированного тарифа из Hull-White дерева.
floatbyhw
: Цена купюры с плавающей ставкой из дерева Халл-Уайт.
floorbyhw
: Цена этажа из дерева Халл-Уайт.
optbndbyhw
: Цена облигации, опции с дерева Халл-Уайт.
optembndbyhw
: Цена облигации со встроенной опцией с помощью Hull-White дерева.
optfloatbybdt
: Цена купюры с плавающей ставкой с опцией из дерева Халл-Уайт.
optemfloatbybdt
: Цена купюры с плавающей ставкой с встроенной опцией из дерева Халл-Уайт.
rangefloatbyhw
: Ценовая область значений плавающей ноты с использованием Hull-White дерева.
swapbyhw
: Цена своп с дерева Халл-Уайт.
swaptionbyhw
: Цена свопциона с дерева Халл-Уайт.
PriceTree
- Древовидная структура цен на приборыДревовидная структура цен на приборы, возвращенная как MATLAB® структура деревьев, содержащих векторы цен приборов и накопленных процентов, и вектор времени наблюдения для каждого узла. Внутри PriceTree
:
PriceTree.PTree
содержит чистые цены.
PriceTree.AITree
содержит начисленные проценты.
PriceTree.tObs
содержит время наблюдения.
PriceTree.Connect
содержит векторы связности. Каждый элемент массива ячеек описывает, как узлы на этом уровне соединяются с следующим. Для заданного уровня дерева существуют NumNodes
элементы в векторе, и они содержат индекс узла на следующем уровне, с которым соединяется средняя ветвь. Вычитание 1 из этого значения указывает, где соединяется восходящая ветвь, и добавление 1 указывает, где соединяется нисходящая ветвь.
PriceTree.Probs
содержит массивы вероятностей. Каждый элемент массива ячеек содержит вероятности перехода вверх, посередине и вниз для каждого узла уровня.
hwsens
| hwtree
| instadd
| intenvprice
| intenvsens
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.