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

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

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

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

Инструмент

Конструктор

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

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, Data и полях данных Type инструментального набора. FieldList является массивом ячеек имен полей, характерных для инструментов. DataList является массивом ячеек или матрицей приемлемых значений для одного или нескольких параметров, заданных в FieldList. FieldName и Data (поэтому, FieldList и DataList) параметры должны появиться вместе или нисколько.

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

IndexMatch является вектором положений инструментов, совпадающих с входными критериями. Инструменты возвращены в IndexMatch, если всему FieldName, Data, 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, чтобы определить местоположение определенных инструментов в этом инструментальном наборе.

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

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

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

Больше о

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