exponenta event banner

Хеджирование с использованием оптимизации портфеля CVaR

В этом примере показано, как моделировать две стратегии хеджирования с использованием оптимизации портфеля CVaR с помощью PortfolioCVaR объект. Во-первых, моделируется движение цены запаса с помощью gbm объект с simByEuler. Затем оптимизация портфеля CVaR используется для оценки эффективной границы портфелей для доходности на дату горизонта. Наконец, можно сравнить портфель CVaR с портфелем средних отклонений, чтобы продемонстрировать различия между этими двумя типами показателей риска.

Монте-Карло Моделирование сценариев активов

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

Определите профиль запаса.

% Price at time 0
Price_0 = 200;

% Drift (annualized)
Drift = 0.08;

% Volatility (annualized)
Vol = 0.4;

% Valuation date
Valuation = datetime(2012,1,1);

% Investment horizon date
Horizon = datetime(2013,1,1);

% Risk-free rate
RiskFreeRate = 0.03;

Моделирование ценовых движений запаса от даты оценки до даты горизонта с помощью gbm объект с simByEuler.

% Number of trials for the Monte Carlo simulation
NTRIALS = 100000;

% Length (in years) of the simulation
T = date2time(Valuation, Horizon, 1, 1);

% Number of periods per trial (approximately 100 periods per year)
NPERIODS = round(100*T);

% Length (in years) of each time step per period
dt = T/NPERIODS;

% Instantiate the gbm object
StockGBM = gbm(Drift, Vol, 'StartState', Price_0);

% Run the simulation
Paths = StockGBM.simByEuler(NPERIODS, 'NTRIALS', NTRIALS, ...
    'DeltaTime', dt, 'Antithetic', true);

Постройте график моделирования заготовки. Для эффективности постройте только некоторые сценарии.

plot(squeeze(Paths(:,:,1:500)));
title('Simulation of a Stock');
xlabel('Time');
ylabel('Price');

Figure contains an axes. The axes with title Simulation of a Stock contains 500 objects of type line.

Рассчитайте цены различных опционов пут с использованием модели Блэка-Шоулза с blsprice функция.

% Put option with strike at 50% of current underlying price
Strike50 = 0.50*Price_0;
[~, Put50] = blsprice(Price_0, Strike50, RiskFreeRate, T, Vol);

% Put option with strike at 75% of current underlying price
Strike75 = 0.75*Price_0;
[~, Put75] = blsprice(Price_0, Strike75, RiskFreeRate, T, Vol);

% Put option with strike at 90% of current underlying price
Strike90 = 0.90*Price_0;
[~, Put90] = blsprice(Price_0, Strike90, RiskFreeRate, T, Vol);

% Put option with strike at 95% of current underlying price
Strike95 = 0.95*Price_0; % Same as strike
[~, Put95] = blsprice(Price_0, Strike95, RiskFreeRate, T, Vol);

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

Price_T = squeeze(Paths(end, 1, :));

Создайте матрицу сценариев с использованием пяти стратегий. Первая стратегия - это стратегия только для запасов; остальные стратегии - это хеджирование акций опционами пут с различными уровнями цены страйка. Чтобы вычислить доходность на основе цен, полученных с помощью моделирования Монте-Карло для стратегии только для акций, разделите изменение цены акций. (Price_T - Price_0) по начальной цене Price_0. Чтобы рассчитать доходность акций с разными опционами пут, сначала вычислите «наблюдаемую цену» на дату горизонта, то есть цену акций с учетом приобретенного опциона пут. Если цена акций на дату горизонта меньше цены страйка, наблюдаемая цена является ценой страйка. В противном случае наблюдаемая цена является истинной ценой акций. Эта наблюдаемая цена представлена формулой

Наблюдаемая цена = max {PriceT, страйк}.

Затем можно вычислить «начальную стоимость» акции с опционом пут, который задается начальной ценой акции. Price_0 плюс цена опциона пут. Наконец, чтобы рассчитать возврат стратегий опциона пут, разделите наблюдаемую цену за вычетом начальной стоимости на начальную стоимость.

AssetScenarios = zeros(NTRIALS, 5);

