Covariance matrix filtering and portfolio optimisation: the Average Oracle vs Non-Linear Shrinkage and all the variants of DCC-NLS

ArXiv ID: 2309.17219 “View on arXiv”

Authors: Unknown

Abstract

The Average Oracle, a simple and very fast covariance filtering method, is shown to yield superior Sharpe ratios than the current state-of-the-art (and complex) methods, Dynamic Conditional Covariance coupled to Non-Linear Shrinkage (DCC+NLS). We pit all the known variants of DCC+NLS (quadratic shrinkage, gross-leverage or turnover limitations, and factor-augmented NLS) against the Average Oracle in large-scale randomized experiments. We find generically that while some variants of DCC+NLS sometimes yield the lowest average realized volatility, albeit with a small improvement, their excessive gross leverage and investment concentration, and their 10-time larger turnover contribute to smaller average portfolio returns, which mechanically result in smaller realized Sharpe ratios than the Average Oracle. We also provide simple analytical arguments about the origin of the advantage of the Average Oracle over NLS in a changing world.

Keywords: Average Oracle, Covariance Filtering, Dynamic Conditional Covariance (DCC), Non-Linear Shrinkage, Portfolio Optimization, Equities

Complexity vs Empirical Score

  • Math Complexity: 6.0/10
  • Empirical Rigor: 8.5/10
  • Quadrant: Holy Grail
  • Why: The paper employs advanced statistical methods (DCC+NLS, eigenvalue filtering) with analytical arguments about covariance evolution, indicating moderate-to-high math complexity. It demonstrates high empirical rigor through extensive randomized experiments (10,000 simulations), robust performance metrics (Sharpe ratios, turnover, gross leverage), and careful data handling (top-cap universe, transaction costs, bootstrap confidence intervals).
  flowchart TD
    A["Research Goal<br>Determine if simple Average Oracle<br>outperforms complex DCC variants"] --> B["Data Input<br>Large-scale randomized experiments<br>Equities datasets"]
    
    B --> C["Methodology: Methods Compared"]
    C --> C1["Average Oracle<br>Fast Covariance Filtering"]
    C --> C2["DCC-NLS Variants<br>Quadratic Shrinkage,<br>Gross Leverage, Factors"]
    
    C1 & C2 --> D["Computational Process<br>Portfolio Optimization & Backtesting"]
    D --> E["Key Findings / Outcomes"]
    
    E --> F["Performance Metrics"]
    F --> F1["Realized Volatility: DCC-NLS slightly lower"]
    F --> F2["Gross Leverage: DCC-NLS excessive"]
    F --> F3["Turnover: DCC-NLS 10x higher"]
    F --> F4["Portfolio Return: DCC-NLS lower"]
    
    E --> G["Conclusion"]
    G --> H["Average Oracle yields<br>superior Sharpe ratios"]