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

The image CNN needs its hedge: 0.82% monthly, -0.13% after 10bp

Indicators return 0.77% monthly gross versus the image CNN's 0.82%; 10bp costs push the FF8-hedged book to a 0.13% loss.

2026-10-26 · 8 min read · CNN-based Statistical Arbitrage · US equities and US equity ETFs

Reviewing: From pixels to profits: trading arbitrage portfolios based on image representations · Niklas Paluszkiewicz · Read it on openalex

Our backtest of this idea

Our automated quick test, not the paper's

Monthly RGB-CNN Stock-Minus-ETF Arbitrage: Top-500 Net-Performance Test

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

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

Run on a different market than the paper

No underlying-market substitution. The proposed implementation uses tradable US ETF hedge factors rather than claiming to replicate the study's eight-factor hedge specification.

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

This is not a replication of the paper (3)

  • The supplied excerpt does not establish the exact eight-factor construction or complete CNN training specification. The proposed ETF-factor implementation tests the image-based residual-ranking mechanism, not an exact replication of the reported eight-factor results.
  • The available history supports a post-2010 implementation with training and validation warm-up; equivalence to the study's full empirical period cannot be established from the supplied excerpt.
  • Historical stock-loan availability and borrow fees are unavailable, so short-side feasibility requires explicit assumptions and cost sensitivity analysis.

The figures below measure what we could run, not the paper's own method, so they are not evidence for or against its claim.

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

  • r_t^i = sum_{j=1}^{k} beta_j^i f_{j,t} + epsilon_{i,t}.: Retain the algebraic decomposition but define stock and factor inputs as adjusted total returns and ETF returns, not stock excess returns and French factors. (invalidates: Direct replication of Tables 2-4, 6-7, 15-19 and Figures 6-9 numerical results)
  • r_{i,t+1}^{Arb} = r_{i,t+1}^{stock} - beta_hat_{i,t}^T f_{t+1}.: Apply the same subtraction to executable next-session-open to next-rebalance-open holding returns. (invalidates: Direct replication of all reported monthly prediction-decile and H-L returns)
  • Baseline chronological split allocates 40% training, 10% validation and 50% testing of the author's full period, with no rolling re-estimation.: Use a trailing pre-evaluation development history, split chronologically into training and validation, with the configured interval reserved for testing; freeze models thereafter. (invalidates: Direct replication of the paper's baseline and temporal-stability numerical results)
  • The supplied text does not establish the technical-CNN epoch schedule as the baseline image-CNN schedule.: Explicitly prescribe a finite image-CNN training cap and early stopping as an implementation adaptation, without claiming it is the paper's baseline schedule. (invalidates: Exact replication of baseline image-model training and associated empirical returns)

2 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 -5.7%Jul 2024
Sharpe
-0.62
Total Return
-5.7%
Max Drawdown
-6.3%
CAGR
-1.6%
Volatility
2.5%
Beta vs SPY
-0.00
Trades
1,510

What the paper reports for its own strategy

  • rgb_three_months, FF8 hedge, H-L decile: 0.82% per month, sigma 2.93%, annualized Sharpe 0.97. Gross of costs, 09:2006-12:2022.
  • Same strategy, FF8 ex-post alpha: 0.73% per month (Newey-West t=2.96), gross, 09:2006-12:2022.
  • Same strategy net of costs (FF8 hedge as separate factor portfolios): 0.34% per month (annualized SR 0.41) at 5bp per trade, and -0.13% per month (SR -0.16) at 10bp. Borrowing, financing and market impact are excluded.
  • Same strategy with hypothetical FF8 factor contracts: 0.50% per month (SR 0.59) at 5bp stock / 5bp hedge, and 0.63% (SR 0.75) at 5bp / 1bp.
  • rgb_three_months with SP (S&P 500 value-weighted) hedge: 1.18% per month gross (SR 1.10), 1.01% at 5bp (SR 0.94), 0.84% at 10bp (SR 0.78). FF8 alpha 0.58% (t=2.54). Period 09:2006-12:2022.
  • rgb_one_month with ETF (SPY) hedge: 0.75% gross (SR 0.74), 0.55% at 5bp (SR 0.54), 0.35% at 10bp (SR 0.34).