% Strategy 1: Stock only
AssetScenarios(:, 1) = (Price_T - Price_0) ./ Price_0;

% Strategy 2: Put option cover at 50%
AssetScenarios(:, 2) = (max(Price_T, Strike50) - (Price_0 + Put50)) ./ ...
    (Price_0 + Put50);

% Strategy 2: Put option cover at 75%
AssetScenarios(:, 3) = (max(Price_T, Strike75) - (Price_0 + Put75)) ./ ...
    (Price_0 + Put75);

% Strategy 2: Put option cover at 90%
AssetScenarios(:, 4) = (max(Price_T, Strike90) - (Price_0 + Put90)) ./ ...
    (Price_0 + Put90);

% Strategy 2: Put option cover at 95%
AssetScenarios(:, 5) = (max(Price_T, Strike95) - (Price_0 + Put95)) ./ ...
    (Price_0 + Put95);

Веса портфеля, связанные с каждым из пяти ранее определенных активов, представляют собой процент от общей стоимости инвестиций в каждую стратегию. Например, рассмотрим портфель с весами [0.5 0 0.5 0]. Веса указывают на то, что лучшее распределение - инвестировать 50% в стратегию только акций, а оставшиеся 50% в опцион пут на уровне 75%.

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

% Create histogram
figure;

% Stock only
subplot(2,1,1);
histogram(AssetScenarios(:,1),'Normalization','probability')
title('Stock-Only Distribution')
xlabel('Return')
ylabel('Relative Probability')

% Put option cover
subplot(2,1,2);
histogram(AssetScenarios(:,2),'Normalization','probability')
title('Put Option at 95% Distribution')
xlabel('Return')
ylabel('Relative Probability')

Figure contains 2 axes. Axes 1 with title Stock-Only Distribution contains an object of type histogram. Axes 2 with title Put Option at 95% Distribution contains an object of type histogram.

Эффективная граница CVaR

Создать PortfolioCVaR с использованием AssetScenarios из моделирования.

p = PortfolioCVaR('Name','CVaR Portfolio Five Hedging Levels',...
   'AssetList',{'Stock','Hedge50','Hedge75','Hedge90','Hedge95'},...
   'Scenarios', AssetScenarios, 'LowerBound', 0, ...
   'Budget', 1, 'ProbabilityLevel', 0.95);

% Estimate the efficient frontier to obtain portfolio weights
pwgt = estimateFrontier(p);

% Plot the efficient frontier
figure;
plotFrontier(p, pwgt);

Figure contains an axes. The axes with title \bfCVaR Portfolio Five Hedging Levels contains an object of type line.

CVaR и эффективное граничное сравнение средней дисперсии

Создать Portfolio объект. Использовать AssetScenarios от моделирования для оценки моментов активов. Обратите внимание, что, в отличие от PortfolioCVaR для полного определения портфеля средних отклонений требуется только оценка моментов активов.

pmv = Portfolio('Name','Mean-Variance Portfolio Five Hedging Levels',...
   'AssetList',{'Stock','Hedge50','Hedge75','Hedge90','Hedge95'});
pmv = estimateAssetMoments(pmv, AssetScenarios);
pmv = setDefaultConstraints(pmv);

% Estimate the efficient frontier to obtain portfolio weights
pwgtmv = estimateFrontier(pmv);

% Plot the efficient frontier
figure;
plotFrontier(pmv, pwgtmv);

Figure contains an axes. The axes with title \bfMean-Variance Portfolio Five Hedging Levels contains an object of type line.

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

% Achievable levels of return
pretlimits = estimatePortReturn(p, estimateFrontierLimits(p));
TargetRet = mean(pretlimits); % Target half way up the frontier

Постройте график эффективного портфеля CVaR для возврата TargetRet на эффективной границе CVaR.

% Obtain risk level at target return
pwgtTarget = estimateFrontierByReturn(p,TargetRet); % CVaR efficient portfolio
priskTarget = estimatePortRisk(p,pwgtTarget);

% Plot point onto CVaR efficient frontier
figure;
plotFrontier(p,pwgt);
hold on
scatter(priskTarget,TargetRet,[],'filled');
hold off

