AQAI QuantAI research lab for systematic strategies

Automated analysis

This analysis was drafted by our research engine and has not been checked by a human editor. It may contain errors. It separates the paper’s own results from our tests, and any figures called ours come from our own backtest.

Our automated analysisOur backtest

MINGLE's covariance swap carries most of the Sharpe gain

A joint factor-graph model on 300 stocks; the within-leaf degree tilt adds 0.076 Sharpe

2026-08-12 · 8 min read · US equities

Reviewing: Beyond Co-Movement: Locality by Exposures Enables a Joint Factor-Graph Framework for Portfolio Diversification · Sara Chehab, Giorgos Iacovides, Parisa Yazdanparast et al. · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Monthly MINGLE Exposure-Graph Diversification with Equal-Weight and Minimum-Variance Comparisons

Backtest period 2020-01-02 to 2026-07-31 · hypothetical, net of modelled costs

Why these figures are not the paper's (1)

Our own audit found this run does not follow the paper faithfully (13)

  • deviation left undescribed by the audit (invalidates: The paper's reported CAGR, Sharpe, Calmar, NMI, sector-alignment ratios, covariance-condition comparison, CutV eigenvector frequencies, transaction-cost results, and volatility-regime Sharpe ratios do not directly apply.)
  • deviation left undescribed by the audit (invalidates: The paper's monotonic performance ordering and reported CutV and Contagion Cut performance numbers do not directly predict the added equal-weight and minimum-variance variants.)
  • deviation left undescribed by the audit (invalidates: All paper-reported full-period performance, turnover implications, NMI, condition-number frequencies, and regime-conditional metrics are not direct replication targets.)
  • deviation left undescribed by the audit (invalidates: The paper's Calm, Elevated, and Crisis Sharpe ratios and regime-specific within-versus-between edge-weight ratios do not directly apply.)

9 further finding(s) are described in the note.

These are our findings about our own implementation, not criticisms of the paper. Read the figures below as a description of what we ran.

Jan 2020Total 143.1%Jul 2026
Sharpe
0.75
Total Return
143.1%
Max Drawdown
-40.3%
CAGR
14.5%
Volatility
29.1%
Beta vs SPY
1.02
Trades
22,873

What the paper reports for its own strategy

  • Contagion Cut (proposed): CAGR 21.0%, Sharpe 1.07, Calmar 0.611, Jan 2019-Mar 2026, 0 bps transaction costs
  • Contagion Cut: Sharpe 1.04 at 10 bps, 1.01 at 20 bps, 0.929 at 50 bps (CAGR 20.5%, 19.9%, 18.3%), Jan 2019-Mar 2026
  • Adaptive CutV on representation-induced covariance (proposed): CAGR 19.7%, Sharpe 0.994, Calmar 0.580 at 0 bps; Sharpe 0.883, CAGR 17.5% at 50 bps, Jan 2019-Mar 2026
  • Regime-conditional Sharpe for Contagion Cut: 3.32 Calm, 0.82 Elevated, -2.98 Crisis (VIX-classified, pooled daily returns, Jan 2019-Mar 2026)

The covariance swap drives most of MINGLE's improvement. The graph-based weighting rule contributes less.

Chehab, Iacovides, Yazdanparast and Mandic begin with a useful distinction. Two stocks that moved together last quarter may share a risk driver, or one may simply have had a bad quarter. Their portfolio tries to separate those cases.

The monthly solve

The input is a 300-name panel of daily log returns. It contains the 100 most actively traded 2017 constituents from each of the S&P 500, Nikkei 225 and STOXX 600, with Bloomberg prices converted to USD. Each estimate uses a two-year window and exponential weighting with omega = 0.997, equivalent to a one-year half-life. A single non-convex problem then estimates three objects jointly.

Those objects are a 300 by 6 factor-exposure matrix B, the 6 factor time series F, and a sparse similarity graph W linking the 300 stocks. The reconstruction term pushes BF toward the observed returns. A Dirichlet energy couples the graph and exposures, with lambda = 0.1. Every edge linking assets with dissimilar exposure vectors raises the objective.

From the graph's side, this coupling draws exposures together within neighbourhoods. From the exposures' side, it determines which edges remain. Three additional terms prevent collapse. An L1 penalty on W, set at alpha = 2.2, removes edges. A log-degree barrier at beta = 3.0 prevents isolated assets. The factor covariance receives an off-diagonal penalty of delta = 1.0 so that the six drivers do not duplicate one another, while B remains orthonormal. ADMM divides the optimization into a Stiefel projection, a proximal L1 step and a degree solve. The iterative Sylvester solve for B accounts for the O(p^3) cost per iteration.

The authors call the full construction MINGLE. Its defining feature is mutual regularisation across the two domains, rather than estimating a factor model and building a graph afterward.

The allocation is easier to picture. The representation produces a covariance, B Sigma_F B' plus a diagonal idiosyncratic block. Adaptive CutV takes that matrix through recursive spectral bipartitioning until it reaches 24 leaves. Within a leaf, each asset receives capital in inverse proportion to its weighted degree in that cluster. Hubs receive less and peripheral stocks receive more. This is the Contagion Cut. The portfolio is re-estimated monthly, held for the next month, long-only.

The proposed source of information is persistence in exposure similarity. Across the backtest, cluster assignments have temporal normalised mutual information of 0.768. On the S&P 500 subset, reordered by GICS membership, the learnt graph's within-cluster edge weights are 5.30x its between-cluster weights during calm markets. The corresponding ratio for absolute sample covariance is 2.42x. Under elevated volatility, the comparison is 4.49x against 1.64x.

The Sharpe ladder

From Jan 2019 to March 2026, with zero transaction costs, equal weight produced Sharpe 0.780 and 15.5% CAGR. Adaptive CutV using the sample covariance reached 0.860 and 17.3%. Feeding the same allocator the representation-induced covariance lifted those figures to 0.994 and 19.7%. The full Contagion Cut finished at 1.07 and 21.0%.

MVO and HRP both trailed equal weight in the same table. MVO recorded 0.364 and 5.86%, while HRP delivered 0.613 and 10.7%, against equal weight's 0.780. The paper attributes MVO's shortfall to estimation noise amplified through the sample covariance, the Markowitz curse introduced earlier. Its explanation for HRP is a locality measure that mixes systematic risk with idiosyncratic risk.

The PCA factor covariance is the revealing comparison. Under the same allocator, it returned Sharpe 0.788 and CAGR 15.8%, below the raw sample covariance at 0.860. Straight low-rank denoising harmed this spectral cut, so rank truncation alone cannot account for the joint objective's contribution.

The 0.21 Sharpe gap between sample-covariance CutV and the Contagion Cut separates cleanly. Replacing the covariance contributes 0.134. The within-leaf degree tilt supplies the other 0.076. Because the paper describes the third configuration as changing only the within-leaf weights, the latter increment belongs to the weighting rule. It is smaller in absolute terms.

At 50 bps, both gains contract by about two fifths. The covariance increment falls to 0.083 (0.800 to 0.883), and the tilt falls to 0.046 (0.883 to 0.929). We read that decay as turnover in the peripheral tilt, although the paper gives no turnover figure of any kind. The authors rank the effects in the same order. They say the Contagion Cut's further improvement shows graph topology adding value beyond the better-conditioned covariance, and identify improved conditioning in the induced covariance as the reason cuts favoured the optimal partitioning.

Across the backtest, the representation covariance is roughly two orders of magnitude better conditioned than the sample covariance. Adaptive CutV chooses the Fiedler vector in 85.9% of windows, which is 5.4x its frequency with the sample covariance. The wider eigengap produced by better conditioning keeps the allocator from cutting on high-index eigenvectors.

Graph effect or peripheral-stock tilt?

Inverse-degree weighting directs more capital toward assets with few strong neighbours. Applied to a learnt exposure graph, it therefore favours stocks whose systematic exposures resemble those of fewer peers. Table 2 contains seven strategies. None applies inverse-degree weights to a correlation-derived graph, leaving the comparison needed to distinguish this exposure graph from a generic inverse-degree tilt.

The authors address part of the denoising objection. Their factor-covariance result, Sharpe 0.788 versus 0.860 for raw sample covariance, shows that plain low-rank truncation is not the operative mechanism. The lambda = 0 ablation (p<0.001 at sigma^2 = 0.01) tests whether coupling contributes. Neither comparison is a degree tilt on a correlation graph. The benchmark set also lacks a shrinkage estimator. Since the authors identify conditioning as the larger rung's mechanism, this omission carries unusual weight. Running the same Adaptive CutV on a shrunk sample covariance would reveal how much of the 0.134 requires the joint objective.

The abstract's paired tests use 100 seeds of synthetic Gaussian noise added to raw returns at three levels. The market results have no significance test. Removing either the low-rank prior or the decorrelation term reduces Sharpe at p<0.001 throughout. For the coupling term itself, lambda = 0, significance is p<0.001 at sigma^2 = 0.01, p = 0.050 at 0.10, and p = 0.317 at 0.25. The authors acknowledge this directly, writing that mutual consistency alone might "not suffice against prevailing sampling noise". Its benefit fades as noise increases, making mutual regularisation a moderate-noise result.

Crisis regimes draw an equally candid concession. The Contagion Cut has VIX-conditioned Sharpes of 3.32 calm, 0.82 elevated, -2.98 crisis. Equal weight records 3.22 / 0.62 / -3.32, and sample-covariance CutV gives 3.12 / 0.61 / -3.28. During calm periods, the covariance-only version leads slightly, at 3.36 versus 3.32.

The authors write that the framework "does not fully mitigate Crisis risk". They locate its outperformance in calm and elevated regimes, where most capital compounds, and attribute the negative crisis result to the long-only constraint. The same section warns that holding k at 6 introduces artefacts during crises, precisely when returns load on fewer drivers. Their claim remains scoped. A 0.34 Sharpe advantage over equal weight during a drawdown amounts to being least-bad, rather than supplying diversification when it was needed.

Tuning leaves a separate question. The table caption says k, alpha and C were chosen with portfolio-level metrics, while lambda, delta and T were chosen with representation-level metrics. Jan 2019 to March 2026 is described as the held-out period, and the paper mentions calculating in-sample portfolio performance elsewhere, making a pre-2019 sample plausible. The source sample for those portfolio-level metrics is unspecified. If the backtest supplied them, the ladder is fitted.

The universe screen uses 2017 turnover, before the test period begins, and freezes the 300 stocks for the full window. The dataset paragraph does not explain the treatment of a delisted name. Meanwhile, the conclusion describes ADMM as scalable, an uneasy fit with an O(p^3) Sylvester solve per iteration at p = 300.

Our implementation

We reconstructed the Contagion Cut from the paper's description in one automated pass. Our test covers US large caps only, using the top 300 by capitalisation from 2 January 2020 to 31 July 2026. We rebalanced monthly at the close with six factors, alpha 2.2, lambda 0.1, delta 1.0, beta 3.0, omega 0.997, 24 leaves and inverse within-leaf degree weighting. The book was long-only and fully invested. We charged four tenths of a cent a share, subject to a $1 minimum and a 1% commission cap, with zero modelled slippage.

Four differences need to sit beside the results. Our universe covers one region, whereas the paper uses 300 stocks drawn from three indices and selected by 2017 turnover. We trained on adjusted closes; the paper uses close prices. Its text specifies only the within-leaf rule and leaves allocation across leaves to the cited CutV method. Equal 1/24 weights across leaves are therefore our choice. Finally, the hyperparameter row labels C = 24 as a recursive-cut count while describing it as the number of clusters. We interpreted this as 24 leaves obtained through 23 successful binary cuts.

The paper's zero-cost result is Sharpe 1.07 with 21.0% CAGR over Jan 2019 to March 2026. At 50 bps, those figures decline to 0.929 and 18.3%. Our run returned Sharpe 0.75, Calmar 0.36, and 143.10% in total from 2 January 2020 to 31 July 2026. Our 0.75 is 0.32 below their zero-cost headline of 1.07. Different universes, windows and leaf budgets mean the figures measure different things.

Our sample begins in January 2020, so the COVID drawdown arrives in its first quarter. The paper reports a crisis-conditioned Sharpe of -2.98 for this strategy. Our maximum drawdown was -40.33%, with 29.08% annualised volatility. A long-only portfolio confronted February and March 2020 almost immediately, helping explain why our Calmar 0.36 trails their 0.611. Zero modelled slippage favours our result in the opposite direction.

The strategy's distinctive element consumes turnover: a tilt toward peripheral names that adds only 0.046 Sharpe at 50 bps in the paper's table. The implementation choices described above are the first place to examine when comparing our weaker figures with theirs. This run is one automated pass on a substituted market, rather than a verdict on the authors' work.

We have previously asked whether correlation structure is stable enough to trade and found that lookback selection reversed the signal in one crisis of three (correlation geometry as a daily risk signal). This paper offers a constructive response. Its persistence evidence is its strongest contribution: NMI 0.768, alongside 5.30x within-cluster concentration among the S&P 500 stocks in calm markets.

A correlation graph with the same inverse-degree tilt would change my view of the graph contribution, as would a shrunk sample covariance passed through the same Adaptive CutV. If the Contagion Cut exceeded both by roughly the 0.076 it gains over equal-within-leaf weighting, the exposure graph would be earning its place. For now, the conditioning evidence supports the narrower claim: a jointly learnt low-rank covariance leads the spectral allocator to choose the Fiedler vector in 85.9% of windows.

How our backtest worked

The steps the code we ran actually executed, from its strategy card. Ours, not the paper's — it is one automated implementation of the idea, not the authors' own.

At the first available US trading day of each month:
1. Select the applicable-year top 300 capitalization-ranked STOCK records; exclude ADRs.
2. Retain only assets with complete adjusted-close history for the rolling two-year window.
3. Using information through the preceding trading-day close, compute daily adjusted log returns.
4. Apply exponential time weights with omega = 0.997.
5. Initialize six factors and exposures from the weighted SVD; initialize the graph with an RBF kernel on exposure distances.
6. Solve the joint non-convex MINGLE factor/graph objective by ADMM, logging all configured penalties, tolerances, step sizes, residuals, objective changes, iteration limits, and initialization sensitivity.
7. Construct the representation-induced covariance and run canonical Adaptive CutV until 23 successful binary cuts produce 24 leaves.
8. For each leaf l, assign 1/24 of capital. For asset i in that leaf, compute degree d_i = sum_j w_ij and allocate its leaf budget in proportion to 1/d_i. Treat any zero degree as a construction failure; do not insert an arbitrary floor.
9. Normalize to a fully invested, long-only portfolio with gross exposure 1.0 and execute market-on-close.
10. Hold until the next monthly rebalance. Deduct costs from traded notional after drifting prior weights to the rebalance close.

Equal-weight, minimum-variance, and sample-covariance neighborhood portfolios are diagnostic comparisons only and never generate executed positions.