MATLAB è Simulink íà ðóññêîì

https://hub.exponenta.ru/
 

Financial Derivatives Toolbox

Financial Toolbox: разбор демонстрационных примеров

  В оглавление \ К предыдущему разделу

Создание портфеля

Встроенная функция instadd создает множество финансовых инструментов (портфель) или добавляет инструменты к существующему множеству инструментов. Аргумент TypeString специфицирует тип инвестиционного инструмента: 'Bond', 'OptBond', 'CashFlow', 'Fixed', 'Float', 'Cap', 'Floor', или 'Swap'. Последующие аргументы, после аргумента TypeString специфицируют тип инвестиционного инструмента. Таким образом, значение аргумента TypeString определяет интерпретацию последующих входных аргументов.

Например instadd с значением первого аргумента 'Bond' создает портфель из облигации:

InstSet =instadd ('Bond', CouponRate, Settle, Maturity, Period,
Basis, EndMonthRule, IssueDate, FirstCouponDate, LastCouponDate,
StartDate, Face) 

Аналогичным способом instadd может создать портфели, состоящие из других типов инвестиционных инструментов:

  • Опционы на облигации
    InstSet =instadd ('OptBond', BondIndex, OptSpec, Strike, ExerciseDates, AmericanOpt)
    
  • Произвольный поток наличных
    InstSet =instadd( 'CashFlow', CFlowAmounts, CFlowDates, Settle, Basis)
    
  • Обязательство с фиксированной процентной ставкой
    InstSet =instadd ('Fixed', CouponRate, Settle, Maturity, FixedReset, Basis, Principal)
    
  • Обязательство с плавающей процентной ставкой
    InstSet =instadd ('Float', Spread, Settle, Maturity, FloatReset, Basis, Principal)
    
  • Кап
    InstSet =instadd ('Cap', Strike, Settle, Maturity, CapReset, Basis, Principal)
    
  • Флор
    InstSet =instadd ('Floor', Strike, Settle, Maturity, FloorReset, Basis, Principal)
    
  • Своп
    InstSet =instadd ('Swap', LegRate, Settle, Maturity, LegReset, Basis, Principal, LegType)
    

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

Рассмотрим пример, содержащий в качестве инвестиционных инструментов только два капа.

Strike =[0.06;0.07 ];
Settle ='08-Feb-2000';
Maturity ='15-Jan-2003';

Port_1 =instadd ('Cap',Strike,Settle,Maturity);

Эти команды создают портфель, содержащий два капа, с одинаковыми датами поставки и экспирации, однако с различными страйками. В общем случае, входные аргументы описывают, что инвестиционный инструмент может быть или скаляром или вектором размерности (NumInst) : 1, в котором каждый элемент представляет соответствующий инвестиционный инструмент. Используем скалярное представление для одинаковых значений всех инвестиционных инструментов, передаваемых в процедуре вызова для функции instadd.

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

instdisp(Port_1)

Результат выполнения команд MATLAB по созданию портфеля представлены на рисунке.

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

CouponRate =0.04;
          Port_1 =instadd (Port_1, 'Bond', CouponRate, Settle, Maturity); 

Снова используем команду instdisp для отображения характеристик измененного множества инвестиционных инструментов с дополнительной облигацией.

instdisp(Port_1)

Результат выполнения команд MATLAB по добавлению облигации к существующему портфелю представлены на рисунке.

Управление портфелем

Возможности управления портфелем, содержащиеся в Financial Derivatives Toolbox включают в себя:

  • Конструкторы, для наиболее общих финансовых инструментов,
  • Возможности создания новых инструментов или добавления новых полей к существующим инструментам,
  • Возможности поиска или исследования подмножества портфеля.

Инструменты создания и управления портфелем

Financial Derivatives Toolbox имеет встроенные, собственные компоненты для анализа портфелей, содержащих несколько типов финансовых инструментов. Toolbox обеспечивает функциональность, которая поддерживает создание и управление следующими финансовыми инструментами:

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

Конструкторы инструментов

Financial Derivatives Toolbox обеспечивает конструкторы для наиболее общих финансовых инструментов.

Замечание: Конструктор - это функция, которая осуществляет построение структуры, соответствующей определенному типу объектов. В рассматриваемом Financial Derivatives Toolbox - объект представляет собой тип рыночного инструмента (то есть таких инструментов, которые торгуются на открытом рынке).

