v0.2.2 - AkShare Public A-Share Validation

July 29, 2026 ยท View on GitHub

v0.2.2 adds a zero-auth A-share validation path through AkShare and records a CSI 300-scale public-data run. This release is still validation-first: it makes the project easier to reproduce and audit, but it does not claim deployable alpha or investment performance.

Highlights

  • AkShare is now available in scripts/public_data_validation.py via --source akshare.
  • New csi-300 / hs300 presets resolve the current CSI 300 constituent list from public AkShare/CSI endpoints at runtime.
  • A-share ticker normalization accepts common forms such as 600519, sh.600000, 000001.SZ, and SZ300750.
  • Generated reports now record source limitations for AkShare and dynamic CSI 300 universes.
  • A tracked CSI 300 report is available at docs/validation_akshare_csi300_20260729.md.

Reference Command

python scripts/public_data_validation.py \
  --source akshare \
  --preset csi-300 \
  --max-tickers 300 \
  --start 2021-01-01 \
  --end 2025-01-01 \
  --models equal_weight,momentum_20,alpha101_mean \
  --epochs 1 \
  --batch-size 4096 \
  --hidden 32 \
  --cost-grid-bps 0,7,15,30 \
  --bootstrap-samples 100 \
  --bootstrap-block-size 20

Validation Result

The maintained Windows CPU run returned a 969 x 300 panel over 2021-01-04 to 2024-12-31 with a 96.25% tradable-cell ratio.

At 7 bps effective cost:

strategyann_returnsharpemax_ddturnoverfinal_equity
equal_weight0.17750.88210.25760.00101.8744
momentum_200.32281.02560.31330.16222.9321
alpha101_mean-0.0728-0.24810.45380.53450.7479

The negative alpha101_mean net result is a cost-and-turnover lesson, not a blanket statement against factor research. Its gross annual return is positive (0.1195), but high turnover (0.5345) creates a large 7 bps cost drag (0.7244) and turns the net annual return negative. In other words, this run shows that naive factor averaging needs turnover control, neutralization, and portfolio construction before it can be interpreted as a serious alpha model.

Caveats

  • The csi-300 preset uses the current constituent list available from public endpoints at runtime. It is not historical point-in-time index membership.
  • AkShare is a convenient public data source, but upstream endpoints can change, throttle, or revise data.
  • The report is not a full paper reproduction because the proprietary paper data cannot be redistributed.
  • Results are research diagnostics, not investment advice or live-trading evidence.

Verification

  • pytest tests/test_akshare.py tests/test_public_data_validation.py
  • scripts/audit_validation_report.py on the generated CSI 300 summary.json