Data issues
What Show Issues and Data Quality flag, why each problem happens, and what to do about it.
The app can only be as complete as the history you give it. When something doesn't add up, a sale with no purchase, an option that never closed, it doesn't guess. It flags the row so you can decide.
Most issues come from missing history: a broker export that starts in 2024 while you bought some of the shares in 2021, or an account you haven't imported yet. Importing the missing part fixes most of them by itself.
Where issues show up
Show Issues is a switch on the Trade Log, in both views:
- Grouped view: group rows with an unknown cost basis, a sale bigger than the shares on file, a sold call nothing covers, or an option past its expiration.
- List view: trades with an unknown cost basis, trades that aren't in any group, trades in a group with a sale bigger than the shares on file, and dividends without a known ex-dividend date.
Trades you unmerged yourself are not issues and aren't listed (see Your own grouping).
Data Quality on Accounts & Data lists every trade that isn't in any group, sorted into categories such as Orphan Sell, Orphan Dividend or Partial Unmatched. When it's empty it says "All trades are grouped".
Every flag is worked out again on each recalculation. Fix the cause and the flag goes away; you never need to clear it by hand.
Unknown cost basis
What you see: the status says CLOSED (UNKNOWN) or OPEN (UNKNOWN), and a dash (—)
stands in for the entry price and result; any dividends still show. Tags such as
UNKNOWN_ACB, ORPH-SELL and PSBL-XFER, and often a Synthetic Buy at $0 inside the group.
Why: the app can't tell what you paid. Usually one of these:
- A sale with no purchase before it. Your file starts after you bought the shares. The
group is closed on the day of the sale (the shares are gone), with an unknown cost: the sale
never counts as proceeds, and the shares aren't counted as still held. The app adds a $0
Synthetic Buythe day before the sale as a placeholder, so the sale stays visible.PSBL-XFER("possibly a transfer") means the shares may have come from another account. - An unpaired transfer. Shares arrived from an account the app doesn't know, and no account of yours held exactly that position the day before (when one does, the app pairs them itself; see Transfers between accounts).
- A journal from shares with an unknown cost, for example
DLRjournaled toDLR.Uwhen theDLRpurchase isn't on file. The journal is still shown, as aJournal Out/Journal Inpair at an unknown cost, so the shares that arrive on the new listing pair with your later sales there. A journal that takes even one lot with an unknown cost is unknown as a whole: the app never blends a known and an unknown cost into one price.
What it does to your numbers: these rows have no result: no profit or loss, no win or
loss, no gain or loss tag (STCG, STCL, …), and the tax report lists them under Positions
left out instead of taxing them. Only the dividends they collected still count. A group you
made yourself with such a sale in it is treated the same, as a whole. They are left out of
performance and strategy totals, and shares with an unknown cost are never turned into a
covered call. A $0 placeholder would otherwise look like pure profit.
What to do:
- Import older history from your broker, as far back as it goes.
- Import the other account, if the shares were transferred in.
- For a transfer you can't import, double-click the
Transfer Intrade and enter what you paid per share. - Or add the missing purchase yourself with Add Trade on the Trade Log, dated before the sale.
A sale bigger than your shares
What you see: the tag PARTIAL_ALLOC on the sale and its group, and in the List view a
Synthetic Sell for the leftover part, in no group.
Why: you sold 150 shares, but the app only knows about 100. It pairs the 100 and keeps the other 50 apart so they don't vanish. The missing 50 were usually bought before your history starts, or transferred in.
What to do: the same as for an unknown cost basis: import the older history or the other account, or add the missing purchase.
A sale after your shares were used up
What you see: a sale in no group, tagged UNALLOCATED, listed as Orphan Sell in Data
Quality.
Why: you did buy shares earlier, but earlier sales already used all of them. You buy 100, sell
100, then sell 50 more. If you bought shares again later (a brief short sale), the app pairs the
sale with that later purchase instead and tags the row SHORT-STOCK.
What to do: look for a missing purchase or transfer between the two sales, and import or add it.
Sold calls nothing covers
What you see: the tag UNCOVERED on a sold call.
Why: a sold call needs 100 shares per contract to be covered. On the day you sold it, the app found no shares in that account to cover it, counting all your shares, whatever strategy they belong to. Common reasons:
- The shares are at a broker or in an account you haven't imported.
- It really is uncovered (a naked call in a margin account).
What to do: import the account that holds the shares. If the call really was uncovered, you
can remove the UNCOVERED tag from the row. The row still shows under Show Issues, because
nothing about the data changed (see Tags and labels).
Only calls are checked. Sold puts are never flagged.
Options past their expiration
What you see: an open option row with the PAST_EXPIRY tag, still OPEN.
Why: the option's expiration date has passed, and no expiry, assignment, exercise or closing trade was imported. The app never closes a position for you, because it can't know what happened. The expiration day itself doesn't count: brokers often report the expiry the next day, so the flag appears from the day after. It's refreshed daily, even without an import.
What to do:
- Import a newer broker file that includes the expiry or assignment, or
- Click the Record outcome button on the row ("Record outcome: expired, assigned or exercised") and choose what happened. An assignment or exercise also adds the share trade at the strike. The button is on automatic rows; for an option inside a group you made yourself, use Add Trade, pick the option and choose Expired, Assigned or Exercised.
If a broker file you import later has the same outcome for the same number of contracts, the broker's trade replaces the one you recorded (and its share trade), so the option isn't closed twice. When they don't match exactly (you recorded 5 + 5, the broker has 10), both stay and the extra one shows in Data Quality on Accounts & Data.
Splits the app isn't sure about
What you see: a position tagged UNCONFIRMED_SPLIT, under Show Issues.
Why: splits come from market data, and a split restates every trade bought before it (a 2:1 split turns 100 shares at $50 into 200 at $25). The market data also reports things that are not splits in the same way, such as a spin-off or a fund distribution. So the app applies a split only when its ratio can't be anything else: whole-number ratios like 2:1, 3:2, 4:1 or 1:10. A ratio such as 21:20 can be a real 5 % stock dividend or a 5 % distribution. That split is not applied, and every position that held shares across its date gets the tag. The quantities you see are your broker's, without the split. We review each one and apply it once it's confirmed; the tag then goes.
What to do: nothing; the tag tells you the position's share count may change once the split is reviewed. If you know what happened, tell us with the Feedback button in the sidebar.
Dividends with no position
What you see: a dividend in no group, tagged UNALLOCATED, listed as Orphan Dividend in
Data Quality.
Why: dividends are given to the positions that held shares on the ex-dividend date. If no position in that stock, in that account, can take the dividend, it stays on its own. Usually the shares were bought before your history starts. (When you held the stock earlier but had already sold it, the dividend goes to your most recently closed position in it.)
What to do: import the older history. Or put the dividend where it belongs yourself: select it in the List view and use Move to Group.
Dividends without an ex-dividend date
What you see: the tag NO_EX_DIV on a dividend.
Why: the app couldn't find the ex-dividend date for this payment in its market data. It then uses the payment date to decide who held the shares. That's usually close, but if you bought or sold around that time, the dividend may be split between your positions slightly differently than your broker would.
What to do: usually nothing. If a dividend landed in the wrong position, move it with Move to Group. See Dividends.
Related
- Find and fix data issues: a step-by-step walk through the list.
- Trades and positions: the $0 placeholders and other trades the system adds.
- Tags and labels: every system tag.