TL;DR
SQTS v4 is the fourth generation of my quantitative research framework. Phase 1, baseline B, is this strategy: 50 stocks, monthly-rebalanced, selected via an industry-rotation layer. Every month I score 30 SWS Level-1 industries on three factors (prosperity, momentum, crowding), pick the top few, then equal-weight 50 stocks within them. Paper trading has run for 47 days. NAV +3.59%, benchmark (HS300) +2.44%, TE 0.57%, NAV correlation 0.999.
It isn't some earth-shattering alpha. It's a baseline I can read, explain, and sit through a drawdown with. Every more complex variant I build later will have to justify itself against this thing first.
Why start with something this simple
My first law of quantitative research, learned the hard way:
A 7% annualized that you can reliably reproduce will always beat a 15% that only exists in a notebook.
Industry rotation is the oldest, least sexy, and most robust of the monthly A-share strategy flavors. It sidesteps two of the retail quant's graveyards:
- Idiosyncratic single-stock risk. 50 stocks spread across several industries; a single blow-up is diluted to 2%.
- Execution cost from high-frequency signals. Monthly rebalance, manageable turnover, honest 23bp round-trip assumption.
Together these two properties mean: even if the alpha is thin, it's psychologically easy to hold. For a new system in its first 12 months, this matters more than two extra points of CAGR.
The Combo-Equity Score — three factors
I assign each SWS Level-1 industry a composite score combo_eq between 0 and 1, equal-weighted across three factors:
1. Prosperity
Recent 3-6 month trend in EPS revisions and the percentile rank of forward consensus growth. Core idea: analysts aren't prophets, but they're the first people to see data change. If an industry keeps getting its earnings revised up for several months, something real is usually inflecting — it's rarely just noise.
2. Momentum
A robust weighted combination of 1M / 3M / 6M log returns on the industry index. Not a single lookback, three windows. This is the most "boring" factor and also the most effective — trend is just the vote count for whatever narrative the market is currently subscribing to. Ignoring momentum means fighting the weight of money on the other side. In A-shares, that's expensive.
3. Crowding
Percentile rank of turnover and trading volume ratio over the trailing 12 months. This is a penalty term: the higher the percentile, the more we subtract. Its job is to pull you back a step when prosperity and momentum are both screaming at the same hot industry. New energy in 2021, AI in 2023, low-altitude economy in 2025 — three times I almost chased, and it was this factor that held me back.
Backtest setup
| Item | Configuration |
|---|---|
| In-sample (IS) | 2016-01 through 2019-12 |
| Out-of-sample (OOS) | 2020-01 through 2026-04 |
| Trailing 4Y sample | 2022-01 through 2026-04 |
| Rebalance frequency | First trading day of each month |
| Position count | 50 stocks (equal-weight within industries × equal-weight industries) |
| Trading cost | 23bp per side (commission + stamp duty + a slippage buffer) |
| Benchmark | CSI 300 Total Return |
Deliberately conservative choices:
- 23bp per side is harsher than broker default — retail accounts eat more slippage than institutional datasets suggest.
- IS intentionally ends at 2019-12. The 2020-2024 period saw at least one full structural reversal for every factor, reserved for honest OOS testing.
- Trailing 4Y is tracked separately — post-2022 A-share rotation dynamics differ noticeably from 2016-2020. I want to know whether the strategy still works in today's market.
Paper trading results
Running in paper trading since early 2026-02. After 47 trading days:
| Metric | Strategy | Benchmark (HS300) |
|---|---|---|
| Cumulative return | +3.59% | +2.44% |
| Active return | +1.15pp | |
| Tracking error (annualized) | 0.57% | |
| NAV correlation | 0.999 | |
| Max drawdown | −0.8% | −1.9% |
The TE of 0.57% is suspiciously small — small enough that I'm not sure this is really an "industry rotation" strategy anymore, rather than a "slightly tilted index enhancement." I'm still thinking about this. If true, the alpha source is mostly spillover from prosperity in single-stock selection, not industry allocation itself. Next version I'll run a Brinson-Fachler attribution to separate "industry allocation" from "within-industry selection."
Known limitations
- 47 days is statistically meaningless. +1.15pp could be pure luck. I need at least one full bull-bear cycle (3-5 years) before claiming anything is "validated."
- Monthly is slow for A-shares. Rotation cycles sometimes run in weeks. Slow rebalance means arriving late to an industry's launch phase.
- Prosperity depends on analyst consensus data, which is thin for some smaller / thematic industries (no coverage = unreliable score).
- Crowding is the factor I'm least confident in. Currently just turnover + volume percentile. Doesn't yet include margin balance, northbound flows, ETF creation/redemption — finer-grained crowding signals.
What I want to do in the next few months
- Finish the TE attribution — find out if alpha is industry allocation or within-industry selection.
- Enrich the crowding factor — at minimum add margin balance percentile and northbound flow.
- Try a semi-monthly version (rebalance on the 1st and 15th trading day) — see the turnover / alpha tradeoff.
- When I hit 90 days of paper trading, write a full "first quarter" retrospective.
This post is written for the me of six months from now — the one trying to remember why past-me thought this baseline was worth betting on. If you've read this far, you also enjoy "doing one slow thing carefully." Find me on github and let's talk.