The image CNN's 0.82% monthly return depends on a hedge that makes the trade lose money at 10bp. Paluszkiewicz has found a real residual signal in S&P 500 stocks. How much of the abstract's 0.97 Sharpe survives its own concessions is the question. The abstract acknowledges that conventional predictors explain part of the image-based performance and that profits depend on beta estimation and trading costs. It also reports positive alpha after controlling for those benchmarks.

The image spread beats a random forest using ordinary indicators by five basis points a month: 0.82% versus 0.77%, with Sharpes of 0.97 and 0.74. Controlling for both indicator portfolios leaves an FF8 alpha of 0.57% (t=2.29). That deserves credit, though it is one t-statistic near 2.3 for the best of eight cells. Trading the stocks and FF8 hedge at 10bp turns the 0.82% gross return into -0.13%.

What does the network see?

The trade follows the generalized pairs-trading approach of Avellaneda and Lee. Each stock gets a synthetic twin, a factor portfolio weighted by betas estimated with OLS over the previous four months of daily excess returns. Subtract the twin from the stock and the difference is the residual. In "From pixels to profits", the paper calls this position a factor-hedged arbitrage portfolio. A CNN ranks these portfolios by reading charts of their recent paths. If large residual moves partly reverse, their recent shape could help identify next month's outperformers. The intended source of profit is transitory idiosyncratic deviation, with systematic risk hedged away. The paper offers several possible sources: price pressure, omitted risk, firm news or estimation error.

The input is the new part. The author constructs three log cumulative return paths for every stock, assigning the stock to the red channel, its factor hedge to green and its residual to blue. Each daily level is ranked across stocks, placed in one of 30 quantile rows and drawn as a line. This produces a 30 by 60 pixel, three-channel image containing either one month or three months of daily observations. The images go into two small CNNs with 8/16 or 16/32 filters and 3x3 kernels. Of ten trained networks, the five with the best validation results are averaged. Their output is the probability that the stock's residual will beat the cross-sectional median next month.

Training happens once for the baseline model, using the first half of 1990 to 2022. There is no rolling re-estimation. Testing runs from 09:2006 to 12:2022. Every month, the strategy buys the top decile and shorts the bottom decile, hedging each leg at its average beta. The four hedge choices are CAPM, FF3, FF5 and FF8. FF8 adds momentum and short- and long-term reversal to FF5.

The three-month image paired with FF8 wins. Monthly decile returns rise from -0.42% to +0.40%, producing a gross long-short return of 0.82%. Its sigma is 2.93%, annualized Sharpe is 0.97 and FF8 alpha is 0.73% (t=2.96). A residual-reversal benchmark constructed the same way loses 0.15% with FF8; none of its hedge variants is significant. The 0.82% figure leads eight image and hedge combinations evaluated over the same test window. Results across the three-month row are steadier, ranging from 0.69% to 0.82%. The one-month row ranges from 0.21% to 0.69%.

Remove the hedge: 0.82% falls to 0.06%

The paper's most informative table leaves the stock positions unchanged and removes the FF8 hedge. Monthly return drops to 0.06%. Volatility climbs from 2.93% to 4.46%, while Sharpe falls from 0.97 to 0.05. FF8 alpha shrinks from 0.73% (t=2.96) to 0.05% (t=0.20).

The author takes this as evidence that the hedge works. The paper's claim that hedging improves gross risk-adjusted performance is right. For a trader, the implication is blunt: all the CNN's value resides in residual space. Running it means running a hedge book with a stock-selection overlay.

Beta estimation becomes a second signal. The paper shows just how much it contributes. With the FF8 setup otherwise unchanged, OLS using about two months of daily observations earns 1.01% (t=2.95). Thirteen-month OLS returns 0.50%. Welch's slope-winsorized betas produce 0.37%, and Vasicek shrinkage produces 0.39%. For the longer-window tests, the paper explicitly holds CNN predictions fixed: one-, two- and four-year OLS return 0.44%, 0.62% and 0.29%.

