Инструментальная конструкция и управление портфелем

Инструментальные конструкторы

Тулбокс предоставляет конструкторам для наиболее распространенных финансовых инструментов. Конструктор является функцией, которая создает структуру, выделенную определенному типу объекта; в этом тулбоксе объект является типом инструмента рынка.

Инструменты и их конструкторы в этом тулбоксе описаны ниже.

Инструмент

Конструктор

Азиатская опция

instasian

Барьерный опцион

instbarrier

Связь

instbond

Опция связи

instoptbnd

Произвольный поток наличности

instcf

Составная опция

instcompound

Конвертируемая облигация

instcbond

Примечание с фиксированной процентной ставкой

instfixed

Долговое обязательство с плавающей ставкой

instfloat

\cap

instcap

Пол

instfloor

Опция Lookback

instlookback

Фондовый опцион

instoptstock

Подкачка

instswap

Swaption

instswaption

Каждый инструмент имеет параметры (поля), которые описывают инструмент. Функции тулбокса позволяют вам сделать следующее:

  • Создайте инструмент или портфель инструментов.

  • Перечислите сохраненные инструментальные типы и информационные поля.

  • Перечислите инструментальные полевые данные.

  • Поисковые и избранные инструменты.

Инструментальная структура состоит из различных полей согласно инструментальному типу. Поле является элементом данных, сопоставленным с инструментом. Например, инструмент связи содержит поля: CouponRate, Settle, Maturity. Кроме того, каждый инструмент имеет поле, которое идентифицирует инвестиционный тип (связь, дно, пол, и так далее).

В действительности набор параметров для каждого инструмента не фиксируется. У вас есть способность добавить дополнительные параметры. Эти дополнительные поля проигнорированы функциями тулбокса. Они могут использоваться, чтобы присоединить дополнительную информацию к каждому инструменту, такому как внутренний код, описывающий связь.

Параметры, не заданные при создании инструментального значения по умолчанию к NaN, который, в целом, означает что функции с помощью инструментального набора (такие как intenvprice или hjmprice) будет использовать значения по умолчанию. Во время оценки происходит ошибка, если какое-либо из обязательных полей отсутствует, такие как Strike в дне или CouponRate в связи.

Создание инструментов или свойств

Используйте instaddfield функция, чтобы создать своего рода инструмент или добавить новые свойства в инструменты в существующем инструментальном наборе.

Создать своего рода инструмент с instaddfield, необходимо задать три аргумента:

  • Type

  • FieldName

  • Data

Type задает тип нового инструмента, например, Future. FieldName называет поля исключительно сопоставленными с новым типом инструмента. Data содержит данные для полей нового инструмента.

Дополнительным четвертым аргументом является ClassList. ClassList задает типы данных содержимого каждого уникального поля для нового инструмента.

Используйте любой синтаксис, чтобы создать своего рода инструмент с помощью instaddfield:

InstSet = instaddfield('FieldName', FieldList, 'Data', DataList,...
'Type', TypeString)
InstSet = instaddfield('FieldName', FieldList, 'FieldClass',...
ClassList, 'Data' , DataList, 'Type', TypeString)

Чтобы добавить новые инструменты в существующий набор, используйте:

InstSetNew = instaddfield(InstSetOld, 'FieldName', FieldList,...
'Data', DataList, 'Type', TypeString)

Как пример, рассмотрите фьючерсный контракт с датой поставки от 15 июля 2000 и указанную цену 104,40$. Поскольку программное обеспечение Financial Instruments Toolbox™ непосредственно не поддерживает этот инструмент, необходимо создать его с помощью функционального instaddfield. Используйте эти параметры, чтобы создать инструменты:

  • Ввод: Future

  • Имена полей: Delivery и Price

  • Данные: Доставка 15 июля 2000, и цена составляет 104,40$.

Введите данные в MATLAB:

Type = 'Future';
FieldName = {'Delivery', 'Price'};
Data = {'Jul-15-2000', 104.4};

Наконец, создайте портфель с одним инструментом:

Port = instaddfield('Type', Type, 'FieldName', FieldName,... 
'Data', Data);

Теперь используйте функциональный instdisp исследовать получившийся портфель одно инструмента:

instdisp(Port)

Index Type   Delivery    Price
1     Future Jul-15-2000 104.4

