Markowitz portfolio optimization experiments using some datasets from the French and Fama respository.

Read full text
Authors: Louie John Vallejo
Cited by: 0

Abstract

Datasets of asset returns come from the French and Fama repository. French, K. R.Data Library.Tuck School of Business, Dartmouth College.Available at: https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html Figure 1: Distribution of the components of the weight vectors in the optimal solution of ${(\tt \, P \, )}$ using the Fama and French 30 Industries dataset with time window equal to 24 months and risk aversion equal to 2. The left plot shows some descriptive statistics of the optimal solution using the Matlab's built-in {\tt quadprog} function while the second plot shows the same statistics using the generalized inverse of the covariance matrix. Figure 3: Realized, expected, and oracle returns per unit risk for the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The average realized, expected, and oracle returns per unit risk are 0.542, 0.758, and 7.426, respectively. Figure 4: Distribution of the components of the weight vectors in the original and perturbed programs using the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The perturbation is the difference of the out-of-sample vector of returns and the mean of returns from the 60-month window. Figure 5: Graph of the sample horizon of length $T$ (in months) versus the out-of-sample Sharpe ratio using the Fama and French 30 Industries dataset. The Markowitz optimal portfolio performs only comparably to the na\"ive $1/N$ allocation when the estimation window is shorter than 10 years. For $T < 30$, no Sharpe ratios are reported for Markowitz optimal portfolios because the optimization routine reached the maximum number of iterations and failed to converge. Figure 7: 2-Norm of the difference of the weight vectors in the original and perturbed programs using the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The perturbation is the difference of the out-of-sample vector of returns and the mean of returns from the 60-month window. The shaded strip $4.011 \pm 2.035$ is marked to indicate the mean $\pm$ standard deviation. The average value of the bound $\tau \cos \theta / (\gamma \lambda_{\rm min})$ is 12.612 while the average value of the bound $\tau/(\gamma \lambda_{\rm min})$ is 48.104. On the other hand, the average value of the Best and Grauer Bound is 86,661.757. Figure 8: 2-Norm of the difference of the weight vectors in the original and perturbed programs using the Fama and French 30 Industries dataset with time window equal to 24 months and risk aversion equal to 2. The perturbation is the difference of the out-of-sample vector of returns and the mean of returns form the 24-month window. The orange series uses the original (unshrunk) covariance matrix. It is set with the right $y$-axis and has average value equal to $6.027\times 10^9$. The blue series uses a covariance matrix with a $50\%$ shrinkage. It is set with the left $y$-axis and has average value equal to 0.354. Figure 9: 2-Norm of the difference of the weight vectors in the original and perturbed programs using the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The perturbation is the difference of the out-of-sample vector of returns and the mean of returns form the 60-month window. The blue series uses the original (unshrunk) covariance matrix and has average value equal to 4.011. The shrinkage level and average value of the magenta, black, and cyan series are $10\%$ and 0.820, $50\%$ and 0.303, and $90\%$ and 0.228, respectively. Figure 10: Realized, expected, and oracle returns per unit risk, using the budget and nonnegativity constraints for the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The average realized, expected, and oracle returns per unit risk are 0.312, 0.356, and 0.937, respectively. Figure 11: 2-Norm of the difference of the weight vectors in the original and perturbed programs, using the budget and nonnegativity constraints, for the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The perturbation is the difference of the out-of-sample vector of returns and the mean of returns from the 60-month window. The shaded strip $0.276 \pm 0.192$ is marked toindicate the mean $\pm$ standard deviation. Figure 13: Distribution of the components of and number of non-zero values in the weight vectors when applying the budget and nonnegativity constraints using the Fama and French 30 Industries dataset with time window equal to 60 months and risk aversion equal to 2. The plot displays values sampled at 30-month intervals to maintain a clear presentation. On average, a portfolio allocates to only four assets. Tables: Descriptive statistics of the perturbation vector and the resulting vector of optimal weights; Comparison of the Best and Grauer bound with the improved bound

Fields of Study & Subjects

Risk and Portfolio Optimization Financial Markets and Investment Strategies Financial Risk and Volatility Modeling

Publication details

Journal / source
Zenodo (CERN European Organization for Nuclear Research)
Publication date
13 January 2026
Language
EN