exponenta event banner

Управление процентным риском с помощью фьючерсов на облигации

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

Изменение продолжительности портфеля с помощью фьючерсов на облигации

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

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

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

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

  • Примечание за 2 года

  • Примечание за 3 года

  • Примечание за 5 лет

  • Примечание за 10 лет

  • 30-летняя облигация

https://www.cmegroup.com/trading/interest-rates/

Eurex предлагает фьючерсы на следующее:

  • Евро-Шац Фьючерс 1,75 до 2,25

  • Евро-Бобль Фьючерс 4,5 до 5,5

  • Фьючерсы на евро-бунд от 8,5 до 10,5

  • Фьючерсы Euro-Buxl от 24,0 до 35

https://www.eurexchange.com/exchange-en/

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

Существует две проблемы при вычислении этой продолжительности:

  • Поскольку существует много доступных облигаций для поставки, короткий в договоре имеет выбор, в котором облигация должна быть поставлена.

  • Некоторые контракты обеспечивают небольшую гибкость при выборе даты поставки.

Обычно связь, используемая для анализа, представляет собой связь, которая является наиболее дешевой для доставки коротким (CTD).

Один из подходов заключается в вычислении показателей длительности с использованием длительности CTD и коэффициента преобразования.

Например, текущее значение базисной точки (PVBP) может быть вычислено следующим образом:

PVBPFutures = PVBPCTDConversionFactor CTD

PVBPCTD = DurationCTD * PriceCTD100

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

Если целью является изменение продолжительности портфеля, используйте следующее:

NumContracts = (DurTarget-DurInitial) *ValuePortfolioDurCTD*PriceCTD*ContractSize*ConvFactorCTD

Обратите внимание, что размер контракта обычно составляет 100 000 номинальной стоимости облигации, поэтому размер контракта обычно составляет 1000, так как номинальная стоимость облигации равна 100.

В следующем примере предполагается начальная продолжительность, стоимость портфеля и целевая продолжительность для портфеля с подверженностью процентной ставке в евро. Июньский контракт Euro-Bund Futures используется для изменения продолжительности портфеля.

Обратите внимание, что обычно фьючерсные контракты предлагаются на март, июнь, сентябрь и декабрь.

% Assume the following for the portfolio and target
PortfolioDuration = 6.4;
PortfolioValue = 100000000;
BenchmarkDuration = 4.8;

% Deliverable Bunds -- note that these conversion factors may also be
% computed with the MATLAB(R) function convfactor
BondPrice = [106.46;108.67;104.30];
BondMaturity = datenum({'04-Jan-2018','04-Jul-2018','04-Jan-2019'});
BondCoupon = [.04;.0425;.0375];
ConversionFactor = [.868688;.880218;.839275];

% Futures data -- found from http://www.eurexchange.com
FuturesPrice = 122.17;
FuturesSettle = '23-Apr-2009';
FuturesDelivery = '10-Jun-2009';

% To find the CTD bond we can compute the implied repo rate
ImpliedRepo = bndfutimprepo(BondPrice,FuturesPrice,FuturesSettle,...
    FuturesDelivery,ConversionFactor,BondCoupon,BondMaturity);

% Note that the bond with the highest implied repo rate is the CTD
[CTDImpRepo,CTDIndex] = max(ImpliedRepo);

% Compute the CTD's Duration -- note the period and basis for German Bunds
Duration = bnddurp(BondPrice,BondCoupon,FuturesSettle,BondMaturity,1,8);

ContractSize = 1000;

% Use the formula above to compute the number of contracts to sell
NumContracts = (BenchmarkDuration - PortfolioDuration)*PortfolioValue./...
    (BondPrice(CTDIndex)*ContractSize*Duration(CTDIndex))*ConversionFactor(CTDIndex);

disp(['To achieve the target duration, ' num2str(abs(round(NumContracts))) ...
    ' Euro-Bund Futures must be sold.'])
To achieve the target duration, 180 Euro-Bund Futures must be sold.

Изменение продолжительности ключевой ставки портфеля с помощью фьючерсов на облигации

Одним из недостатков использования продолжительности в качестве показателя риска является то, что она предполагает параллельные сдвиги кривой доходности. Хотя многие исследования показали, что это объясняет примерно 85% движения кривой доходности, изменения в наклоне или форме кривой доходности не фиксируются продолжительностью, и, следовательно, стратегии хеджирования не являются успешными для устранения этой динамики.

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

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

Для вычисления длительности ключевой ставки требуется нулевая кривая. В этом примере используется нулевая кривая, опубликованная Казначейством и найденная в следующем месте:

https://www.ustreas.gov/offices/domestic-finance/debt-management/interest-rate/yield.shtml

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

% Assume the following for the portfolio and target, where the duration
% vectors are key rate durations at 2, 5, 10, and 30 years.
PortfolioDuration = [.5 1 2 6];
PortfolioValue = 100000000;
BenchmarkDuration = [.4 .8 1.6 5];

% The following are the CTD Bonds for the 30, 10, 5 and 2 year futures
% contracts -- these were determined using the procedure outlined in the
% previous section.
CTDCoupon = [4.75 3.125 5.125 7.5]'/100;
CTDMaturity = datenum({'3/31/2011','08/31/2013','05/15/2016','11/15/2024'});
CTDConversion = [0.9794 0.8953 0.9519 1.1484]';
CTDPrice = [107.34 105.91 117.00 144.18]';

