Этот пример иллюстрирует некоторые функции структурного анализа термина, искавшие в программном обеспечении Financial Toolbox™. А именно, это иллюстрирует, как вывести подразумеваемый нуль (пятно) и прямые кривые от наблюдаемых рыночных цен переносящих купон связей. Нуль и прямые кривые, подразумеваемые из данных о рынке, затем используются, чтобы оценить соглашение о процентном свопе.
В процентном свопе две стороны соглашаются на периодический обмен потоками наличности. Один из потоков наличности основан на фиксированной процентной ставке, сохраненной постоянной в течение жизни подкачки. Другой поток потока наличности связывается к некоторому переменному уровню индекса. Оценка подкачки в начале составляет нахождение фиксированной процентной ставки соглашения о подкачке. Эта фиксированная процентная ставка, соответственно масштабируемая отвлеченным принципалом соглашения о подкачке, определяет периодическую последовательность фиксированных потоков наличности.
В общем случае процентные свопы оценены от прямой кривой, таким образом, что переменные потоки наличности, подразумеваемые от серии форвардных курсов и периодической последовательности потоков наличности с фиксированной процентной ставкой, имеют то же текущее значение. Таким образом оценка процентного свопа и структурный анализ термина глубоко связаны.
Задайте значения в течение расчетного дня, дат погашения, купонных ставок и рыночных цен на 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
Теперь, когда данные были заданы, используйте функцию структуры термина zbtprice
загружать кривую нулевой ширины, подразумеваемую от цен переносящих купон связей. Эта подразумеваемая кривая нулевой ширины представляет серию Казначейских уровней нулевого купона, сопоставимых с ценами переносящих купон связей, таким образом, что арбитражные возможности не будут существовать.
ZeroRates = zbtprice([Maturity CouponRate], Prices, Settle);
Кривая нулевой ширины, сохраненная в ZeroRates
, заключается в кавычки на полугодовом базисе связи (периодическое, шестимесячное, процентная ставка удвоена, чтобы пересчитать на год). Первый элемент ZeroRates
годовой показатель за следующие шесть месяцев, вторым элементом является годовой показатель за следующие 12 месяцев и так далее.
От подразумеваемой кривой нулевой ширины найдите соответствующую серию подразумеваемых форвардных курсов с помощью функции структуры термина zero2fwd
.
ForwardRates = zero2fwd(ZeroRates, Maturity, Settle);
Прямая кривая, сохраненная в ForwardRates
, также заключается в кавычки на полугодовом базисе связи. Первый элемент ForwardRates
годовой показатель, применился к интервалу между поселением и спустя шесть месяцев после урегулирования, вторым элементом является годовой показатель, применился к интервалу от шести месяцев до 12 месяцев после урегулирования, и так далее. Эта подразумеваемая прямая кривая также сопоставима с наблюдаемыми рыночными ценами, таким образом, что арбитражные действия будут убыточны. Поскольку первый форвардный курс является также нулевым уровнем, первым элементом ZeroRates
и ForwardRates
то же самое.
Теперь, когда вы вывели кривую нулевой ширины, преобразуйте ее в последовательность коэффициентов дисконтирования с функцией структуры термина zero2disc
.
DiscountFactors = zero2disc(ZeroRates, Maturity, Settle);
От коэффициентов дисконтирования вычислите приведенную стоимость переменных потоков наличности, выведенных из подразумеваемых форвардных курсов. Для простых процентных свопов отвлеченный принципал остается постоянным для каждого платежного дня и отмен из каждой стороны уравнения приведенной стоимости. Следующая строка принимает модуль отвлеченный принципал.
PresentValue = sum((ForwardRates/Period) .* DiscountFactors);
Вычислите цену подкачки (фиксированная процентная ставка) путем приравнивания приведенной стоимости фиксированных потоков наличности с приведенной стоимостью потоков наличности, выведенных из подразумеваемых форвардных курсов. Снова, поскольку отвлеченный принципал отменяет из каждой стороны уравнения, это принято, чтобы быть 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%, вероятно, была бы средней точкой между участником рынка, предлагал/спрашивал кавычки.
blsdelta
| blsgamma
| blsprice
| blsvega
| bndconvy
| bnddury
| bndkrdur
| bndprice
| zbtprice
| zero2disc
| zero2fwd