In China A-share quant, ignoring XDXR (ex-rights & ex-dividend) is the fastest way to wreck your backtest and trigger false stops in live trading. This post explains the adjustment mechanics every A-share quant must get right.
When a Chinese listed company executes a stock split (送股), capitalization increase (转增), or cash dividend (派息), the raw closing price drops in a non-trading "gap". Example: a 10-for-4 stock split makes raw close drop ~30% overnight — but this is not a real decline.
If you use raw prices: - Backtests record a massive loss on the XDXR day - Overnight position stops get triggered by the fake gap - Momentum/reversal factors get contaminated by the non-economic discontinuity
| Method | How | Use case |
|---|---|---|
| Forward-adjusted (前复权) | Re-base history to the current price | Charting, recent analysis |
| Backward-adjusted (后复权) | Multiply forward from listing day | Long-horizon backtests, return computation |
| Adjustment factor | Keep raw + a per-day multiplier | Flexible reconstruction |
The right method depends on use case, but consistency across the entire pipeline matters more than which method you pick. Real-time data, historical data, backtest engine, and position-cost computation must all use the same adjustment logic — otherwise live and backtest drift, and reconciliation breaks.
Adjustment should be handled at the data contract layer, not in each strategy. Otherwise you get N strategies each implementing slightly different adjustment logic — guaranteed inconsistency.
ReachRich handles forward/backward adjustment and XDXR factors at the data contract layer, returning continuous prices. Upper-layer quant research just consumes the data — no per-strategy adjustment debugging.