The same strategy ranges from 0.29% to 1.01% across both beta tables; even the longer windows with fixed CNN predictions range from 0.29% to 0.62%.

As the author observes, higher returns from the short window do not establish that its betas are more accurate. The tests establish the importance of hedging without establishing the quality of the estimated hedge. Figure 8 shows the noisiest estimator has the widest dispersion, yet it earns the most. Hedge error and signal appear to interact. We found no decomposition separating their contributions in the paper.

The random forest is close

The image CNN leads by five basis points in mean return and 0.23 in Sharpe. Both a random forest and a temporal CNN earn 0.77% monthly with an annualized Sharpe of 0.74. They use 48 handcrafted indicators drawn from the stock, hedge and residual series. Lower volatility accounts for most of the image model's advantage: 2.93% versus 3.60%. Adapting Jiang, Kelly and Xiu to a single-channel price chart produces 0.51%.

The positive alpha claimed against these benchmarks survives the test. Include both indicator portfolios in an FF8 regression and the image portfolio retains 0.57% a month at t=2.29. That result should count. It remains a t-statistic near 2.3 for the best of eight cells, evaluated on one fixed split against benchmarks constructed by the author. A linear model using 40-day stock and hedge returns and their ten-day changes also follows the CNN's rankings closely: mean Spearman correlation is 0.68 over 2011 to 2022.

The author gives his own result fair limits. Under FF8, a 1D-CNN using the same series earns -0.13% to 0.05%, including when its inputs are scaled like the images. The paper explicitly cautions that this "should not be interpreted as a general advantage of two-dimensional images over models applied directly to the underlying time series". Retraining also addresses some of the concern about a single split. From 02:2016 to 12:2022, the original model earns 0.60% with a Sharpe of 0.75. Retraining on overlapping and later samples produces 0.66% each; rank correlations with the original are 0.85 and 0.73.

Costs and the S&P 500 alternative: 17% hedge turnover versus 308%

Monthly one-way stock turnover is 157.7%. Building the FF8 hedge from separate factor portfolios adds 308.0%, without netting overlapping positions. Charge 5bp per trade and net return is 0.34%, with Sharpe 0.41. Charge 10bp and return falls to -0.13%, with Sharpe -0.16. Hypothetical factor contracts raise the result to 0.50% at 5bp on both legs, or 0.63% when hedge trades cost 1bp. The paper labels those contracts hypothetical and identifies availability as a constraint.

A better trade appears in the hedge-instrument tests in Section 4.5.1. Using a single value-weighted portfolio of S&P 500 constituents to hedge the three-month signal raises gross return to 1.18%, with Sharpe 1.10. Hedge turnover falls to 17.0%. At 10bp, the spread still earns 0.84% net, with Sharpe 0.78. Its FF8 alpha of 0.58% (t=2.54) means omitted factor exposure cannot explain the whole result. But FF8 controls reduce 1.18% gross to 0.58% alpha, leaving about half the gross return attributable to FF8 factor exposure. The paper concludes that this "underlines the importance of including other risk factors in the hedge portfolio."

Read the cost table carefully. Its SPY row uses the one-month configuration. The three-month SPY-hedged portfolio earns 0.56% gross, and its FF8 alpha is 0.08% (t=0.33). Borrow, financing, market impact, basis and roll costs are excluded by the author. Each leg contains roughly 50 equal-weighted large caps.

Our ETF-hedged adaptation lost money

We could not run the paper's eight-factor hedge. We substituted US ETFs, fitting SPY, IWM and the liquid Select Sector funds jointly with four-month daily OLS. The substitution changes the hedge and the residual presented to the CNN. Our run tests the image-ranking mechanism with a different hedge and says nothing directly about the reported FF8 results. We also could not establish the exact factor construction or every CNN training detail. Our network therefore approximates his.

