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

Crypto sparse autoencoder baskets are 23% quieter than matched-K PCA

Raw same-day reversal still wins on Sharpe; our next-open US equity adaptation earned 0.26 Sharpe after commissions.

2026-10-30 · 7 min read · Sparse Factor Diversification / Cross-Sectional Mean Reversion · US equities

Reviewing: Sparse Autoencoders as Implicit Diversification Regularisers for Cross-Sectional Cryptocurrency Returns · Weijia Han and Lisha Qu · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Sparse Reconstruction Contrarian: Point-in-Time Equity Diversification Test

Backtest period 2020-01-01 to 2024-07-01 · hypothetical, net of modelled costs

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

Run on a different market than the paper

Use the explicitly studied secondary US-equity application, selecting the yearly top 200 US stocks by capitalization rather than reproducing the static S&P constituent sample. Sparse reconstruction and cross-sectional contrarian ranking require only return panels, so the diversification mechanism remains applicable; this tests a different universe and does not reproduce the reported cryptocurrency results.

The paper's own figures describe its universe and do not carry over to ours.

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

  • Paper equity panel uses a static early-2025 list and full-sample asset coverage.: Use annually refreshed capitalization-screened US stocks with prior-only return coverage, and verified screen availability. (invalidates: The paper's numerical equity volatility reduction and Sharpe comparisons are not forecasts or directly replicated outcomes.)
  • Use the latest eligible year-specific screen demonstrably available before selection and disclose any conservative lag.: Use only the calendar trading year's screen when demonstrably available before annual selection; otherwise fail the point-in-time claim and remain uninvested. (invalidates: A complete continuously invested point-in-time experiment cannot be claimed for years lacking verified current-year screen availability.)
  • Paper residual missing values are forward-filled for at most three consecutive days and headline rank-scale evaluation zero-fills longer gaps.: Do not forward-fill returns; use encoder-only placeholders, masked targets, observed-return trading eligibility, failed fills and unresolved valuation flags. (invalidates: Published headline rank-scale risk and return magnitudes do not directly transfer to this missing-data policy.)
  • The paper pairs day-t ranking with day-t+1 close-to-close returns under same-close entry.: Execute at the subsequent adjusted open, account in shares and simple monetary returns, and liquidate at the terminal allowed open. (invalidates: All published same-close rank-scale and raw-return portfolio performance magnitudes are reference observations rather than replication targets.)

5 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 26.0%Jul 2024
Sharpe
0.26
Total Return
26.0%
Max Drawdown
-41.0%
CAGR
5.3%
Volatility
22.5%
Beta vs SPY
0.17
Trades
159,274

What the paper reports for its own strategy

  • SAE K=64 contrarian quintile long-short, crypto static test split (within 2019-2024), rank-scale, pre-cost: annualised return +13.9, volatility 4.2, Sharpe +3.28 (rank-scale values for cross-method comparison only)
  • SAE K=64, crypto 5-fold walk-forward (795 test days), raw money returns, pre-cost: mean annualised Sharpe +2.26; long-short annualised volatility 20.0%
  • SAE K=64, crypto 5-fold walk-forward, rank-scale, pre-cost: realised volatility 4.1-5.7% per fold; Sharpe gap vs PCA +0.82±0.81 (p=0.088)
  • SAE K=128 (strict pre-fold selection), crypto five 248-day folds, rank-scale, pre-cost: Sharpe gap vs PCA +0.33 (4/5 folds, p=0.14)
  • SAE, S&P 500 equity 5-fold walk-forward (2015-2024 sample), pre-cost: Sharpe +0.80; realised volatility 7.5-9.9% per fold

A sparse autoencoder lowers the volatility of a one-day crypto reversal basket, while giving up Sharpe to the raw signal. Han and Qu report both results. They deserve credit for putting the disappointment in the abstract: the SAE "does not outperform a simple contrarian strategy on risk-adjusted return." They argue that sparse coding nevertheless has a role in diversification.

I buy the comparison with PCA. The case against a shrunk-covariance overlay on plain reversal, the benchmark a risk desk would reach for, is weaker. Execution is another limit: the paper enters positions at the very close used to form the signal, a price the strategy could not obtain.

What gets traded?

The main sample contains 433 Binance USDT pairs across 1,988 days from 2019 to 2024. The authors also examine 200 S&P 500 names from 2015 to 2024. Both start with daily cross-sectional returns.

The model receives a transformed version of that cross-section. Each day's log returns are winsorised at 1%/99%, then ranked. After clipping to [0.01, 0.99], the ranks pass through an inverse-normal map. A tied-weight autoencoder compresses this vector and reconstructs it: a ReLU encoder produces K latent codes, and a linear decoder maps them back to N assets. An ℓ1 penalty encourages sparse codes. Across five seeds, the Hoyer index is 0.497 with the penalty and 0.303 without it. The loss masks missing returns so the model does not learn patterns of missingness.

Today's reconstructed return supplies the trading score. The lowest-scoring quintile goes long and the highest goes short, with equal weights and a holding period covering the next close-to-close return. Short-horizon reversal is the intended source of profit. The naive contrarian draws on the same source by ranking raw same-day returns; the autoencoder changes the membership of the quintiles. The authors interpret the outcome as consistent with the ℓ1 penalty drawing basket members from less correlated return directions.

Execution limits every figure that follows. Entry occurs at the same close that generated the signal. As the authors write: "Because this trade is not executable in practice, we interpret the results as signal evidence rather than as a tradable backtest." All paper figures below are pre-cost. The authors also restrict the validity of the rank-scale figures to comparisons between methods.

The volatility result survives strict selection

The confirmatory design is clean. An 18-configuration grid was searched again using the first 748 days, selecting K=128 and λ=0.1. Evaluation then covered five 248-day folds beyond that window. Across all five folds, SAE rank-scale long-short volatility was 20-26% below matched-K PCA, averaging 23% lower. The Sharpe advantage over PCA was +0.33, positive in 4 of 5 folds, with p=0.14. That stricter test supports the risk reduction. It leaves the return advantage unproven.

Most of the detailed analysis uses K=64. The authors call those results exploratory because the selection window overlapped the walk-forward test windows. In the static split, the SAE earns +13.9 with volatility of 4.2 and a Sharpe of +3.28. PCA earns +18.1 with volatility of 6.8 and a Sharpe of +2.67. The SAE earns less. The denominator supplies its entire Sharpe advantage. Walk-forward volatility in money units falls from PCA's 27.3% to the SAE's 20.0%.

The mechanism analysis is the paper's strongest work. Within SAE long baskets, mean pairwise correlation is 0.008, compared with 0.039 for PCA (p<0.001, 368 rebalance days). When measured without leakage over a trailing 60-day window, it averages -0.033 and remains negative in all 10 folds of the ten-fold design. Within-basket covariance accounts for 99.5% of the SAE-PCA difference in the variance decomposition.

The names themselves are riskier. SAE holdings have idiosyncratic volatility 2.7pp above PCA's, offsetting 35.6% of the reduction. Picking low-vol coins cannot explain this result.

The effect also looks tied to ReLU-plus-ℓ1 coding. Across λ values from 1e-4 to 5e-2, long-basket correlation falls to 0.0066-0.0108 from 0.0328 for the dense autoencoder, even as reconstruction MSE barely changes (1.043 to 1.047). Increasing K erodes the volatility advantage over PCA: it falls from 32% at K=32 to 17% at K=433.

A harder comparator: Ledoit-Wolf

PCA sets a forgiving benchmark for a claim about volatility. The authors themselves make the more demanding comparison, applying a Ledoit-Wolf minimum-variance overlay to the naive contrarian quintiles with a trailing 60-day covariance estimate.

In crypto, that overlay brings the naive book's volatility to 5.60%, versus 4.85% for the SAE. Roughly 73% of the gap disappears. The residual difference favours the SAE in four of five folds, with p=0.029 one-sided and 0.057 two-sided. The authors decline to call the remainder a separate mechanism. That restraint is appropriate.

The equity overlay wins outright: 6.2% volatility versus 8.6% for the SAE, lower in all five folds.

Sharpe makes the comparison harsher. On the rank scale, the naive contrarian beats the SAE by 2.91 (95% CI -4.40 to -1.34). Its advantage in money units is 2.48, with Sharpe of 4.74 versus 2.26. The SAE leads in 0 of 5 folds, with p=0.009. In equities, SAE Sharpe is +0.80 against +1.46 for the naive book; it also trails PCA by 0.20 (p=0.160).

Relative to PCA, the SAE still reduces equity volatility by 10-19% per fold. But an equity desk that already uses a shrinkage estimator has little reason to prefer it on these results. The paper's own figures give the simpler tool lower volatility and the raw signal higher returns.

The codes do not keep their identities

Interpretability fares poorly. To compare decoder columns across seeds, the authors match them using Hungarian assignment. Mean matched cosine is 0.13, barely above the 0.117±0.002 for random dictionaries. Even the best of 3,200 factor pairs reaches only 0.23. Llama-3.1-8B assigns labels to SAE, PCA, dense and random-projection factors with almost indistinguishable confidence (0.81-0.82).

The authors disclose these results and claim no monosemanticity. I take a narrower lesson from them. The portfolio effect persists in all 25 fold-by-seed cells, yet the individual factors scarcely improve on random matching. Diversification therefore comes from the way sparse coding forms baskets. A named code should not be expected to return after retraining, although the authors leave open the possibility of meaningful features within a single run.

Our next-open US equity adaptation

We could not trade the crypto panel. We instead adapted the method to the paper's secondary market, changing the universe to the top 200 US stocks by capitalization. We re-selected the stocks annually using screens available before selection and excluded ADRs. This replaces the paper's static early-2025 S&P list, which the authors acknowledge exposes their results to survivorship.

We retained the transform, tied-weight architecture and quintile rule. In each fold, validation MSE across five seeds selected K from {32, 64, 128} and λ from {0.001, 0.01, 0.1}. Execution changed. We specified fills at the t+1 adjusted open after setting targets at close t, with commissions of $0.004 a share and a $1 minimum.

Our run earned a Sharpe of 0.26 net of commissions over 2020-01-01 to 2024-07-01. It recorded 22.45% volatility and a maximum drawdown of -41% across 159,274 trades. The paper reports an equity SAE walk-forward Sharpe of +0.80, making ours about a third of theirs. These figures measure different things. Their result is pre-cost, enters at the signal close, uses a survivor list and apparently runs on the rank scale. Ours is a share-based money NAV specified to trade at the open.

Two differences follow directly from those setups. The paper captures any reversal from the signal close to the next open; our fills cannot capture it. And with a profit factor near 1.02 and a 47.08% win rate, our daily-replaced book has little capacity to absorb commissions.

The universe substitution likely works in the same direction. A contrarian buying recent losers from a panel known to survive is buying stocks that recovered. Scale probably contributes as well. The paper's per-fold equity volatilities of 7.5-9.9% resemble rank-scale quantities, while its crypto volatility figures rise from 4.1-5.7% on the rank scale to 20.0% in money.

Two further explanations remain tentative. Our window is heavily weighted toward 2020 and 2022. Flat periods associated with our checks of data provenance could also depress the annualised figure. We have yet to confirm whether the fills occurred at the open or the close.

We ran neither a matched PCA comparison nor an overlay comparison, so this run cannot assess the paper's central claim. It is a single automated attempt, and its weakness directs attention to our setup first. It does establish that this SAE book, specified for open execution after commissions, ran at 22.45% volatility with a profit factor near 1.02.

What would change my view?

Han and Qu show that a sparse bottleneck reduces reversal-basket volatility against matched-K PCA, including under strict re-selection. The evidence explaining that reduction through decorrelation comes from the exploratory K=64 runs. I would change my view if decorrelation survived next-open execution against a Ledoit-Wolf overlay on the same executable naive signal. Until that comparison is run, the overlay is the cheaper experiment. On the paper's equity figures, it is also the quieter book.

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.

Before each calendar year:
  Verify that the current-year capitalization screen was available before selection.
  Exclude ADRs; require at least 126 observed returns over 252 prior sessions.
  Select exactly 200 stocks by capitalization, breaking ties by symbol_key.
  Remain flat if provenance or candidate-count requirements fail.

At each admissible fold:
  Rebuild historical coordinates for the annual identities using observed data only.
  End fitting and validation no later than the previous calendar month-end.
  Use expanding fitting history of at least 756 retained sessions,
    followed by 126 validation sessions; enforce monthly minimum fit spacing.
  Form consecutive-session adjusted-close log returns; never forward-fill.
  Winsorize each observed cross-section at 1%/99%; average-rank and
    inverse-normal transform ranks clipped to [0.01, 0.99].
  Mask unavailable targets; use zero placeholders only for encoder inputs.
  For every K, lambda, and seed, train a tied-weight ReLU autoencoder
    with full-panel Adam steps and unit-norm dictionary projection.
  Retain each candidate's earliest minimum-validation-MSE checkpoint.
  Select K/lambda by mean validation MSE across all five seeds;
    break ties by smaller K, then smaller lambda.
  Freeze each seed's separate model for up to 126 test sessions.

After each test-session close t:
  Require at least 50 observed current returns; otherwise queue flat targets.
  Rank eligible finite reconstructed scores ascending, then symbol_key.
  q = floor(eligible_count / 5).
  Set bottom-q weights to +1/q and top-q weights to -1/q; all others zero.
  Do not rank residuals or combine seed signals.

Specified execution and accounting:
  Execute queued targets at adjusted open t+1 against drifted actual holdings.
  Size fractional shares using observed pre-trade NAV and adjusted opens.
  Apply position limits and the initial-capital-based leverage guard.
  Skip unavailable fills without substitution; suspend new exposure if NAV
    cannot be fully observed, and flag incomplete valuation intervals.
  Replace targets daily; measure actual share-based open-to-open NAV returns.
  At the final permitted open, suppress entries and attempt liquidation.

The supplied cost record instead labels execution as MOC. The algorithm above describes the explicit strategy specification; actual execution fidelity requires blotter verification.