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

https://hub.exponenta.ru/
 

Financial Derivatives Toolbox

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

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

Функции для моделирования временной структуры процентной ставки

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

  • "Создание или модификация" - функция intenvset. Позволяет создать или модифицировать временную структуры процентной ставки (RateSpec), с использованием функции intenvset.
  • "Получение специфических свойств" - функция intenvget. Позволяет получить специфические свойства из RateSpec.

"Создание или модификация" - функция intenvset

Основной функцией для создания или модификации временной структуры процентной ставки RateSpec (rate specification) является функция intenvset. Первым аргументе этой функции является ранее созданная RateSpec, функция intenvset модифицирует существующую временную структуру процентной ставки и возвращает новую. В противном случае, функция возвращает вновь созданную RateSpec. Другими аргументами функции intenvset являются пары свойств, определяющие новые значения для этих свойств. Свойствами, которые могут быть специфицированы или модифицированы являются:

  • Compounding
  • Disc
  • Rates
  • EndDates
  • StartDates
  • ValuationDates
  • Basis
  • EndMonthRule

Для изучения свойств аргументов функции EndMonthRule и Basis, необходимо в командной строке MATLAB ввести соответственно команды:

help ftbEndMonthRule
help ftbBasis

или обратиться к руководству пользователя Financial Toolbox User's Guide.

Рассмотрим в качестве исходных данных следующую таблицу:

С По Процентная ставка
15 февраля 2000 15 августа 2000 0.05
15 февраля 2000 15 февраля 2001 0.056
15 февраля 2000 15 августа 2001 0.06
15 февраля 2000 15 февраля 2002 0.065
15 февраля 2000 15 августа 2002 0.075

Используем представленную в таблице информацию для описания временной структуры процентной ставки RateSpec. Вводим в командную строку MATLAB следующие команды:

StartDates = ['15-Feb-2000'];
EndDates = ['15-Aug-2000';
'15-Feb-2001';
'15-Aug-2001';
'15-Feb-2002';
'15-Aug-2002'];
Compounding = 2;
ValuationDate = ['15-Feb-2000'];
Rates = [0.05; 0.056; 0.06; 0.065; 0.075];
rs = intenvset ('Compounding',Compounding,'StartDates',...
StartDates, 'EndDates', EndDates, 'Rates', Rates,...
'ValuationDate', ValuationDate)

и получаем результат:

Некоторые из свойств являются пропущенными в структуре, при обращении к RateSpec. Выдаваемые значения после вызова функции, автоматически представляют собой свойства относительно тех свойств, которые точно переданы. Рассмотрим пример векторов StartTimes и EndTimes. Так как передаются вектора StartDates и EndDates, так же как и ValuationDate, функция intenvset имеет информацию для вычисления StartTimes и EndTimes. Поэтому читаются только эти два свойства.

"Получение специфических свойств" - функция intenvget

Противоположной функцией для функции intenvset является функция intenvget. Эта функция выводит специфические свойства из временной структуры процентной ставки. Синтаксис этой функции имеет вид:

ParameterValue = intenvget (RateSpec, 'ParameterName')

Для получения вектора EndTimes из временной структуры RateSpec, вводим команду MATLAB:

EndTimes = intenvget (rs, 'EndTimes')

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

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

Disc = intenvget (rs, 'Disc')

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

Эти факторы дисконтирования соответствуют периодам, начиная от StartDates и заканчивая EndDates.

Замечание. Хотя можно непосредственно получить эти значения полей на основе временной структуры процентной ставки, вместо использования функции intenvget. Строго рекомендуется не делать этого. Этот формат временной структуры процентной ставки в будущих версиях Financial Derivatives Toolbox может быть изменен. И когда это будет сделано, то реализации кода функции RateSpec для некоторых полей будут неработоспособны.

Теперь используем структуру RateSpec с ее функциями для проверки того, как изменяются специальные свойства временной структуры процентной ставки с повышением последней. В качестве примера, изменим значение аргумента Compounding с 2 (полугодовая выплата дивидендов) на 1 ( годовая).

rs = intenvset (rs, 'Compounding', 1);

Ввиду того, что StartTimes и EndTimes измеряются в единицах периода дисконтирования, то изменение значения аргумента Compounding с 2 на 1 переопределяет базис с полугодового на годовой. Это означает, что период в 6 месяцев представляется значением равным 0.5, а годовой период значением 1. Для получения значений векторов StartTimes и EndTimes вводим следующие команды:

StartTimes = intenvget(rs, 'StartTimes');
EndTimes = intenvget(rs, 'EndTimes');
Times = [StartTimes, EndTimes]

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

