Data Quality Warnings
What the orange warning badge on a brokerage connection means, every reason it can report, and what to do about each one.
OptionsPro computes your positions and P&L from the trades it has imported. When something about that imported copy is incomplete, out of date, or disagrees with what your broker reports, we say so rather than quietly serving a confident wrong number.
Where warnings appear
- On the Brokerages page, an amber banner sits under the page header: "Some P&L can't be reconciled with your broker." The banner isn't clickable - it points at the badge.
- On the affected connection's row, a small orange ⚠ badge. When the warning involves specific positions, the badge also carries a count. Click it (or focus it and press Enter) to open the Data quality dialog for that connection.
- On the P&L pages (Dashboard, Trades, Calendar, Trends, Risk & Insights), a shared notice reports how many open positions may be affected and links here.
The dialog lists one entry per active reason, in the order below. Freshness comes first, because when our copy of your trade history is behind it's usually the cause of the reasons under it.
Tone: information vs warning
Two of the reasons render in blue as information rather than amber as a warning. That split is deliberate: a mildly stale account and a lagging data provider are facts worth knowing, not faults, and coloring them like a problem would train you to ignore the panel. Amber means something is wrong or may be wrong; blue means everything we have is accurate, the question is only how recent it is.
Trade data freshness
These four reasons answer "is our copy of this account's trade history current?" - a different question from "do our positions match the broker's holdings?", which the reasons further down cover. Both can be stale at the same moment and agree with each other, which is why freshness is tracked on its own.
Each names the account it applies to, so a warning is actionable even with
two connections to the same broker, and each names the timestamp we're
current to in Eastern Time with the weekday included, e.g.
Fri 7 Aug, 6:58pm ET.
Freshness is measured from the older of two watermarks: our own last successful read of the account's trade feeds, and your broker's data provider's own transaction watermark. If the provider is serving us a view that predates your recent fills, a successful fetch on our side proves nothing, so it can't stamp the account as current.
Staleness is counted in elapsed trading sessions, using an exchange calendar that knows about weekends and market holidays - so a quiet account doesn't start warning on a Saturday, and a holiday Monday doesn't start the clock on a day the market never opened. One session behind is normal and stays silent: transaction data is cached and updated on a daily cycle, so warning there would warn on every account, every day.
| Reason | Renders as | Fires when |
|---|---|---|
| Your trades are current to (date) | Info | 2 or 3 trading sessions behind. |
| Your trades are only current to (date) | Warning | 4 or more trading sessions behind. |
| We could not update this account's trades | Warning | Stale and our last read attempt reported an error, which is quoted. |
| We have never finished loading this account's trades | Warning | No read has ever succeeded, and an error is on file. |
A freshly linked connection with no successful read yet and no error is not reported as stale - the initial-sync spinner on the row speaks for it. See Connecting a brokerage.
Each of these carries a Check for new activity button, which runs the same action as Refresh Data in the row's action menu: it re-reads your broker's feeds and nudges your provider's transaction queue. If refreshing doesn't bring the account current, reconnect the brokerage - see Reconnecting.
Your broker's data provider is catching up
Reported as information alongside the reasons above, never instead of them. It fires when your broker's provider says its own transaction records for the account end two or more sessions before our last read - so we're fully up to date with everything they've released, and the gap is on their side.
This one carries no action button, on purpose. Refreshing cannot pull in data your provider hasn't published, and offering a button that can't help is worse than offering none. It clears when they catch up.
Reconciliation reasons
These compare the positions derived from your imported trades against the holdings snapshot your broker reports.
Cash flow that couldn't be attributed
$420.00 of cash flow couldn't be attributed to specific positions
Your broker's feed reported closing activity without the matching opening trades. We don't invent the missing trades, so this cash is excluded from realized P&L rather than being attached to a position we'd be guessing at. The dialog lists the individual fills behind the total - contract, side, quantity, date, and signed cash - so you can see exactly what's unmatched.
Usually this means the opening trades fall outside the connection's history window.
Adding the missing opener by hand will not reattach this cash. Trades from Manual Trade Entry and Trade Import aren't tied to a brokerage account, and positions are matched per account - so a hand-entered opener forms its own separate position instead of pairing with the broker's close, leaving the orphan warning in place and adding a position you don't hold. If the missing history matters to your numbers, contact support.
Positions that may have incomplete trade history
A closing trade landed outside the sync window, so we may not hold the full open-and-close history for these positions and their P&L could be incomplete. They're kept out of totals rather than risking a misleading number, and they may still be perfectly correct. The dialog names the affected contracts.
Broker reports a different quantity than your trades
Your trade history and your broker's current holdings disagree on how many contracts you hold. We treat your trade history as the source of truth, show its P&L, and flag the difference here while asking your broker for fresh data. The dialog names the affected contracts.
Broker reports positions with no matching trade history
Your broker shows contracts as held, but no opening trades came through for them - usually because they were opened before this connection's history window. The dialog names the affected contracts.
Position snapshot is stale
The broker holdings snapshot the three checks above compare against hasn't been refreshed recently, so those checks may themselves be working from out-of-date broker data. Refresh or reconnect the brokerage to update it.
What to do
- Start with freshness. If an account is behind, click Check for new activity and give it a moment. A stale history explains most position mismatches on its own.
- Check the broker's own limits. On Fidelity and Interactive Brokers a same-day trade genuinely isn't available yet - see When new trades appear. A provider-lag notice is the same kind of wait.
- Reconnect if refreshing doesn't clear it - see Reconnecting.
- Don't try to patch a connected account by hand. Manual Trade Entry and Trade Import exist for trades that aren't coming from a connected account at all - a closed account, an unsupported broker, a paper-trading platform. Trades added that way carry no brokerage account, so they can't pair with a broker-sourced trade to complete a position; they'd add a second, separate position and leave the original warning untouched.
- Still wrong? Contact support with the account name and the exact warning text - both are in the dialog.