QUANT / LAB · US EQUITIES

Can a CNN help select US stocks?

We compared CNN signals, momentum and simple holding using historical data. In this sample the daily CNN traded frequently and lagged equal-weight holding after assumed costs.

Exploratory study · fixed universe of 10 stocks · dataset not accepted for research. Results are not competition-account returns and do not establish future performance.

Results at a glance

The table shows medians across nine separately accounted windows. Each starts in cash and liquidates at the end; they do not form a continuous account. The final window has 20 trading days; the other eight have 58.

40% is the initial or rebalancing target; weights drift between rebalances. Equal exposure does not mean equal risk. Cash earns zero interest in the model.

Scroll the table horizontally to see drawdown and turnover.

MethodMedian window returnMedian maximum drawdownMedian cumulative one-way turnover
10-stock equal-weight holding5.30%4.35%2.00×
Top 3 by 20-day momentum-0.18%6.51%19.03×
Numeric CNN, daily ranking-4.11%9.68%37.60×
Numeric CNN, weekly ranking2.43%6.21%12.91×
Numeric CNN, shared labels-6.51%8.78%37.66×
Image CNN, shared labels-1.17%7.20%27.10×

Variation across nine windows

The lowest and highest window returns show the spread; medians are in the table above. The last window has 20 sessions, versus 58 for the others.

MethodLowest window returnHighest window returnWindow returns (chronological)
10-stock equal-weight holding-5.77%11.37%9.19% · -5.77% · 5.93% · 11.37% · 3.21% · 1.11% · 5.30% · 6.71% · 2.02%
Top 3 by 20-day momentum-5.49%10.56%2.35% · -5.49% · -0.90% · 10.56% · 5.42% · 3.42% · -0.18% · -0.96% · -2.13%
Numeric CNN, daily ranking-14.90%7.34%-8.88% · -14.90% · -0.61% · 7.34% · -8.23% · -4.11% · -6.54% · 4.27% · 2.92%
Numeric CNN, weekly ranking-5.93%6.88%2.43% · -2.83% · 1.21% · 6.88% · 4.38% · 5.36% · -5.93% · 5.76% · 0.13%
Numeric CNN, shared labels-13.98%3.50%2.37% · -9.28% · -6.51% · 3.50% · -8.81% · -13.98% · -8.07% · -2.87% · 1.67%
Image CNN, shared labels-10.66%6.66%-5.06% · -10.66% · -1.17% · 2.21% · 6.66% · -1.21% · -7.55% · 3.71% · -0.54%

A further comparison: targeting volatility

A separate exploratory run applies a 12% annualized ex-ante volatility target to weekly equal weight, top-three momentum and numeric CNN, capped at 100% equities. Risk uses the preceding 20 daily returns; signals at the close trade at the next open. At 0.2% one-way cost, median window returns were 2.26%, 0.73% and 1.38%; median realized annualized volatilities were 12.02%, 13.57% and 13.34%. Actual risk still differed and the sample was already studied.

Costs and turnover

Turnover is cumulative trading value divided by account equity. Frequent trading can make assumed costs more consequential.

10-stock equal-weight holding
2.00×
Top 3 by 20-day momentum
19.03×
Numeric CNN, daily ranking
37.60×
Numeric CNN, weekly ranking
12.91×
Numeric CNN, shared labels
37.66×
Image CNN, shared labels
27.10×

A one-way cost of 0.2% means deducting 0.2% of traded value on each buy or sell. This is a scenario, not an actual brokerage quote.

What we tested

We used daily data from January 2023 to October 2026. Models train on earlier data and are evaluated in nine later windows. Signals at the close use the next session's open as a fill approximation. Each model selects three of ten stocks daily or weekly; comparisons include ten-stock equal-weight holding and the top three by 20-day momentum.

A separate image and numeric comparison

The final two rows use identical training samples and labels with numerical or candlestick-image inputs. Architectures differ and training is small, so differences cannot be attributed to images alone. The existing 30% threshold produces four positive labels on most dates; portfolios still select three.

What the results do not establish

What comes next

Add dividends and historical membership, then repeat the volatility-target comparison on unseen data.

Read experiment notes ↗ · View model implementation ↗

Back to US equities →