Interactive Brokers Performance Analytics: What TWR Actually Means
IBKR's Performance Analytics tab gives you a time-weighted return series — but the interface buries it. Here's what you're actually looking at and how to use it.
Interactive Brokers has some of the most sophisticated performance data of any retail broker. It also has one of the most confusing interfaces for accessing it. Most IBKR users have never found their real time-weighted return, let alone compared it to a benchmark correctly.
This is a guide to what IBKR actually gives you and how to use it.
The Performance Analytics Tab
In Client Portal (the web interface), Performance Analytics is under Reports → Performance Analytics. From the legacy Trader Workstation, it's under Account → Performance Analytics.
The tab shows several things, but the most important are:
- Cumulative Performance — a percentage return chart. This is your TWR.
- Period Performance — returns broken down by period (monthly, yearly, since inception)
- Returns Attribution — what drove your returns (sectors, asset classes)
The Cumulative Performance chart is the one that matters most. It's labeled somewhat obscurely, but it's a Cumulative Performance Series (CPS) — a time-weighted return that strips out the effect of your deposits and withdrawals.
What TWR Means in This Context
IBKR uses the Modified Dietz method to approximate true daily time-weighted returns. The result is a cumulative series that answers: "If I had invested $1 at inception using this strategy, what would it be worth today — assuming a constant pool of capital with no additions or withdrawals?"
This is the right number for evaluating whether your investment strategy is working. It's also the number that should be compared to a benchmark return.
What it is not: your actual account return if you've been adding money. That figure — your personal internal rate of return — is the money-weighted return, a different number that includes the luck of your cash flow timing.
The Rate-Limiting Reality
IBKR's performance analytics API is significantly rate-limited: approximately 1 request per 15 minutes per account. This is because the CPS calculation is computationally expensive on IBKR's side.
In practice, this means your IBKR performance data in any analytics tool (including AlphaLens) can be up to 15 minutes stale. For most purposes this is fine — you're not making intraday decisions based on TWR.
It also means that if multiple tools are requesting your IBKR performance data simultaneously, they may hit rate limits. AlphaLens caches the result in-memory with a 15-minute TTL to avoid unnecessary repeated requests.
The IBKR Benchmark Comparison Problem
IBKR does show a benchmark comparison in Client Portal, but it suffers from a specific flaw: the benchmark always starts from the same date as your account inception, using a lump-sum methodology. If you've been adding capital over time, the benchmark doesn't reflect what a comparable passive investment of the same cash flows would have returned.
The correct comparison — which IBKR doesn't natively provide — is to calculate what SPY's return would have been on the same cash flows you put into your account, using IRR on both sides. Or, simpler, to compare your TWR to SPY's TWR from the same start date (which AlphaLens does).
Multi-Account IBKR
IBKR's performance analytics is at the individual account level. If you have multiple IBKR accounts (e.g., individual and IRA), their TWR series are separate and can't be naively averaged.
The correct way to combine them is to weight each account's return by its asset value, or to calculate a blended TWR that treats the combined entity as a single portfolio. AlphaLens merges IBKR accounts alongside Alpaca accounts by averaging overlapping periods and carrying forward values on non-overlapping dates.
IBKR vs. Alpaca: A Data Quality Comparison
| Feature | Alpaca | IBKR |
|---|---|---|
| TWR series | profit_loss_pct in portfolio history | CPS from /pa/performance |
| Update frequency | Real-time (portfolio history) | ~15 min cached |
| Intraday data | 1-minute bars available | Not available |
| Positions | Real-time via API | Near-real-time |
| Transaction history | Orders endpoint | Transactions endpoint (per-conid) |
| Cash/NLV | Account endpoint | Ledger endpoint |
Alpaca's data is generally fresher and easier to work with programmatically. IBKR's data is more comprehensive for complex accounts (multiple currencies, derivatives, futures) but harder to access reliably.
Getting Your IBKR Data Into AlphaLens
AlphaLens connects to IBKR via OAuth. The setup process:
- In AlphaLens Settings → Connections → Add Interactive Brokers connection
- You'll be redirected to IBKR's OAuth portal to authenticate
- Once connected, AlphaLens fetches your accounts, positions, performance data, and transaction history
Because IBKR's performance analytics are rate-limited, the first data load may take a moment. Subsequent loads use the cached data.
The dashboard merges your IBKR accounts with any connected Alpaca accounts, giving you a combined portfolio view with a single blended return series and unified positions table.
Connect your IBKR account to see your real time-weighted return history.
Trader-grade analytics, in your inbox
One short email when we publish a new piece on portfolio analytics, risk metrics, or broker integrations. No spam, no auto-DRIPs.
Keep reading
Related postsWhat Is a Good Sharpe Ratio for a Retail Investor?
The Sharpe ratio measures return per unit of risk. Here's what the numbers actually mean for a retail portfolio — and why most traders have no idea what theirs is.
Max Drawdown Explained: What It Is and Why It Matters More Than Returns
Max drawdown tells you the worst loss you would have experienced holding a portfolio. It's often a better measure of risk than volatility — and most retail investors never track it.
Sortino Ratio vs Sharpe Ratio: Which Should You Use?
Both ratios measure risk-adjusted return, but they define 'risk' differently. For most active traders, the Sortino ratio tells a more honest story.