ZeroRates = [0.07 0.10 0.31 0.50 0.99 1.38 1.96 2.56 3.03 3.99 3.89]'/100;
ZeroDates = daysadd(FuturesSettle,[30 360 360*2 360*3 360*5 ...
    360*7 360*10 360*15 360*20 360*25 360*30],1);

% Compute the key rate durations for each of the CTD bonds.
CTDKRD = bndkrdur([ZeroDates ZeroRates], CTDCoupon,FuturesSettle,...
    CTDMaturity,'KeyRates',[2 5 10 30]);

% Note that the contract size for the 2 Year Note Future is $200,000
ContractSize = [2000;1000;1000;1000];

NumContracts = (bsxfun(@times,CTDPrice.*ContractSize./CTDConversion,CTDKRD))\...
    (BenchmarkDuration - PortfolioDuration)'*PortfolioValue;

sprintf(['To achieve the target duration, \n' ...
    num2str(-round(NumContracts(1))) ' 2 Year Treasury Note Futures must be sold, \n' ...
    num2str(-round(NumContracts(2))) ' 5 Year Treasury Note Futures must be sold, \n' ...
    num2str(-round(NumContracts(3))) ' 10 Year Treasury Note Futures must be sold, \n' ...
    num2str(-round(NumContracts(4))) ' Treasury Bond Futures must be sold, \n'])
ans = 
    'To achieve the target duration, 
     24 2 Year Treasury Note Futures must be sold, 
     47 5 Year Treasury Note Futures must be sold, 
     68 10 Year Treasury Note Futures must be sold, 
     120 Treasury Bond Futures must be sold, 
     '

Повышение эффективности хеджирования с регрессией

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

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

Один из подходов состоит в том, чтобы выполнить регрессию по исторической доходности при различных сроках погашения, чтобы определить бета-доходность, которая представляет собой значение, которое представляет, насколько больше изменяется доходность для различных сроков погашения.

В этом примере показано, как использовать этот подход с фьючерсами Long Gilt Великобритании и историческими данными о доходности Gilt.

Рыночные данные по фьючерсам на Гилт приведены ниже:

https://www.euronext.com

Исторические данные о позолотах встречаются у:

https://www.dmo.gov.uk

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

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

% Assume the following for the portfolio and target
PortfolioDuration = 6.4;
PortfolioValue = 100000000;
BenchmarkDuration = 4.8;

% This is the CTD Bond for the Long Gilt Futures contract
CTDBondPrice = 113.40;
CTDBondMaturity = datenum('7-Mar-2018');
CTDBondCoupon = .05;
CTDConversionFactor = 0.9325024;

% Market data for the Long Gilt Futures contract
FuturesPrice = 120.80;
FuturesSettle = '23-Apr-2009';
FuturesDelivery = '10-Jun-2009';

CTDDuration = bnddurp(CTDBondPrice,CTDBondCoupon,FuturesSettle,CTDBondMaturity);

ContractSize = 1000;

NumContracts = (BenchmarkDuration - PortfolioDuration)*PortfolioValue./...
    (CTDBondPrice*ContractSize*CTDDuration)*CTDConversionFactor;

disp(['To achieve the target duration with a conventional hedge ' ...
    num2str(-round(NumContracts)) ...
    ' Long Gilt Futures must be sold.'])
To achieve the target duration with a conventional hedge 182 Long Gilt Futures must be sold.

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

% Load data from XLS spreadsheet
load ukbonddata_20072008

Duration = bnddury(Yield(1,:)',Coupon,Dates(1,:),Maturity);

scatter(Duration,100*std(Yield))
title('Standard Deviation of Yields for UK Gilts 2007-2008')
ylabel('Standard Deviation of Yields (%)')
xlabel('Duration')
annotation(gcf,'textbox',[0.4067 0.685 0.4801 0.0989],...
    'String',{'Note that the Standard Deviation',...
    'of Yields is greater at shorter maturities.'},...
    'FitBoxToText','off',...
    'EdgeColor','none');

Figure contains an axes. The axes with title Standard Deviation of Yields for UK Gilts 2007-2008 contains an object of type scatter.

stats = regstats(std(Yield),Duration);
YieldBeta = (stats.beta'*[1 PortfolioDuration]')./(stats.beta'*[1 CTDDuration]');

Теперь Beta доходности используется для вычисления нового значения количества контрактов, которые должны быть проданы. Отметим, что поскольку срок действия портфеля был меньше, чем срок действия CTD Gilt, количество продаваемых фьючерсов на самом деле больше, чем в первом случае.

NumContracts = (BenchmarkDuration - PortfolioDuration)*PortfolioValue./...
    (CTDBondPrice*ContractSize*CTDDuration)*CTDConversionFactor*YieldBeta;

disp(['To achieve the target duration using a Yield Beta-modified hedge, ' ...
    num2str(abs(round(NumContracts))) ...
    ' Long Gilt Futures must be sold.'])
To achieve the target duration using a Yield Beta-modified hedge, 193 Long Gilt Futures must be sold.

Библиография

Этот пример основан на следующих книгах и документах:

[1] Бургардт, Г., Т. Белтон, М. Лейн и Дж. Папа. Основа казначейских облигаций. Нью-Йорк, Нью-Йорк: Макгроу-Хилл, 2005.

[2] Кргин, D. Справочник по глобальным расчетам фиксированного дохода. Нью-Йорк, Нью-Йорк: John Wiley & Sons, 2002.

[3] Учебный план программы CFA, уровень III, том 4, чтение 31. Институт КФА, 2009 год.