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

Eleven metaheuristics lose to logistic regression at 0.50

Validation Pareto fronts split on 208 days; the 209-day holdout erases the advantage over random search

2026-09-16 · 8 min read · US ETF exposure (SPY and cash/zero-exposure defensive allocation), with VIX index levels used as readable signals

Reviewing: Nature-inspired multi-objective artificial intelligence for short-horizon volatility-regime early warning and defensive asset allocation · Hamza Boukeffa, Selman Djeffal and Abdelhamid Ghoul · Read it on openalex

Our backtest of this idea

Our automated quick test, not the paper's

Calibrated Ridge-Logistic VIX Stress Defensive SPY Allocation

Backtest period 2020-01-01 to 2024-07-01 · 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 (14)

  • Quadratic penalty augmentation (invalidates: The paper's optimized Pareto sets, representative compromises, hypervolume, scalar validation loss rankings and optimized-policy holdout results do not directly apply.)
  • Exact 28-feature dictionary (invalidates: Paper feature-selection frequencies, optimized multivariate predictive results, VIX-ablation results and optimizer comparisons do not directly apply.)
  • Exact probability-to-exposure policy (invalidates: All paper optimized-policy returns, Sharpe ratios, drawdowns, turnover and mean-exposure figures do not directly apply.)
  • Full zero-to-one SPY implementation range (invalidates: All paper financial, turnover and mean-exposure results; buy-and-hold and fixed-80% benchmark comparability unless the same cap is deliberately imposed and disclosed.)

10 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 22.5%Jul 2024
Sharpe
0.89
Total Return
22.5%
Max Drawdown
-8.6%
CAGR
4.6%
Volatility
5.6%
Beta vs SPY
0.25
Trades
511

What the paper reports for its own strategy

  • Optimized policies, mean of the eleven metaheuristics on the untouched holdout (25 Apr 2019-21 Feb 2020, 5 bp per unit exposure change): balanced accuracy 0.678, sensitivity 0.577, F1 0.496, AUC 0.752, return 3.00%, Sharpe 0.514, max drawdown -6.57%, annualized vol 7.85%, turnover 17.98, mean exposure 0.700
  • Best optimized method by mean return (CS), 30 runs: balanced accuracy 0.693 +/- 0.026, AUC 0.763 +/- 0.019, return 5.67% +/- 2.53 (95% CI [4.80, 6.60]), Sharpe 0.933 +/- 0.458, max DD -5.78%
  • Best-run/representative-run figures (not representative of the method): POA balanced accuracy 0.724; CS return 12.02% with Sharpe 1.754 and max DD -3.83%; best single run of all 330 runs returns 12.02%
  • Holdout Brier scores 0.173-0.207 and expected calibration error 0.120-0.184 across methods (random-search control best: Brier 0.173, ECE 0.120)
  • Rolling-origin pooled means (5 origins x 10 runs, ~5-month blocks): returns 0.23%-1.21%, Sharpe 0.030-0.456, balanced accuracy 0.615-0.694, AUC 0.823-0.842
  • Alternative-label holdout performance (110 evaluations each): realized-volatility spike BA 0.796 +/- 0.032, AUC 0.880, return 3.44% +/- 3.19, Sharpe 0.615; illiquidity spike BA 0.807 +/- 0.047, AUC 0.898, return 5.04% +/- 2.63, Sharpe 0.874; composite stress BA 0.688 +/- 0.071, AUC 0.811, return 5.73% +/- 2.94, Sharpe 0.920

A ridge logistic with its decision threshold fixed at 0.50 beats eleven nature-inspired optimizers out of sample, despite each receiving 984 objective evaluations across 30 runs. Boukeffa, Djeffal and Ghoul publish the result plainly. Their abstract concedes that the fixed-0.50 ridge logistic matches or exceeds every optimized configuration. Ranking those same days by current VIX alone produces an AUC of 0.772. The abstract then reports better framework performance under realized-volatility, drawdown and illiquidity labels.

The trade is familiar. Volatility stress clusters. A calibrated probability for the next five days lets an investor reduce equity exposure before an episode and buy back afterward, sacrificing some upside for a shallower drawdown. The paper uses a precise label: whether VIX rises above its rolling 252-day 80th percentile within the following five trading days. Past VIX alone determines the threshold, while every predictor looks backward. The authors also disclose that six of the 28 candidate predictors derive from VIX itself, leaving the model free to exploit VIX persistence.

A candidate solution combines feature selection and policy settings in a single decision vector. It contains Twenty-eight continuous feature gates, with 4 to 12 features active, followed by eight controls: ridge penalty, classification threshold, calibration temperature, minimum exposure, a risk exponent mapping stress probability into de-risking intensity, an annualized volatility target, an exposure smoothing coefficient and a drawdown trigger. That makes Thirty-six dimensions in total.

The search keeps Seven objectives separate throughout: predictive loss, false-negative rate, calibration loss, feature ratio, temporal instability, max-drawdown loss and a financial inefficiency term. Eleven metaheuristics, PSO, ABC, GA, CS, BOA, WOA, POA, GWO, TLBO, DE and ACO, use population 24 for 40 iterations, with 30 runs each. A uniform random-search control receives the same 984-evaluation budget and samples candidates uniformly from the decision space. Trading costs are 5 basis points per unit of absolute exposure change.

Only one asset is involved. The authors use daily SPY and VIX from a public CSV: 1,298 raw days running from 2 January 2015 through 28 February 2020. After a 252-day warm-up, 1,042 observations remain. The chronological split contains 625 training days with 153 stress days, 208 validation days with 69 stress days, and a 209-day holdout touched once with 48 stress days.

Where does the separation go?

The algorithms separate sharply inside the space they optimize. Friedman chi-square reaches 206.53 for hypervolume and 226.74 for scalar validation loss. After Holm correction, 31 of 55 pairwise hypervolume comparisons survive, as do 39 of 55 loss comparisons. GWO has the best aggregate optimization rank at 3.929 and the lowest mean inverted generational distance, defined here as average distance to a pooled reference front, at 0.246. ACO records the largest mean hypervolume, 0.258, and the lowest mean validation loss, 0.1839.

Eight of the eleven methods beat random search on hypervolume. Ten of the eleven beat it on scalar validation loss. For the seven strongest searchers, Cliff's delta has a magnitude of at least 0.99, meaning that essentially every run beats every random-search run.

The advantage vanishes across the untouched 209 days. Mean holdout balanced accuracy over each method's 30 runs ranges from 0.662 for ACO to 0.697 for BOA. Within a method, run-to-run standard deviation ranges from 0.023 to 0.036. Between-method dispersion is therefore about as large as the noise within each method. After Holm correction, Zero of the 55 pairwise holdout AUC comparisons survive. The count is only 7 of 55 for balanced accuracy and 4 of 55 for Sharpe. No metaheuristic differs significantly from random search on balanced accuracy, AUC or Sharpe, and balanced-accuracy point differences fall between minus 0.020 and plus 0.016.

The direction also turns against the search. Mean best validation loss and mean holdout balanced accuracy have a correlation of r = 0.71. Since lower loss is preferred, methods fitting the validation block most aggressively generalize slightly worse. Random search averages 4.53% on the holdout across 30 runs, with 95% CI [3.70, 5.44]. Only CS beats it, at 5.67%. The representative random-search run also has the lowest Brier score at 0.173 and the lowest expected calibration error at 0.120. Random search selects 11.4 features on average, compared with 4 to 9 for the metaheuristics.

208 days against 36 knobs

The authors identify the direct cause, and their diagnosis is persuasive. Thirty-six dimensions are selected against 208 validation days containing only 69 positive events. Their parameter table shows how much freedom remains among solutions with comparable validation loss. Decision thresholds range from 0.294 to 0.663, minimum exposure from 0 to 0.131, volatility targets from 8% to 30%, and smoothing from 0 to 0.508.

Many policies can produce the same validation profile. The profile consequently carries little information into the next window. The authors cite White's reality check and Bailey and co-authors on backtest overfitting, treating the validation objective as a search criterion rather than evidence. That posture fits the result.

They also test a mechanical explanation and dismiss it. Threshold and temperature are tuned using training-only probabilities, while coefficients are subsequently refit on training plus validation. The refit shifts the probability scale. Re-anchoring the threshold so that it preserves the validation alarm rate raises mean holdout sensitivity by 0.04 to 0.08 and return by 0.06 to 1.22 percentage points. The effect is systematic, yet an order of magnitude too small to close the gap.

The baseline wins

Using all 28 predictors, a validation-selected penalty and a fixed 0.50 threshold, the ridge logistic reaches holdout balanced accuracy of 0.741, AUC of 0.777, return of 13.42%, Sharpe of 2.280 and max drawdown of minus 3.49%. Across the eleven optimized methods in Table 5, the mean is 0.678 balanced accuracy, 3.00% return, Sharpe 0.514 and minus 6.57% drawdown. CS, the best method by mean return, reaches 5.67%. Buy-and-hold SPY returns 12.00% over the same 209 days with Sharpe 1.118.

The authors give the necessary qualifications. The holdout covers a rising market with one late volatility episode. Optimized policies keep mean exposure near 0.700, so the defensive overlay sacrifices return by construction. The ridge baseline also takes its penalty from the validation block. Its advantage depends on the window.

Table 5 Panel B reports every reference strategy across the five rolling blocks. Every strategy loses money during the February 2018 block, where the ridge rule ranks among the worst. In the 2018-11 to 2019-04 block, the naive VIX-threshold rule earns 14.64%. The paper's text gives 15.72% for that block, while its own table gives 14.64%. A Sharpe of 2.280 across roughly ten months and 48 stress days remains a single observation.

Transfer is the failure here. The cost model is fine: five basis points per unit of exposure change on a SPY overlay whose turnover is about 18 over ten months is defensible.

Blame the label

Current VIX alone ranks the holdout days at AUC 0.772, above the optimized multivariate models at 0.756. Removing all six VIX-derived predictors lowers AUC only to 0.734. Price-path, volume, drawdown and liquidity variables therefore provide nearly all the remaining discriminatory content.

Table 4 Panel B reaches the same conclusion through feature retention. Across all 330 optimized models, the twelve most frequently selected predictors include 60-day SPY drawdown 73.3% of the time and 60-day volatility 65.8%. The three VIX-derived variables appearing in that top twelve are retained only 21.5% to 22.1% of the time.

Table 6 Panel C offers more encouraging results under alternative labels. For a forward drawdown-deepening target, the framework produces AUC 0.782 plus or minus 0.046, compared with 0.752 for the VIX rule. The illiquidity-spike result is 0.898 plus or minus 0.014 versus 0.873, and composite stress gives 0.811 plus or minus 0.030 versus 0.739. On a realized-volatility spike, the framework reaches 0.880 plus or minus 0.031 against 0.882.

The authors call three of these four cases clearly better than the univariate reference. They also report balanced accuracies between 0.708 and 0.807, above those achieved under the VIX-threshold label. Two margins remain within one run-to-run standard deviation.

I give these results less weight than the headline negative finding. Each variant was re-optimized, then evaluated on the same untouched holdout used to interpret the main result. The composite label has 194 test days, while the other four have 209. They do not provide a second out-of-sample test.

Our run, on a later window

We built the frozen version. Feature subset, ridge penalty, threshold, temperature and the five policy controls are all selected on pre-2020 data. The exposure rule then operates unchanged, reducing SPY weight when calibrated stress probability rises and realized risk deteriorates.

Our implementation has four parts. Exposure is e_min + (1 - e_min)(1 - p)^gamma. A volatility multiplier moves toward sigma-star using 20-day realized volatility. Exposure is capped at e_min once the 60-day SPY drawdown reaches d_cut. Finally, kappa smoothing is applied to the resulting weight.

The strategy trades Daily, market-on-close, holding SPY against cash from 1 January 2020 through 1 July 2024. Every fill incurs commissions of $0.0040 per share with a $1 minimum before any reported figure. Slippage is zero under the MOC auction convention, rather than omitted. Financing, market impact and taxes are not modelled.

Our run returns 22.53% in total over those four and a half years. Sharpe is 0.89, Sortino 1.20 and Calmar 0.54. Maximum drawdown is minus 8.64% on 5.63% annualized volatility. The chart above shows our run.

The paper's comparable figures cover its 209-day holdout from 25 April 2019 to 21 February 2020. Its mean optimized policy returns 3.00% with Sharpe 0.514, while the fixed-threshold ridge baseline returns 13.42% with Sharpe 2.280. Our total return is higher and our Sharpe lower than the paper's mean optimized policy. Against its ridge baseline, ours is lower on both measures.

The windows differ materially. Our period spans four and a half years and includes March 2020, the 2022 tightening and the 2023 banking stress. None appears in the paper's sample. We also cap SPY exposure at 50%, so the book captures at most half an SPY move even when the model calls for full exposure.

This was one automated pass built from the paper's description. The authors neither built nor reviewed it. The 50% SPY cap and frozen parameters are the two identifiable candidates where our result looks thin.

What would change my read?

One test would do it: the same protocol on a sample containing enough events for 36 dimensions, using purged cross-validation with embargoes across several assets, and showing metaheuristics beating an equal-budget random-search control on untouched data. The authors propose the same design in their limitations section as the natural next step.

Until that test exists, hypervolume deserves treatment as a diagnostic and nothing more. We made a similar argument when a matched-portfolio comparison separated on the model while the P&L did not (/articles/evar-beats-cvar-only-under-the-flexible-ica-model).

For production, the paper gives a clear starting point: a calibrated logistic using persistent risk-state features, a fixed threshold, and a composite or liquidity-based stress label in place of a VIX percentile. The seven-objective machinery can display the trade-offs. Expecting it to discover return goes beyond the evidence.

Our backtest stops at 2024-07-01, and everything after that date is deliberately left untouched so the same strategy can be checked out of sample later.

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.

1. Load adjusted SPY daily prices and non-tradeable VIX observations; require 252 causal warm-up observations.
2. At each date t, construct the 28 SPY/VIX predictors using observations dated no later than t.
3. On pre-extension development data:
   a. Define a stress event from whether VIX reaches its trailing 252-observation 80th-percentile threshold within the next 5 trading days.
   b. Purge forward labels crossing chronological boundaries.
   c. Select 4-12 predictors, fit an inverse-class-frequency-weighted ridge-logistic model, and standardize using training-only moments.
   d. Temperature-calibrate probabilities and select ridge, threshold, temperature, feature subset, and allocation controls using validation-only Pareto objectives.
4. Freeze all model and policy choices before the 2020-01-01 extension.
5. For each valid extension date t, estimate calibrated stress probability p_t.
6. Compute probability exposure:
      e_prob = e_min + (1-e_min) * (1-p_t)^gamma
7. Compute volatility multiplier:
      v_t = min(1, sigma_star / max(SPY_realized_volatility_20d_t, epsilon))
8. Set e_raw = clip(e_prob * v_t, e_min, 1). If the absolute 60-day SPY drawdown reaches d_cut, cap e_raw at e_min.
9. Smooth exposure:
      e_model = clip(kappa*e_previous + (1-kappa)*e_raw, e_min, 1)
10. Apply the platform's 50% SPY position cap; allocate the remainder to CASH. Report model and capped exposure separately where available.
11. At the close, submit an MOC rebalance when the exposure change exceeds the 0.5% default band. Date-t exposure governs the subsequent close-to-close return; if the required SPY close is missing, retain the prior position.
12. Never hold VIX. Deduct the platform-applied commissions from every fill.