hwprice

Цены на инструменты от Белого как оболочка дерева процентной ставки

Синтаксис

[Price,PriceTree] = hwprice(HWTree,InstSet)
[Price,PriceTree] = hwprice(___,Options)

Описание

пример

[Price,PriceTree] = hwprice(HWTree,InstSet) вычисляет цены без арбитражей на инструменты с помощью дерева процентной ставки, созданного с hwtree. Оценены все инструменты, содержавшиеся в переменной финансового инструмента, InstSet.

hwprice обрабатывает инструментальные типы: 'Bond', 'CashFlow', 'OptBond', 'OptEmBond', 'OptEmBond', 'OptFloat', 'OptEmFloat', 'Fixed', 'Float', 'Cap', 'Floor', 'RangeFloat', 'Swap'. Смотрите instadd, чтобы создать заданные типы.

пример

[Price,PriceTree] = hwprice(___,Options) добавляет дополнительный входной параметр для Options.

Примеры

свернуть все

Загрузите дерево 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

Используйте 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

Используйте 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.

Типы данных: struct

Переменная Instrument, содержащая набор инструментов NINST, заданное использование instadd. Инструменты категоризированы типом; каждый тип может иметь различные поля данных. Сохраненное поле данных является вектором - строкой или вектором символов для каждого инструмента.

Типы данных: struct

(Необязательно) Производные оценивая структуру опций, созданное использование derivset.

Типы данных: struct

Выходные аргументы

свернуть все

Цена за каждый инструмент, возвращенный как NINST-by-1 вектор. Цены вычисляются обратным динамическим программированием на дереве процентной ставки. Если инструмент не может быть оценен, NaN возвращен в той записи.

Связанные функции оценки одно типа:

  • bondbyhw: Оцените связь от Белого как оболочка дерева.

  • capbyhw: Оцените прописную букву от Белого как оболочка дерева.

  • cfbyhw: Оцените произвольный набор потоков наличности от Белого как оболочка дерева.

  • fixedbyhw: Оцените примечание с фиксированной процентной ставкой от Белого как оболочка дерева.

  • floatbyhw: Оцените долговое обязательство с плавающей ставкой от Белого как оболочка дерева.

  • floorbyhw: Оцените пол от Белого как оболочка дерева.

  • optbndbyhw: Оцените опцию связи от Белого как оболочка дерева.

  • optembndbyhw: Оцените связь со встроенной опцией Белым как оболочка деревом.

  • optfloatbybdt: Оцените долговое обязательство с плавающей ставкой с опцией от Белого как оболочка дерева.

  • optemfloatbybdt: Оцените долговое обязательство с плавающей ставкой со встроенной опцией от Белого как оболочка дерева.

  • rangefloatbyhw: Диапазон цен, плавающий примечание с помощью Белого как оболочка дерева.

  • swapbyhw: Оцените подкачку от Белого как оболочка дерева.

  • swaptionbyhw: Оцените swaption от Белого как оболочка дерева.

Древовидная структура цен на инструменты, возвращенных как структура MATLAB® деревьев, содержащих векторы цен на инструменты и начисленных процентов, и вектор времен наблюдения для каждого узла. В PriceTree:

  • PriceTree.PTree содержит чистые цены.

  • PriceTree.AITree содержит начисленные проценты.

  • PriceTree.tObs содержит времена наблюдения.

  • PriceTree.Connect содержит векторы возможности соединения. Каждый элемент в массиве ячеек описывает, как узлы на том уровне соединяются со следующим. Для данного древовидного уровня в векторе существуют элементы NumNodes, и они содержат индекс узла на следующем уровне, с которым соединяется среднее ответвление. Вычитание 1 от того значения указывает, где подключения-ответвления к, и добавление 1 указали, где вниз переходят подключения к.

  • PriceTree.Probs содержит массивы вероятности. Каждый элемент массива ячеек содержит, середина и вероятности перехода вниз для каждого узла уровня.

Представлено до R2006a