Back to Projects

Competition ML Research

CSI 300 Portfolio Modeling Challenge

A private, in-progress machine-learning project that predicts five-trading-day returns, ranks CSI 300 candidates, and produces a constrained five-stock allocation. The work emphasizes point-in-time data handling, expanding-window evaluation, feature comparison, and reproducible model selection rather than a single backtest number.

Period

Jul 2026 - Present

Tools / Tech

PythonPandasNumPyScikit-learnLightGBMTushareTime SeriesPytest

Why I built it

I wanted the model-selection process to reflect how the strategy would have been evaluated at each historical point, so validation design and information timing came before adding more features or more complex allocation rules.

What it includes

  • Builds price, volume, volatility, cross-sectional, market, liquidity, and delayed fundamental features using only information available by each decision date.
  • Uses expanding-window folds with a time gap between training and validation, while keeping the latest period separate from model and feature selection.
  • Compares linear, gradient-boosting, LightGBM, ranking, ensemble, and allocation candidates with return, excess return, ranking, drawdown, and tail-risk measures.
  • Keeps a reproducible training, inference, report, verification, and test workflow for the competition submission package.

What I worked on

  • Defined the prediction target, point-in-time rules, validation folds, evaluation measures, and promotion criteria before comparing candidates.
  • Designed feature groups and ablation experiments, then kept stronger-looking candidates out of the formal result when they did not pass the full comparison criteria.
  • Compared fixed and learned portfolio-weighting ideas instead of assuming a more complicated allocator would be better.
  • Used AI assistance for implementation and repetitive research tooling while I directed the hypotheses, checked data timing, reviewed results, and made model-selection decisions.

What I Learned

  • Learned how easily financial experiments can look stronger when time boundaries or selection periods are not kept explicit.
  • Practiced rejecting complexity when a simpler weighting rule remained more stable under the chosen validation design.
  • Improved at separating exploratory findings, formal candidates, and results that should remain private during an active competition.