Our available history permits only a post-2010 build. We cannot establish equivalence to the paper's period. The ensemble was trained once on 96 monthly cohorts with an 80/20 split, compared with the paper's 1990 to 2006 training half. Our universe consists of the yearly top 500 non-ADR stocks by capitalization. We lacked historical borrow availability and fees. Charging the short side no borrow fee flatters our result.

From November 2020 to July 2024, our total return was -5.65% and Sharpe was -0.62, net of commissions of $0.004 a share. These figures are ours. The nearest reported comparison in the paper is the one-month SPY-hedged book, which earns 0.75% monthly gross with a Sharpe of 0.74 over 2006 to 2022. Our return has the opposite sign. Differences in hedges, universes, training samples and evaluation windows mean this gap describes our setup and delivers no verdict on the paper.

We cannot fully account for the loss. The window difference is verified: our sample overlaps the paper's by about two years, with 2023 and 2024 entirely outside it. The paper's 2016 to 2022 subsample already returned less than its full test period, earning 0.60% monthly with Sharpe 0.75 versus 0.82% with Sharpe 0.97. That subsample Sharpe is no weaker than the 0.74 for the one-month SPY book used in our comparison. The hedge likely contributes to the difference, given the three-month ETF alpha of 0.08%. Our smaller, later training set likely also makes the ensemble noisier.

Collinearity is an untested candidate. Each stock is regressed on up to eleven collinear ETFs using roughly 84 observations, which could generate large offsetting betas and noisy residual images. Our risk caps reject formations and likely reduce exposure as well. Annualized volatility was 2.49%, compared with about 10% for the paper's spread (2.93% monthly). Commissions consume a few basis points per month, too little to reverse the sign. Fills recorded at the close instead of the specified next open could also matter, although the paper's masking test suggests little effect. None of these explanations clearly accounts for a weaker result becoming a negative one.

I would change my view of the images if a periodically retrained, SP-hedged version retained an FF8 alpha near its in-sample 0.58% beyond the paper's data ending in 2022.

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 development:
  Reconstruct each year's capitalization-ranked top-500 non-ADR stock screen.
  Select liquid SPY, IWM and qualifying sector ETF factors; freeze identities.

At each historical or evaluated month-end close:
  Recheck fixed-factor coverage and liquidity.
  Fit stock exposures jointly to ETF daily total returns:
    no-intercept OLS, trailing four calendar months, >=40 aligned observations.
  Exclude invalid fits, incomplete inputs and undefined comparator indicators.
  Freeze each stock's formation-date betas.
  Build 60-session cumulative log paths for stock, hedge and daily residual.
  Exclude nonpositive/nonfinite log arguments.
  Quantile-rasterize each channel into a 30-by-60 image using only that
    formation's eligible cross-section; retain pixel values 0 and 255.

Development:
  Collect 96 complete, fully matured monthly cohorts before evaluation.
  Label above-median next-month stock-minus-ETF open-to-open returns.
  Split chronologically 80%/20%; purge outcomes crossing cutoff boundaries.
  Train 10 independently seeded CNNs; select five by validation loss.
  Freeze the ensemble; remain in cash until development requirements hold.

Portfolio formation:
  Average selected models' above-median probabilities.
  Sort deterministically into 10 near-equal deciles.
  Allocate +100% of initial capital equally to the top stock decile,
    and -100% equally to the bottom stock decile.
  Set each ETF weight to minus the stock-weighted sum of estimated betas;
    aggregate identical ETF legs before orders and cost accounting.
  Reject the whole new formation if instrument caps, leverage limits,
    factor eligibility or required execution prices fail.

Specified execution and exit:
  Queue orders for the following session's adjusted open.
  Hold quantities fixed until the next monthly replacement; no intramonth stops.
  Liquidate at the final available session open without replacement.

The supplied platform execution metadata instead identifies daily MOC fills. The pseudocode describes the research specification; the truncated code does not resolve that execution discrepancy.