§ · Guide

IBKR in Excel: market data is easy, account state is the cliff

Interactive Brokers gives you a free way to stream quotes into Excel. It does not give you a free way to stream your account values, positions, or live orders — and that gap is the whole problem.

If you run Interactive Brokers and keep a spreadsheet open next to Trader Workstation, you have almost certainly hit this wall. Getting a live quote into a cell is a five-minute job. Getting your net liquidation value, your positions with running P&L, or the state of your open orders into the same sheet — live, without freezing Excel — is a different piece of engineering entirely. This page explains exactly where the free tools stop, why, and what desks do about it.

What IBKR's free Excel tools actually give you

IBKR ships three ways to talk to Excel with the TWS API download — an RTD server, a DDE bridge, and an ActiveX control — each with a sample spreadsheet. The one most people reach for first is RTD, because it is the modern, non-blocking option. And RTD, in IBKR's own sample, is scoped to one thing: market data.

IBKR's TWS API documentation states it plainly: "only top-level market data is supported via TWS RTD Server API. No trading capability or other data types are supported." The sample registers under ProgID Tws.TwsRtdServerCtrl and streams live or delayed quotes — nothing about your account.

That scoping is deliberate, and IBKR is candid about it. The samples, IBKR writes, "are intended as simple demonstrations of API functionality for third party programmers. They do not have robust error handling functionality and are not intended to be used as production level trading tools." They are a starting point, not a finished product.

Three technologies, three levels of coverage

The account/positions/orders gap is specific to RTD. IBKR's own comparison of the three Excel technologies shows where each one lands on full API coverage:

Excel technologyFull API functionality
(account, positions, orders)
Notes
RTD serverNoTop-level market data only, per IBKR's docs.
DDEYes (as of API v975)The old bridge — full breadth, but the setup and behavior are heavier. Compared here.
ActiveXYesFull breadth, but "more difficult to program… and not as robust," in IBKR's words.

So the free tool that behaves best inside modern Excel — RTD — is also the one that stops at market data. The two that carry account and order data — DDE and ActiveX — are the two IBKR flags as harder or older. That trade-off is the gap.

Why the gap bites

A working trading dashboard is not a quote board. It shows quotes and current positions, target positions, account values, and open orders — all at once, all current to the second, with the order ticket a click away from the data that drives it. Take away the account and order half and you have a watchlist, not a dashboard.

The reason the free RTD sample stops where it does is visible in its source: the callbacks for everything past market data are present but empty. The EWrapper methods for account values, portfolio positions, and P&L are there as stubs that do nothing. (Our engineering notes walk through this in Beyond Market Data.) Filling those stubs in — correctly, under load, without freezing Excel — is the cliff the sample leaves you standing at the top of.

How desks fill it

There is no free push-button answer, so people reach for one of four things:

  • IBKR's DDE bridge. It carries the full breadth — market data, accounts, positions, orders. But DDE is a decades-old Windows protocol: it blocks Excel's interface, other DDE-enabled software on the same machine can interfere with it, and it struggles to keep up with modern data rates. It can work up to a point with sufficient isolation.
  • IBKR's ActiveX control. Also full-breadth, but IBKR itself calls it harder to program and less robust than the socket-based APIs. You are writing and maintaining COM-bound VBA.
  • Roll-your-own over the socket API. Drop Excel's built-in bridges and interface with the TWS API directly from Python (ib_async and friends) or C#, then push values into the sheet. Full control, but also the full development and maintenance burden of a middleware layer.
  • Manual export. IBKR's Activity Statements and Flex Queries download your positions and activity as files on a schedule. Fine for reconciliation; it is a periodic snapshot, not a live feed.

Every one of these is a real answer. They differ in how much you build and maintain, and in whether the result stays correct when the feed speeds up and Excel gets busy — which is exactly when a trading screen has to be trusted.

One commercial answer

StreamXLS is an RTD server that fills the gap the free sample leaves: account values, positions, and live order state all stream through the same native =RTD("Tws.Rtd", …) grammar as quotes.

See how it works or read the docs.