Поскольку ваш портфель Port имеет ту же структуру как те созданное использование функционального instadd, можно объединить портфели, созданные с помощью instadd с портфелями, созданными с помощью instaddfield. Например, можно теперь добавить два инструмента дна в Port с instadd.

Strike = [0.06; 0.07];
Settle = '08-Feb-2000';
Maturity = '15-Jan-2003';
 
Port = instadd(Port, 'Cap', Strike, Settle, Maturity);

Просмотрите получившийся портфель с помощью instdisp.

instdisp(Port)

Index   Type   Delivery      Price
1       Future 15-Jul-2000   104.4
 
Index Type Strike Settle      Maturity    CapReset  Basis Principal
2     Cap  0.06   08-Feb-2000 15-Jan-2003 1         0     100 
3     Cap  0.07   08-Feb-2000 15-Jan-2003 1         0     100 

Поиск или подмножество портфель

Financial Instruments Toolbox обеспечивает функции, которые включают вам к:

  • Найдите определенные инструменты в портфеле.

  • Создайте портфель подмножества, состоящий из инструментов, выбранных из большего портфеля.

instfind функция находит инструменты с определенным значением параметров; это возвращает индекс КИП (положение) в большом инструментальном наборе. instselect функция, с другой стороны, подмножества большой инструмент установлена в портфель инструментов с обозначенными значениями параметров; это возвращает инструментальный набор (портфель), а не индекс.

instfind

Общий синтаксис для instfind

IndexMatch = instfind(InstSet, 'FieldName', FieldList, 'Data',...
DataList, 'Index', IndexSet, 'Type', TypeList)

InstSet инструмент собирается искать. В InstSet инструменты, категоризированные типом, каждый тип может иметь различные поля данных. Сохраненное поле данных является вектором-строкой или вектором символов для каждого инструмента.

FieldList, DataList, и TypeList аргументы указывают на значения, чтобы искать в FieldNameданные, и Type поля данных инструмента установлены. FieldList массив ячеек имен полей, характерных для инструментов. DataList массив ячеек или матрица приемлемых значений для одного или нескольких параметров, заданных в FieldList. FieldName и Data (поэтому, FieldList и DataList) параметры должны появиться вместе или нисколько.

IndexSet вектор целочисленных индексов, определяющих положения инструментов в инструментальном наборе проверять на соответствия; значением по умолчанию являются все индексы, доступные в инструментальном наборе. TypeList вектор символов или инструменты ограничения массива ячеек из символьных векторов, чтобы совпадать с одним из TypeList типы; значением по умолчанию являются все типы в инструментальном наборе.

IndexMatch вектор положений инструментов, совпадающих с входными критериями. Инструменты возвращены в IndexMatch если весь FieldNameданные, Index, и Type условия соблюдают. Инструмент удовлетворяет отдельному полевому условию если сохраненный FieldName данные совпадают с любой из строк, перечисленных в DataList для того FieldName.

instfind Примеры.  Примеры используют обеспеченный MAT-файл deriv.mat.

MAT-файл содержит инструментальный набор, HJMInstSet, это содержит восемь инструментов семи типов.

load deriv.mat
instdisp(HJMInstSet)
Index Type CouponRate Settle       Maturity     Period Basis ...  Name      Quantity
1    Bond 0.04       01-Jan-2000  01-Jan-2003    1     NaN   ... 4% bond     100 
2    Bond 0.04       01-Jan-2000  01-Jan-2004    2     NaN   ... 4% bond      50 

Index Type    UnderInd OptSpec Strike ExerciseDates  AmericanOpt Name        Quantity
3     OptBond 2        call    101    01-Jan-2003    NaN         Option 101   -50     
 
Index Type  CouponRate Settle      Maturity     FixedReset Basis Principal Name     Quantity
4     Fixed 0.04       01-Jan-2000 01-Jan-2003    1        NaN    NaN     4% Fixed   80 
 
Index Type  Spread Settle      Maturity   FloatReset  Basis Principal Name        Quantity
5     Float 20     01-Jan-2000 01-Jan-2003 1           NaN   NaN       20BP Float   8  
 
Index Type Strike Settle         Maturity      CapReset Basis Principal Name     Quantity
6     Cap  0.03   01-Jan-2000    01-Jan-2004    1        NaN   NaN       3% Cap   30  
 