Инструменты и их конструкторы в рассматриваемом Financial Derivatives Toolbox перечислены ниже:

Инструмент Конструктор
1 Облигация instbond
2 Опцион на облигацию instoptbnd
3 Произвольный поток наличных instcf
4 Обязательство с фиксированной процентной ставкой instfixed
5 Обязательство с плавающей процентной ставкой instfloat
6 Кап instcap
7 Флоор instfloor
8 Своп instswap

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

  • Создать инструмент или портфель инструментов,
  • Занумеровать хранимые типы инструментов и информационные поля,
  • Занумеровать поля данных инструмента,
  • Найти и выбрать инструмент.

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

В действительности множество параметров для каждого инструмента не является фиксированным. Пользователь имеет возможность добавить дополнительные инструменты. Эти дополнительные поля в дальнейшем будут игнорироваться функциями Financial Derivatives Toolbox. Эти дополнительные поля могут использоваться для маркировки дополнительными полями информации для каждого инструмента, таких как внутренний код, описывающий облигацию.

Параметры не специфицируются, когда создается инструмент для 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 Derivatives Toolbox непосредственно не поддерживает этот инструмент, его можно создать с использованием функции instaddfield. Параметры, используемые для создания инструмента имеют вид:

  • Тип: Future (Фьючерс),
  • Имена полей: Delivery и Price (Дата поставки и Цена)
  • Дата: Поставка 15 июля 2000 года и цена $104.40.

Вводим данные в MATLAB:

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

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

	FieldClass ={'date', 'dble'};  
Наконец, создаем портфель с одним инструментом.
    Port =instaddfield ('Type', Type, 'FieldName' FieldName, ...
      'FieldClass', FieldClass, 'Data', Data);
Таким образом команда MATLAB имеет вид:
Port =instaddfield ('Type', 'Future', 'Delivery', 'Jul-15-2000', 'Price', 104.4);
Теперь используем функцию instdisp для проверки характеристик созданного портфеля из одного инструмента:
instdisp(Port)

Ввиду того, что созданный портфель 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)

Поиск и выбор портфеля

Financial Derivatives 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 представляет собой вектор целых индексов, определяющих позиции инструментов в множестве инструментов для проверки, default представляет собой все (по умолчанию) индексы, доступные в множестве инструментов. 'TypeList' представляет собой строку или массив строк ограничивающих инструменты, удовлетворяющие одному типу 'TypeList', default представляет собой все типы в множестве инструментов.

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

Пример instfind. Примеры используют поставляемый MATLAB файл deriv.mat.

MATLAB файл содержит множество инструментов HJMInstSet. В этом файле содержатся 8 инструментов 7 типов.

Вводим команды в MATLAB:

load deriv.mat
instdisp(HJMInstSet)

Результат их выполнения представлен ниже:

Для нахождения всех инструментов с датой экспирации 1 января 2003 года можно выполнить следующую команду. Вводим команду в MATLAB:

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

Результат ее выполнения представлен ниже:

Для нахождения всех капов и флоров среди множества инструментов с датой экспирации 1 января 2004 года выполняется следующий оператор:

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

После введения команды в MATLAB, получим следующий результат:

Для нахождения всех инструментов, где в портфеле имеется длинных или коротких позиций в количестве 50 позиций, выполняется следующая команда.

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

После введения команды в MATLAB, получим следующий результат:

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

Выше использовалась функция instfind для нахождения всех инструментов в портфеле HJMInstSet с датой экспирации 1 января 2003 года.

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

С возвратом индексов инструментов, удовлетворивших запросу: 1 4 5 8.

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

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

instdisp(Select2003) 

После введения вышеприведенных команд в MATLAB, получим следующий результат:

Примеры instselect.

Эти примеры используют портфель ExampleInst, поставляемый в MATLAB файле InstSetExamples.mat.

load InstSetExamples.mat
instdisp(ExampleInst)

После введения вышеприведенных команд в MATLAB, получим следующий результат:

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

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

instdisp(InstSet)

После введения вышеприведенных команд в MATLAB, получим следующий результат:

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

  В оглавление \ К предыдущему разделу

 

Поиск по сайту:


Система Orphus