q.data Roadmap

Only open work is listed here. Completed items are removed.

Design boundaries

QRT should model financial data independently of any execution engine. Generic objects must be usable with pandas/Parquet and other backtest engines before a LEAN serializer is involved.

  • q.data owns normalized data models, transformations, quality reports, and point-in-time correctness.
  • q.calendar owns exchange sessions, timestamp-to-session alignment, and trading-time grids.
  • q.data.lean owns LEAN paths, ZIP members, scaling, CSV schemas, SIDs, and reference-database serialization.
  • q.bt.lean owns Lean CLI processes and result artifacts; it consumes q.data.lean but does not duplicate its writers.
  • Vendor adapters own retrieval and source-specific translation. Core models must not depend on a vendor’s ticker or corporate-action schema.

Canonical security identity

  • master = q.data.SecurityMaster.from_frame(
        securities,
        security_id="isin",
        ticker="ticker",
        listed_at="listed_at",
        delisted_at="delisted_at",
    )

Point-in-time universes

  • snapshots = q.data.universe.snapshots(
        memberships,
        sessions=q.calendar.schedule(...),
        id_column="isin",
        effective_from="added_at",
        effective_to="removed_at",
    )

Corporate actions and adjustment factors

  • factors = q.data.corporate_actions.factors(
        prices=daily_prices,
        splits=splits,
        dividends=dividends,
        exchange="XSTO",
    )

Session-aware market-data aggregation

  • bars = q.data.resample_trades(
        trades,
        frequency="1min",
        exchange="XSTO",
        empty="omit",
    )

Structured market-data validation

  • report = q.data.validate_market_data(
        trades=trades,
        quotes=quotes,
        bars=bars,
        exchange="XSTO",
    )

LEAN data adapter

  • q.data.lean.write_equity(
        trades=trades,
        quotes=quotes,
        bars=bars,
        symbol="VOLV-B",
        market="sweden",
        root=workspace / "data",
    )
    q.data.lean.write_map_files(master, root=workspace / "data")
    q.data.lean.write_factor_files(factors, root=workspace / "data")
    q.data.lean.write_universe(snapshots, security_type="index", ...)

Synthetic market-data helpers

  • quotes = q.data.synthetic.quotes_from_trades(
        trades,
        spread=0.01,
    )

Delivery sequence

Acceptance criteria

Ideas

These candidates fit q.data, but are not yet committed roadmap items.

Back to top