Dynamic Universes Moonshot

I’d like to support dynamic universes in several forms, but I haven’t been able to determine the best way to implement them yet.

  1. Point-in-Time Index Universe

A universe that updates historically based on actual index membership at each rebalance date.

Examples:

  • S&P 500 constituents changing quarterly as they did in reality
  • Russell 1000 / Russell 2000 reconstitutions
  • Nasdaq-100 membership changes over time

The universe should automatically reflect the correct constituents before each rebalance, training window, and backtest date.

  1. Point-in-Time Exchange Universe

A universe based on exchange listings that updates historically over time.

Example:

  • All stocks listed on NASDAQ, with membership determined point-in-time (including listings, delistings, transfers, etc.)

This should also update prior to rebalances, training windows, and any historical evaluation date.

  1. Rule-Based / Filter Universe

A universe defined by dynamic screening rules, such as:

  • Average Daily Dollar Volume (ADV) > $5M
  • Price > $10

Ideally this would be a first-class universe definition rather than requiring manual dataframe filtering inside the price-to-features pipeline.

Core Question

What is the recommended / native way to implement these types of dynamic universes so they integrate cleanly with rebalancing, training windows, and historical simulations?