- Estimate an AR(1)–Heston-Nandi model for every return series. Use arima for the mean part and embed a GJR-GARCH to approximate Heston-Nandi dynamics.
- Generate one-step-ahead forecasts of conditional mean and variance. Call forecast on each fitted model.
- Form the conditional covariance matrix. Combine the forecasted standard deviations with a residual-correlation matrix. Treat the residual correlation as constant and compute it once from the standardized innovations.
- Optimise the portfolio with the conditional moments. Feed the inputs into Portfolio, PortfolioCVaR, or any other optimiser.The optimiser itself hasn’t changed—only its inputs now reflect serial correlation and time-varying volatility.
- Re-run steps 1-4 at every rebalance date. That’s what makes the strategy dynamic.
Portfolio Optimization under serial correlation and conditional heteroscedasticity.
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello folks.
I'm trying to get optimized portfolio choice with assets which have serial correlation and conditional heteroscedasticity, not like in the Markowitz optimization assumption. In Markowitz world, only mean and variance matter. But in my situation I should consider the effect of serial correlation and conditional heteroscedasticity. In specific, I used Heston-Nandi(2000) M-GARCH(1,1) model for two stock index returns and two bond index returns.
How can I optimize my portfolio in this context? Is there anyone who can help me?
0 Commenti
Risposte (1)
TED MOSBY
il 16 Mag 2025
Modificato: TED MOSBY
il 16 Mag 2025
Hi,
You can follow the workflow below to optimize your portfolio which is dynamic instead of the static Markowitz setup:
An example of the workflow above:
% r is a T-by-N matrix of log returns (you have to make this from your
% prices csv)
spec = garch('GARCHLags',1,'ARCHLags',1); % Heston-Nandi ≈ GJR
model = arima('ARLags',1,'Variance',spec);
N = size(r,2);
mu = zeros(N,1);
sig2 = zeros(N,1);
for i = 1:N
mdl{i} = estimate(model, r(:,i)); % step 1
[mu(i),~,sig2(i)] = forecast(mdl{i}, 1, 'Y0', r(:,i)); % step 2
eps(:,i) = infer(mdl{i}, r(:,i));
end
R = corr(eps); % residual correlation
Sigma = diag(sqrt(sig2)) * R * diag(sqrt(sig2)); % step 3
P = Portfolio('AssetMean', mu, 'AssetCovar', Sigma, ...
'LowerBound', 0, 'Budget', 1);
w = estimateMaxSharpeRatio(P); % step 4
Hope this helps!
0 Commenti
Vedere anche
Categorie
Scopri di più su Portfolio Optimization and Asset Allocation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!