← Blog

The live data problem nobody warns you about

When I started wiring live charts into the dashboard, I hit a wall that surprises most people: there is no good free source of intraday futures data.

Stocks? Easy — quotes and minute bars are everywhere. Crypto? Trivial, it’s 24/7 and every API has it. But CME futures — ES, NQ, GC, the stuff prop traders actually run — intraday bars are locked behind paid feeds. The “free” APIs will happily give you a delayed daily candle and nothing useful below it.

That creates a quieter problem too: your backtest data and your live data come from different places, and they never perfectly agree. Slightly different roll handling, a print one source caught and the other didn’t, a session boundary drawn an hour off. Small stuff, but it’s exactly the kind of small stuff that flips a marginal trade.

The trap is reaching for whatever’s free to fill the gap — mapping ES to an S&P ETF, say. Now your chart is a different instrument at a different scale, and your entry markers don’t even line up. Worse than no chart.

The fix we landed on is almost obvious in hindsight: the bot already has the data. It’s computing 1-minute bars to make decisions. So instead of buying a feed, we have the bot stream the bars it already builds. They’re the real bars it traded on, free, perfectly aligned with its own fills.

The lesson generalizes: when the market won’t sell you clean data cheaply, look at what you’re already producing. Often the best feed isn’t one you buy — it’s one you were throwing away.

Activate your code →