Этот пример использует функции оценки связи 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