#!/usr/bin/env python3 """Fetch all US equities daily OHLCV (DBEQ.BASIC) for the small/mid-cap factor test. Budget-capped, get_cost-gated. Saves DBN to data/surfer/dbeq_ohlcv1d.dbn. """ import os import sys import databento as db CAP = 70.0 DS, SCH = "DBEQ.BASIC", "ohlcv-1d" START, END = "2023-03-28", "2026-06-05" OUT = "data/surfer/dbeq_ohlcv1d.dbn" def main(): c = db.Historical(os.environ["DATABENTO_API_KEY"]) if os.path.exists(OUT): print("already downloaded"); return 0 cost = c.metadata.get_cost(dataset=DS, symbols=["ALL_SYMBOLS"], schema=SCH, start=START, end=END) print(f"get_cost=${cost:.2f} cap=${CAP:.2f}") if cost > CAP: print("ABORT over cap"); return 1 data = c.timeseries.get_range(dataset=DS, symbols=["ALL_SYMBOLS"], schema=SCH, start=START, end=END) os.makedirs("data/surfer", exist_ok=True) data.to_file(OUT) print(f"saved {OUT}") return 0 if __name__ == "__main__": sys.exit(main())