Этот пример использует функции оценки связи Financial Toolbox™, чтобы оценить влияние времени к зрелости и изменение урожая на цене портфеля связи. Кроме того, этот пример показывает, как визуализировать динамику цен портфеля связей по широкому спектру сценариев кривой доходности, и в то время как время прогрессирует к зрелости.
Задайте значения в течение расчетного дня, даты погашения, номинальной стоимости, купонной ставки и периодичности купонного платежа портфеля с четырьмя связями. Для простоты примите значения по умолчанию для платежного правила конца месяца (правило в действительности) и (фактическое/фактическое) основание дневного количества. Кроме того, синхронизируйте структуру купонного платежа с датой погашения (никакие нечетные первые или последние даты купона). Любые входные параметры, для которых приняты значения по умолчанию, собираются освободить матрицы ([]) как заполнители, где это необходимо. Кроме того, задайте точки на кривой доходности для каждой связи.
Settle = '15-Jan-1995'; Maturity = datenum(['03-Apr-2020'; '14-May-2025'; ... '09-Jun-2019'; '25-Feb-2019']); Face = [1000; 1000; 1000; 1000]; CouponRate = [0; 0.05; 0; 0.055]; Periods = [0; 2; 0; 2]; Yields = [0.078; 0.09; 0.075; 0.085];
Используйте функции Financial Toolbox, чтобы вычислить истинные цены облигаций как сумму указанной цены плюс начисленные проценты.
[CleanPrice, AccruedInterest] = bndprice(Yields,... CouponRate,Settle, Maturity, Periods,... [], [], [], [], [], [], Face); Prices = CleanPrice + AccruedInterest
Prices = 4×1
145.2452
594.7757
165.8949
715.7584
Примите, что значение каждой связи составляет 25 000$, и определите количество каждой связи, таким образом, что стоимость портфеля составляет 100 000$.
BondAmounts = 25000 ./ Prices;
Вычислите цену портфеля за прокручивающийся ряд расчетных дней в области значений урожаев. Даты оценки происходят ежегодно 15 января, начинаясь 15 января 1995 (урегулирование) и расширяя до 15 января 2018. Таким образом этот шаг оценивает цену портфеля на сетку времени прогрессии (dT) и процентные ставки (dY).
dy = -0.05:0.005:0.05; % Yield changes D = datevec(Settle); % Get date components dt = datenum(D(1):2018, D(2), D(3)); % Get evaluation dates [dT, dY] = meshgrid(dt, dy); % Create grid NumTimes = length(dt); % Number of time steps NumYields = length(dy); % Number of yield changes NumBonds = length(Maturity); % Number of bonds % Preallocate vector Prices = zeros(NumTimes*NumYields, NumBonds);
Теперь, когда сетка и ценовые векторы были созданы, вычислите цену каждой связи в портфеле на сетке одна связь за один раз.
for i = 1:NumBonds [CleanPrice, AccruedInterest] = bndprice(Yields(i)+... dY(:), CouponRate(i), dT(:), Maturity(i), Periods(i),... [], [], [], [], [], [], Face(i)); Prices(:,i) = CleanPrice + AccruedInterest; end
Масштабируйте цены облигаций количеством связей и измените стоимости облигации, чтобы соответствовать базовой сетке оценки.
Prices = Prices * BondAmounts; Prices = reshape(Prices, NumYields, NumTimes);
Постройте цену портфеля как функция расчетного дня и область значений урожаев, и как функция изменения в урожае (dY). Этот график иллюстрирует чувствительность процентной ставки портфеля как прогресс времени (dT) под областью значений сценариев процентной ставки. Со следующими графическими командами можно визуализировать 3D поверхность относительно текущей стоимости портфеля (то есть, 100 000$).
figure % Open a new figure window surf(dt, dy, Prices) % Draw the surface hold on % Add the current value for reference basemesh = mesh(dt, dy, 100000*ones(NumYields, NumTimes)); set(basemesh, 'facecolor', 'none'); set(basemesh, 'edgecolor', 'm'); set(gca, 'box', 'on'); dateaxis('x', 11); xlabel('Evaluation Date (YY Format)'); ylabel('Change in Yield'); zlabel('Portfolio Price'); hold off view(-25,25);

MATLAB® 3D графика позволяет вам визуализировать риск процентной ставки, испытанный портфелем связи в зависимости от времени. Принятая параллель этого примера переключает термин на нижний регистр структура, но это может так же позволить другим компонентам отличаться, такие как уровень и наклон.
blsdelta | blsgamma | blsprice | blsvega | bndconvy | bnddury | bndkrdur | bndprice | zbtprice | zero2disc | zero2fwd