Figure contains an axes. The axes with title \bfCVaR Portfolio Five Hedging Levels contains 2 objects of type line, scatter.

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

% Obtain the variance for the efficient CVaR portfolio
pmvretTarget = estimatePortReturn(pmv,pwgtTarget); % Should be TargetRet
pmvriskTarget = estimatePortRisk(pmv,pwgtTarget);  % Risk proxy is variance

% Plot efficient CVaR portfolio onto mean-variance frontier
figure;
plotFrontier(pmv,pwgtmv);
hold on
scatter(pmvriskTarget,pmvretTarget,[],'filled');
hold off

Figure contains an axes. The axes with title \bfMean-Variance Portfolio Five Hedging Levels contains 2 objects of type line, scatter.

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

% Obtain the mean-variance efficient portfolio at target return
pwgtmvTarget = estimateFrontierByReturn(pmv,TargetRet);

% Obtain the CVaR risk for the mean-variance efficient portfolio
pretTargetCVaR = estimatePortReturn(p,pwgtmvTarget); % Should be TargetRet
priskTargetCVaR = estimatePortRisk(p,pwgtmvTarget);  % Risk proxy is CVaR

% Plot mean-variance efficient portfolio onto the CVaR frontier
figure;
plotFrontier(p,pwgt);
hold on
scatter(priskTargetCVaR,pretTargetCVaR,[],'filled');
hold off

Figure contains an axes. The axes with title \bfCVaR Portfolio Five Hedging Levels contains 2 objects of type line, scatter.

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

Сравнение весов портфеля CVaR и средних отклонений

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

Постройте график весов, связанных с эффективной границей портфеля средних отклонений.

% Plot the mean-variance portfolio weights
figure;
area(pwgtmv');
legend(pmv.AssetList);
axis([1 10 0 1])
title('Mean-Variance Portfolio Weights Five Hedging Levels');
xlabel('Portfolios from Minimum(1) to Maximum(10) Return');
ylabel('Contribution of each Asset');

Figure contains an axes. The axes with title Mean-Variance Portfolio Weights Five Hedging Levels contains 5 objects of type area. These objects represent Stock, Hedge50, Hedge75, Hedge90, Hedge95.

Веса, связанные с портфелями средних отклонений по эффективному использованию границ, только две стратегии, 'Stock' и 'Hedge95'. Такое поведение является следствием корреляций между пятью активами в портфеле. Поскольку корреляции между активами близки к 1, стандартное отклонение портфеля является почти линейной комбинацией стандартного отклонения активов. Следовательно, поскольку активы с большей доходностью связаны с активами с большей дисперсией, в эффективной границе наблюдается линейная комбинация только активов с наименьшей и наибольшей доходностью.

Постройте график весов, связанных с эффективной границей портфеля CVaR.

% Plot the CVaR portfolio weights
figure;
area(pwgt');
legend(p.AssetList);
axis([1 10 0 1])
title('CVaR Portfolio Weights Five Hedging Levels');
xlabel('Portfolios from Minimum(1) to Maximum(10) Return');
ylabel('Contribution of each Asset');

Figure contains an axes. The axes with title CVaR Portfolio Weights Five Hedging Levels contains 5 objects of type area. These objects represent Stock, Hedge50, Hedge75, Hedge90, Hedge95.

Для обоих типов портфелей, среднего отклонения и CVaR, портфель с максимальной ожидаемой доходностью является тем, который распределяет весь вес стратегии только для запаса. Это имеет смысл, потому что опционы put не приобретаются, что переводится в большую доходность. Кроме того, портфель с минимальным отклонением одинаков для обоих показателей риска. Этот портфель - тот, который распределяет все на 'Hedge95' потому что эта стратегия больше всего ограничивает возможные потери. Реальные различия между двумя типами порфолио наблюдаются для уровней возврата между минимальным и максимальным. Там, в отличие от эффективных портфелей, полученных с использованием дисперсии в качестве показателя риска, веса портфелей CVaR варьируются между всеми пятью возможными стратегиями.

См. также

| | | | | | |

Связанные примеры

Подробнее

Внешние веб-сайты