Skip to content
All library documents

Using Genetic Programming to Discover Stock Selection Factors

Article BigQuant

Summary

This research note explains how genetic programming can evolve mathematical formulas from market data to discover equity selection factors. Starting with randomly generated expressions, the algorithm evaluates their fitness against a target and applies operations such as crossover and mutation to create later generations. The authors adapt the gplearn package for this task by expanding its functions, adding single-factor evaluation and neutralization, and parallelizing computation. Fitness is based on average Rank IC against returns twenty trading days ahead.

In a test on China’s A-share universe over 2010–2019, the process produced six candidate factors from price and volume data. The report evaluates factors with regression, Rank IC, and portfolio sorts, and says some retained information after industry and style neutralization; factor stability varied, and two similar factors were relatively correlated. These are historical findings, not proof of persistence. The authors warn that discovered factors may fail, become hard to interpret, and may not generalize beyond the tested stock universe. The workflow also leaves choices of data, functions, universe, and evaluation method to the researcher.

Key ideas

  • Genetic programming searches for stock factors by evolving mathematical expressions against a predictive objective.
  • The study customizes gplearn with additional time-series functions, factor tests, neutralization, and parallel computation.
  • The target was individual-stock returns twenty trading days ahead, and six candidate factors were reported.
  • The factors were assessed with regression, Rank IC, and portfolio sorting, with mixed stability and correlation findings.
  • Historical factor results may decay, be difficult to interpret, or fail to transfer beyond the tested A-share universe.

Tags

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.