Real companies from EDGAR
Seed a universe from real SEC filings. Real valuation dispersion, real sector weights, loss-makers in realistic proportion. The price path stays synthetic.
snap = tf.edgar.fetch(as_of="2024-06-30", limit=100,
user_agent="Jane Roe jane@example.org")
snap.save("edgar-2024h1.json") # the artifact, hashed and citable
universe = tf.Universe.from_edgar(snap, federal_funds_rate=0.03)
user_agent must carry a contact address - the SEC's fair-access policy asks for one, and this library will not send a fabricated one for you.
Save the snapshot, cite that
EDGAR is not append-only: the same request returns different numbers next year. A snapshot is hashed and serialisable, so cite the file, not the query.
Two ways to rank, two different biases
EDGAR carries no market cap, so ranking by shareholders' equity skews balance-sheet-heavy. Measured on the live SEC for CY2025, the top 150 by equity came back 27% financial services and 17% technology, against roughly 13% and 30% for the S&P 500, with five banks in the top ten.
Ranks by the one market-derived number EDGAR has, producing a roster that resembles a real index. Costs: stale by six to eighteen months, and understates founder-controlled companies since float excludes what insiders hold.
Neither is a market-cap ranking, because EDGAR has no prices. For that, set initial_price yourself from a market data source. And this loads fundamentals, not behaviour: a loaded ticker gives you a stock with that company's fundamentals under this model's assumptions, not that company's volatility or microstructure.