Тулбокс предоставляет конструкторам для наиболее распространенных финансовых инструментов. Конструктор является функцией, которая создает структуру, выделенную определенному типу объекта; в этом тулбоксе объект является типом инструмента рынка.
Инструменты и их конструкторы в этом тулбоксе описаны ниже.
Инструмент | Конструктор |
|---|---|
Азиатская опция | |
Барьерный опцион | |
Связь | |
Опция связи | |
Произвольный поток наличности | |
Составная опция | |
Конвертируемая облигация | |
Примечание с фиксированной процентной ставкой | |
Долговое обязательство с плавающей ставкой | |
\cap | |
Пол | |
Опция Lookback | |
Фондовый опцион | |
Подкачка | |
Swaption |
Каждый инструмент имеет параметры (поля), которые описывают инструмент. Функции тулбокса позволяют вам сделать следующее:
Создайте инструмент или портфель инструментов.
Перечислите сохраненные инструментальные типы и информационные поля.
Перечислите инструментальные полевые данные.
Поисковые и избранные инструменты.
Инструментальная структура состоит из различных полей согласно инструментальному типу. Поле является элементом данных, сопоставленным с инструментом. Например, инструмент связи содержит поля: 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
3instselectСинтаксис для 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, чтобы определить местоположение определенных инструментов в этом инструментальном наборе.
hedgeopt | hedgeslf | instadd | instaddfield | instdelete | instdisp | instfields | instfind | instget | instgetcell | instlength | instselect | instsetfield | insttypes | intenvset