exponenta event banner

Анализ структуры условий и процентные свопы

В этом примере показаны некоторые функции анализа терминологии в программном обеспечении Financial Toolbox™. В частности, он иллюстрирует, как вывести подразумеваемые нулевые (спотовые) и форвардные кривые из наблюдаемых рыночных цен купонных облигаций. Нулевые и форвардные кривые, подразумеваемые из рыночных данных, затем используются для оценки соглашения процентного свопа.

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

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

Шаг 1

Укажите значения для даты расчета, сроков погашения, ставок купонов и рыночных цен для 10 казначейских облигаций США. Эти данные позволяют оценить пятилетний своп с чистыми платежами денежного потока, обмениваемыми каждые шесть месяцев. Для простоты примите значения по умолчанию для правила оплаты на конец месяца (правило действует) и базы подсчета дней (факт/факт). Во избежание выпуска начисленных процентов, предположим, что все Казначейские облигации выплачивают полугодовые купоны и что расчет происходит на дату выплаты купона.

Settle   = datenum('15-Jan-1999');

BondData = {'15-Jul-1999'  0.06000   99.93
            '15-Jan-2000'  0.06125   99.72
            '15-Jul-2000'  0.06375   99.70
            '15-Jan-2001'  0.06500   99.40
            '15-Jul-2001'  0.06875   99.73
            '15-Jan-2002'  0.07000   99.42
            '15-Jul-2002'  0.07250   99.32
            '15-Jan-2003'  0.07375   98.45
            '15-Jul-2003'  0.07500   97.71
            '15-Jan-2004'  0.08000   98.15};

BondData - экземпляр массива ячеек MATLAB ®, обозначаемый фигурными скобками ({}).

Затем назначьте дату, сохраненную в массиве ячеек, Maturity, CouponRate, и Prices векторы для дальнейшей обработки.

Maturity   = datenum(char(BondData{:,1}));
CouponRate = [BondData{:,2}]';
Prices     = [BondData{:,3}]';
Period     = 2; % semiannual coupons

Шаг 2

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

ZeroRates = zbtprice([Maturity CouponRate], Prices, Settle); 

Нулевая кривая, сохраненная в ZeroRates, котируется на основе полугодовых облигаций (периодическая, шестимесячная, процентная ставка удваивается до ежегодной). Первый элемент ZeroRates годовой курс в течение следующих шести месяцев, второй элемент - годовой курс в течение следующих 12 месяцев и так далее.

Шаг 3

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

ForwardRates = zero2fwd(ZeroRates, Maturity, Settle);

Прямая кривая, сохраненная в ForwardRates, также котируется на основе полугодовых облигаций. Первый элемент ForwardRates - годовой курс, применяемый к интервалу между расчетами и шестью месяцами после расчета, второй элемент - годовой курс, применяемый к интервалу от шести месяцев до 12 месяцев после расчета и так далее. Эта подразумеваемая форвардная кривая также согласуется с наблюдаемыми рыночными ценами, так что арбитражная деятельность будет нерентабельной. Поскольку первая прямая скорость также является нулевой скоростью, первый элемент ZeroRates и ForwardRates одинаковые.

Шаг 4

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

DiscountFactors = zero2disc(ZeroRates, Maturity, Settle);

Шаг 5

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

PresentValue = sum((ForwardRates/Period) .* DiscountFactors);

Шаг 6

Вычислите цену свопа (фиксированную ставку), приравняв приведенную стоимость фиксированных денежных потоков к приведенной стоимости денежных потоков, полученных из подразумеваемых форвардных ставок. Опять же, поскольку условный главный объект отменяется из каждой стороны уравнения, предполагается, что он равен 1.

SwapFixedRate = Period * PresentValue / sum(DiscountFactors);

Выходные данные для этих вычислений:

  Zero Rates  Forward Rates
    0.0614        0.0614
    0.0642        0.0670
    0.0660        0.0695
    0.0684        0.0758
    0.0702        0.0774
    0.0726        0.0846
    0.0754        0.0925
    0.0795        0.1077
    0.0827        0.1089
    0.0868        0.1239

  Swap Price (Fixed Rate) = 0.0845

Все ставки представлены в десятичном формате. Цена свопа, 8,45%, вероятно, будет средней точкой между котировками предложения/запроса маркет-мейкера.

См. также

| | | | | | | | | |

Связанные темы