Так как все значения в StartDates являются теми же самыми, как и время оценивания, то все значения StartTimes являются равными нулю. С другой стороны, значения вектора EndDates представляют собой даты, разделенные между собой 6 месячными периодами. Так как переопределенное значение параметра Compounding равно 1, то EndTimes представляют собой последовательность чисел, разделенных между собой приращением равным 0.5.

Вычисление цен и чувствительности с применением временной структуры процентной ставки

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

  • "Инструменты вычисления цены" - в этом разделе осуществляется рассмотрение использования функции intenvprice, применяемой для ценообразования портфеля инструментов, в основе которого лежит множество изменений процентных ставок на обязательство с нулевым купоном,
  • "Инструменты вычисления чувствительности" - в этом разделе будут рассмотрены процессы вычисления статистических характеристик чувствительности delta и gamma с применением функции intenvsens.

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

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

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

Заметим, что опционы, капы и флоры на процентные ставки как производные финансовые инструменты отсутствуют в вышеприведенном списке как поддерживаемые текущей версией МATLAB. Эти финансовые инструменты не поддерживаются, ввиду того, что их функции ценообразования и чувствительности требуют применения стохастических моделей для представления эволюции процентных ставок. В текущей версии временная структура процентной ставки, используемая для ценообразования, рассматривается как детерминированная, а раз так, то она не является адекватной для ценообразования этих усложненный производных финансовых инструментов.

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

Инструменты вычисления цены

Основной функцией, используемой для определения цены портфелей, состоящих из финансовых инструментов, является функция intenvprice. Эта функция работает совместно с множеством функций, вычисляющих цены индивидуальных финансовых инструментов. Когда функция intenvprice вызывается, она классифицирует портфели, содержащиеся в InstSet по типу инструментов, и вызывает соответствующую финансовому инструменту функцию ценообразования. Соотношения между типами инструментов и функциями вызова ценообразования для intenvprice следующие:

  • bondbyzero: Цена обязательства, определяемая множеством обязательств с нулевым купоном,
  • fixedbyzero: Цена обязательства с фиксированной процентной ставкой, определяемая множеством обязательств с нулевым купоном,
  • floatbyzero: Цена обязательства с переменной процентной ставкой, определяемая множеством обязательств с нулевым купоном,
  • swapbyzero: Цена свопа, определяемого множеством обязательств с нулевым купоном.

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

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

Синтаксис функции intenvprice, используемой для определения анализируемого портфеля имеет вид:

Price = intenvprice (RateSpec, InstSet)

где:

  • RateSpec представляет собой временную структуру процентной ставки
  • InstSet - имя анализируемого портфеля.

Пример: Определение цены портфеля финансовых инструментов

Рассмотрим пример использования функции intenvprice для оценивания портфеля финансовых инструментов, поставляемого вместе с Financial Derivatives Toolbox.

Файл MATLAB с названием deriv.mat хранит портфель финансовых инструментов как множество в переменной ZeroInstSet. Данный МАТ - файл содержит также временную структуру процентной ставки в переменной ZeroRateSpec. Пользователь может отобразить финансовые инструменты с помощью функции instdisp.

Выполним следующие команды MATLAB:

load deriv.mat;
instdisp(ZeroInstSet)

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

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

Выполним следующие команды MATLAB:

format bank
Prices = intenvprice(ZeroRateSpec, ZeroInstSet)

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

Полученный результат представляет собой вектор Prices, содержащий цены всех инструментов портфеля в порядке, определенном столбцом Index, отображенным с помощью функции instdisp. Следовательно, первые 2 элемента вектора Prices соответствуют двум облигациям, третий элемент соответствует обязательству с фиксированной процентной ставкой, четвертый обязательству с плавающей процентной ставкой, пятый элемент соответствует цене свопа.

Инструменты вычисления чувствительности

В общем случае, пользователь может вычислить чувствительность в виде долларового (абсолютного) изменения цены или процентного (относительного) изменения цены. Financial Derivatives Toolbox представляет отчеты по определению чувствительности в виде абсолютного изменения цены в долларах.

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

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

[Delta, Gamma, Price] = intenvsens (RateSpec, InstSet)

где, как и ранее:

  • RateSpec представляет собой временную структуру процентной ставки
  • InstSet - имя анализируемого портфеля.

Пример: Определение чувствительности и цен

Рассмотрим пример вычисления чувствительности и цен с применением функции intenvsens.

Выполним следующие команды MATLAB:

format bank
load deriv.mat;
[Delta, Gamma, Price] = intenvsens(ZeroRateSpec, ZeroInstSet);

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

All = [Delta Gamma Price]

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

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

[Delta./Price, Gamma./Price, Price]

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

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

 

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


Система Orphus