exponenta event banner

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

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

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

Ниже перечислены приборы и их функции-конструкторы.

Инструмент

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

Азиатский вариант

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 

Поиск или подстановка портфеля

Инструментарий финансовых инструментов предоставляет следующие функции:

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

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

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

См. также

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

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

Подробнее