Конструкция КИПиА и управление портфелем с использованием функций

Конструкторы КИПиА

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

Инструменты и их функции конструктора перечислены ниже.

Инструмент

Функция конструктора

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

instasian

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

instbarrier

Связь

instbond

Опция облигации

instoptbnd

Произвольный денежный поток

instcf

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

instcompound

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

instcbond

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

instfixed

Примечание с плавающей скоростью

instfloat

Прописная буква

instcap

Пол

instfloor

Опция поиска

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 инструменты, классифицированные по типам, каждый тип может иметь различные поля данных. Сохраненное поле данных является вектором-строкой или вектором символов для каждого инструмента.

The 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 для определения местоположения конкретных приборов в данном наборе приборов.

См. также

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

Похожие примеры

Подробнее о