My trading bot has a hedge fund data stack on a garage-project budget.
The whole analysis brain runs on free, delayed data. I pay for exactly one feed: the live options chain an order actually touches.
The stack that should have cost a fortune
A system that trades options should need an expensive data stack. Real-time everything, a fat market-data bill, the kind of feed a desk pays for. Mine runs its analysis brain on free, delayed data. The only feed I pay for is the one an order actually touches.
The half that runs on free, delayed data
The screening side of the bot never needs the current tick. It reads Yahoo Finance through yfinance, the only data vendor left in the stack after I stripped the rest out. Daily price history for the trend screen, technical indicators, company fundamentals, and the news headlines the language-model brain reads for the day’s narrative. All of it end-of-day or delayed, all of it free.
Delayed is fine because none of these decisions turn on the current second. A screen that ranks a few hundred tickers on their trend does not care whether the last print landed now or twenty minutes ago; the shape of the last six months is the signal. This half of the system decides what to look at, and yesterday’s close is enough to look.
The half I actually pay for
Then the bot decides to trade, and the data changes character completely.
An option’s price is not a number you can read late. It moves with the underlying, with time, and with implied volatility (IV), the market’s live guess at how much the stock will move and the single biggest driver of what the option is worth. The greeks (delta, gamma, theta, vega) are the sensitivities that tell you how the position will behave and how to size it. All of them decay by the second. A greek from twenty minutes ago is not a slightly old greek. It is a wrong hedge and a wrong exit.
So the one paid feed is the live options chain, pulled from Interactive Brokers (IBKR). It is the only real-time data in the stack, and it is the only data an order ever touches.
Free data decides what to look at. Paid data decides what to trade and when to get out.
What the one feed pulls
The paid surface is small. A single market-data call to IBKR returns, per option contract, everything an order needs: the live bid and ask, the contract’s volume and open interest, its implied volatility, and the model greeks (delta, gamma, theta, vega).
Volume and open interest (OI, the number of contracts still live at a strike) tell me a contract is liquid enough to trade. IV and the greeks tell me what it is worth and how it will move. Two lighter calls frame it: one enumerates the chain’s expiries and strikes, the other gets the underlying spot price. That is the whole paid data path.
The part that feels like a desk
One more real-time piece makes the whole thing feel like a trading desk rather than a script. A small always-on service holds streaming subscriptions on the contracts I actually hold: open positions only, a handful of lines, well inside IBKR’s cap on simultaneous streams. It recomputes a net mid for each position every few seconds and pushes the batch out over Postgres NOTIFY, which the dashboard turns into a live WebSocket feed. Read-only: it never sends an order, never touches the exit engine. It exists so the marks on the screen flash in real time, on the same one subscription.
That is the hedge-fund part: live greeks, a live chain, live marks. It runs on one paid feed, because that is the only place in the system where a stale number costs money.
The feed costs $10 a month, and nothing at all in any month my trading fees clear $30. A Bloomberg Terminal, the professional default for data of this kind, is widely reported at $25,000 to $31,000 a year. Same class of data, a different order of magnitude on the bill. That terminal buries the one feed I need under thousands of functions most users never find, let alone use. I just buy the feed that I actually use.
The Takeaways
- Pay for data only where latency turns into money. Everything upstream of the order tolerates delay: screening, narrative, context. Buy the real-time feed at the one point staleness becomes a wrong price.
- Match the feed to the decision, not to the system. A trend screen wants breadth and history and does not want the tick. An options quote is worthless the second it is late. Same bot, opposite data needs.
- Keep the expensive surface small on purpose. The whole live path is three tick codes, the greeks, and a marks stream on open positions. A small paid surface is what lets you afford the good version of the part that matters.
Get the next episode first
Every week: the progress unfiltered, plus what I can't post publicly. The build, the number, green or red.