Index Type  Strike Settle      Maturity     FloorReset Basis Principal Name       Quantity
7     Floor 0.03 01-Jan-2000 01-Jan-2004    1          NaN   NaN         3% Floor   40 
 
Index Type LegRate   Settle     Maturity     LegReset Basis Principal LegType  Name   Quantity

8     Swap [0.06 20] 01-Jan-2000  01-Jan-2003  [1  1]   NaN   NaN     [NaN]  6%/20BP Swap  10

Найдите все инструменты с датой погашения от 01 января 2003.

Mat2003 = ... 
instfind(HJMInstSet,'FieldName','Maturity','Data','01-Jan-2003')
Mat2003 =

     1
     4
     5
     8

Найдите все дно и инструменты пола с датой погашения от 01 января 2004.

CapFloor = instfind(HJMInstSet,... 
'FieldName','Maturity','Data','01-Jan-2004', 'Type',... 
{'Cap';'Floor'})
CapFloor =

     6
     7

Найдите все инструменты, где портфель длинен, или закоротите количество 50.

Pos50 = instfind(HJMInstSet,'FieldName',... 
'Quantity','Data',{'50';'-50'})
Pos50 =

     2
     3

instselect

Синтаксис для instselect тот же синтаксис что касается instfind. instselect возвращает полный портфель вместо индексов в исходный портфель. Сравните значения, возвращенные обеими функциями путем вызова их эквивалентно.

Ранее вы использовали instfind найти все инструменты в HJMInstSet с датой погашения от 01 января 2003.

Mat2003 = ... 
instfind(HJMInstSet,'FieldName','Maturity','Data','01-Jan-2003')
Mat2003 =

     1
     4
     5
     8

Теперь используйте тот же инструментальный набор в качестве начальной точки, но выполните instselect функция вместо этого, чтобы произвести новый инструментальный набор, совпадающий с идентичными критериями поиска.

Select2003 = ... 
instselect(HJMInstSet,'FieldName','Maturity','Data',... 
'01-Jan-2003')

instdisp(Select2003)
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     
 
Index Type  CouponRate Settle         Maturity       FixedReset Basis Principal Name     Quantity
2     Fixed 0.04       01-Jan-2000    01-Jan-2003    1          NaN   NaN       4% Fixed 80      
 
Index Type  Spread Settle         Maturity       FloatReset Basis Principal Name       Quantity
3     Float 20     01-Jan-2000    01-Jan-2003    1          NaN   NaN       20BP Float 8       
 
Index Type LegRate    Settle         Maturity       LegReset Basis Principal LegType Name         Quantity
4     Swap [0.06  20] 01-Jan-2000    01-Jan-2003    [1  1]   NaN   NaN       [NaN]   6%/20BP Swap 10      

instselect Примеры.  Эти примеры используют портфель ExampleInst предоставленный MAT-файл InstSetExamples.mat.

load InstSetExamples.mat
instdisp(ExampleInst)
Index Type   Strike Price Opt  Contracts
1     Option  95    12.2  Call     0    
2     Option 100     9.2  Call     0    
3     Option 105     6.8  Call  1000    
 
Index Type    Delivery       F     Contracts
4     Futures 01-Jul-1999    104.4 -1000    
 
Index Type   Strike Price Opt  Contracts
5     Option 105     7.4  Put  -1000    
6     Option  95     2.9  Put      0    
 
Index Type  Price Maturity       Contracts
7     TBill 99    01-Jul-1999    6        

Инструментальный набор содержит три инструментальных типа: Option, Futures, и TBill. Используйте instselect сделать новый инструментальный набор, содержащий только опции, нанесло удар по 95. Другими словами, выберите все инструменты, содержащие поле Strike и со значением данных для того поля равняются 95.

InstSet = instselect(ExampleInst,'FieldName','Strike','Data',95);

instdisp(InstSet)
Index Type   Strike Price Opt  Contracts
1     Option  95    12.2  Call     0    
2     Option  95     2.9  Put      0    

Можно использовать все различные формы instselect и instfind определять местоположение определенных инструментов в этом инструментальном наборе.

Смотрите также

| | | | | | | | | | | | | |

Связанные примеры

Больше о

Для просмотра документации необходимо авторизоваться на сайте