China A-share prediction: the honest numbers and why it's hard
We score ~39% directional accuracy on China A-shares on an early, growing sample — below our US benchmark. Here's the honest reason: retail flow, ±10% price limits, and policy.

I'll start with the number I'd most like to hide. Across roughly 181 verified predictions on China A-shares — the mainland boards in Shanghai and Shenzhen — our model has landed about 39% directional accuracy. That is a little below even (50%). Worth saying up front: this is an early and still-growing sample, and the model retrains as more predictions verify, so the honest number should firm up over time. Every one of those calls sits in public at /predictions, the losing ones included, because publishing only the wins is the exact thing this company exists to refuse.
For context, the same model scores roughly 54% directional accuracy on US large caps across about 830 verified predictions, and about 46% blended across all 2,248 verified calls we've logged. So A-shares aren't noise around our average — they sit well under it. This is one of our lower market numbers so far, and rather than quietly drop it, I'd rather explain honestly why it's harder here.
Our edge is technical continuation, and the A-share market truncates it
Most of our features are price-and-volume momentum: the model reads how a stock has been trading and extrapolates the near-term tendency. That assumption — that a real move, once underway, keeps going long enough to be readable — is precisely what the mainland market structure attacks. Four features of these markets fight a continuation model directly.
Order flow is overwhelmingly retail. A-share turnover is dominated by individual investors — a share commonly cited above 80% of daily volume, far higher than the institution-led US tape. Retail-heavy flow is noisier and more sentiment-driven on short horizons. The technical patterns my model is trained to detect are weaker signals when the marginal trader is reacting to a social-media rumour or a policy headline rather than to the price history the model is reading.
The "national team" intervenes. China's state-backed stabilization funds — the so-called national team — step in to support prices during stress. That is a large, price-insensitive flow that responds to a policy objective, not to momentum, valuation, or the tape. A model trained to read market-driven supply and demand is, in those windows, reading a market a state actor is deliberately leaning on. The distortion never shows up on the chart and is lethal to a continuation model.
±10% daily price limits cap and smear the signal. Most mainland stocks can move at most 10% up or down in a session before trading halts at the limit. When real information would have driven a 25% repricing, the move gets truncated on day one and dribbles out across several sessions — or gaps straight to the next limit with no tradable continuity in between. The clean, continuous follow-through my features are built to read is mechanically chopped into pieces and delayed. The signal is real; the market just won't let it express itself the way the model expects.
Policy and capital controls dominate sentiment. Top-down policy signals, regulatory campaigns, and capital controls move these markets more than any earnings line does, and they arrive as step-changes the price history simply doesn't foreshadow. Layer T+1 settlement on top — you can't sell a position the same day you buy it — and the short-horizon behaviour the model assumes is further constrained. My features see the past; here, the past routinely fails to contain the next move.
Why I'm not faking confidence to cover it
The easy move would be to bury the hit rate and keep publishing calls, or to drop A-shares and pretend we never tried. Plenty of tools do exactly that — I wrote about the incentives in why most AI stock-picking tools are lying. The dishonest version of this business is far more profitable. I'm deliberately running the other one.
A slightly-below-even number tells me something real and specific: our feature set is mismatched to this regime, not that the market is unbeatable. Beating A-shares probably requires inputs we don't yet have — policy-event tagging, flow and intervention signals, limit-aware modelling that treats a capped move as truncated rather than finished — rather than more momentum features stacked on a market that truncates momentum by design. That's an honest research problem, and it's a different model than the one we ship today. You can read exactly how the current one is built, and what it does and doesn't look at, on our methodology page.
Here's the practical takeaway, stated plainly: on China A-shares, treat our output as weak. We label every call Bullish, Neutral, or Bearish — never as instructions — and on this market the confidence behind that label is low. A tool that can't tell you where it's bad isn't a research tool; it's marketing wearing a lab coat. We publish the 39% precisely so you can hold us to it, and if it improves as we add the right inputs, you'll watch it move on that same public log, with nothing hidden.
This article is educational content about machine learning and market structure. It is not financial advice, not a recommendation to buy or sell any China-listed or other security, and not directed at any individual's circumstances. Trading Agent is a quantitative research tool operated by WU Capital Limited (New Zealand).


