In production · public launch coming

StreamXLS

A production-grade Excel bridge to Interactive Brokers' TWS.

Built by an engineer who trades through it every session — used at a desk trading over $87 million a month through Trader Workstation.

Trader.xlsb
File Home Insert Formulas Data Review View
B3
fx =RTD("Tws.Rtd", , A3, "BID")
A
B
C
D
E
F
G
1
Live book · U1234567 · 2026-05-22 09:42:18 ET
2
Symbol
Bid
Ask
Last
Chg%
Position
Mkt Val
3
AAPL
187.42
187.44
187.42
+0.81%
1,500
$281,130
4
MSFT
412.08
412.10
412.09
+0.42%
800
$329,672
5
NVDA
948.71
948.73
948.73
-0.61%
-300
($284,619)
6
SPY
542.18
542.20
542.19
+0.18%
2,200
$1,192,818
7
BRK B
432.55
432.60
432.58
+0.05%
450
$194,661
8
PCEF
21.34
21.36
21.35
-0.14%
12,000
$256,200
9
TLT
88.92
88.94
88.93
-0.32%
-5,000
($444,650)
10
IWM
218.47
218.49
218.48
+0.93%
600
$131,088
11
TOTAL
$1,656,300
Book
Orders
P&L
Status
● StreamXLS · Connected · TWS 10.30 · 49 topics Ready
Illustration · how =RTD() formulas appear in the worksheet · representative numbers, not a live capture
§ 02 · The problem

What you already know about Excel + IBKR

Interactive Brokers ships a sample Excel RTD server with the TWS API — the one at C:\TWS API\samples\Excel\TwsRtdServer.xls. It is, per IBKR's documentation, "not intended to be used as production level trading tools." It's a teaching artifact that demonstrates basic market data streaming — top-of-book quotes only — with the callbacks for account values, positions, and orders left as empty stubs.

What does it take to get from sample to production-grade? First implement the API to subscribe and receive all market data fields, account values, positions, and orders. Support multiple accounts. Then implement COM-compliant multithreading so it maintains the stream even when Excel's UI is busy or blocked by a modal dialog. Then harden the RTD server against TWS exceptions: detect silent disconnects, rate limits, automatically connect and resubscribe without the user having to do anything. Late-seed and deduplicate between RTD topics and TWS subscriptions. And ensure that multiple Excel instances can run RTD streams against the same TWS instance. That's the gap I built StreamXLS to close — at first for my own desk, now for anyone with the same needs. The full case for why a spreadsheet is the right host is its own essay. Read it →

— David Bookstaber, StreamXLS

§ 03 · The product

Technical features

One DLL, one COM registration, one demo workbook illustrating every feature so you can start without reading documentation. No Excel ribbon, no add-in; StreamXLS doesn't run until you ask for it via Excel-native =RTD() formulas.

01
Automatic reconnection
When TWS restarts or the link drops mid-session, StreamXLS reconnects and re-issues every subscription that was active — gated on the protocol-level handshake confirmation so resubscribes never land during a half-open connection. Connection-dependent values flip to #N/A on disconnect rather than showing a stale price.
"status", "IsConnected" → Connected
02
Modal-dialog tolerance
Excel pauses RTD updates while a modal dialog is open or a cell is in edit mode. The engine maintains its cache and update state independently of Excel's polling cadence, and routes the notify call so it never reenters Excel mid-callback — the COM reentrancy trap that silently freezes a workbook for the rest of its session.
cache holds latest · notify scheduled off-callback
03
Subscription deduplication
Many =RTD() cells referencing the same logical topic share a single upstream TWS subscription, reference-counted so the subscription is canceled only when the last cell goes away. Copy-drag a formula across 200 rows of a chain and you get one subscription, not 200. The live count is exposed as ActiveTopicCount.
200 formulas → 1 TWS subscription
04
Order submission from a cell
A dedicated SendOrder topic family submits an order as the side-effect of subscribing; the cell returns SendingSent, or a structured error. The engine default is transmit=false — orders stage in the TWS ticket for the trader to release. Minimize the clicks; never zero.
RTD("Tws.Rtd", , "SendOrder", …)
05
Beyond market data
Account values (136 fields, per-currency), positions with streaming P&L, and order monitoring across all clients — all as native =RTD() formulas, alongside the market-data topics the IBKR sample covers. One subscription model across data, account state, and execution.
market data · accounts · positions · orders
06
Drop-in compatible
The COM contract and formula syntax match IBKR's sample. Register the default ProgID Tws.Rtd, or install the optional legacy alias Tws.TwsRtdServerCtrl and leave existing workbooks unchanged. The engine runs against your own entitled TWS API installation.
alias: Tws.TwsRtdServerCtrl → same CLSID
§ 04 · Safety & the trial

What it does when things go wrong — and how you'll test it without committing your desk.

It can't fire an order on its own

The engine's default is transmit=false by design: SendOrder stages an order into the TWS ticket, and a human releases it. Nothing in the spreadsheet can reach into the engine to flip that flag.

It shows you a blank before a lie

A stale price is worse than no price. On a dropped connection, realtime price values go #N/A rather than holding the last good value — so you never trade on a number that has quietly gone stale.

Your trading data stays on your machine

Quotes, positions, orders, and account values move only between your Excel and your own TWS, under your own IBKR entitlements. StreamXLS sends no market data, order flow, or usage telemetry anywhere. (Licensing is the one exception — a lightweight periodic activation check, with offline grace.)

§ 05 · The audience

Who buys this.

01 · Systematic individuals
Individual systematic traders using IBKR for their own account. If you already pay for adjacent tooling — backtesting platforms, IQFeed, Hoadley — this is the data-and-order layer your spreadsheet has been missing.
02 · Small firms
Small hedge funds, prop shops, and family offices using Excel as the operational dashboard.
03 · RIA reporting
Small RIA firms running portfolio reporting and rebalancing on Excel against IBKR custody. Customizable file logging of RTD activity can feed your audit pipeline.
§ 06 · Pricing

Annual subscription, per-machine seat.

Two tiers. Updates and support included. A full-featured trial (coming soon!).

Personal · use
Personal
Personal account, own LLC, family vehicle — non-business use.
$495
/yr · per machine
or $49/mo
  • Additional machine, same user+$245/yr
  • Updates + supportIncluded
  • Trial30-day full
Request early access
Launching Summer 2026. StreamXLS is not yet purchasable — request early access and we'll set you up with the trial as soon as it's available.

Annual subscription per-machine seat — or monthly billing. Cancel any time; takes effect at end of period.

§ 07 · Contact

Get in touch.

StreamXLS is launching Summer 2026 — we'll be in touch about trial access. For support, paying customers email support@streamxls.com.