Duplicate Trades
How OptionsPro spots a fill that landed twice - once from a file you imported and once from your brokerage sync - and how to remove the extra copy.
A fill can reach your journal twice: once in a file you ran through Trade Import, and once from a brokerage sync. Nothing merges the two sources automatically, so until one copy goes, both count toward your P&L, your trade counts and your win rate.
OptionsPro checks for this in both directions, and never deletes anything on its own.
The two directions
You import a file after your brokerage synced. The import wizard checks each extracted row against the trades already in your account before you reach the Review step. See At import time.
Your brokerage syncs history you had already imported. The sync records what it found, and the Trades page shows an amber banner offering to clean it up. See After a sync.
How a repeat is recognized
The exact row-for-row check the import wizard runs first is described under Duplicate detection. It needs every field to agree, so a broker that reports one order as several partial fills, or a file whose price is a cent off, slips past it.
The broker check works a level up, on the execution rather than the row. It collects both sides into one group when they share:
- the root the contract trades under (an SPX-labeled weekly is grouped as SPXW),
- expiration, call or put, and strike,
- the trade date, and
- the direction - a buy (BTO or BTC) or a sell (STO or STC).
Open/close qualifiers are deliberately ignored, since the two sources often disagree on whether a fill opened or closed a position.
A group is treated as a certain repeat only when both sides agree exactly on total contracts and their quantity-weighted prices agree within a cent, or 0.25%, whichever is larger. Anything weaker is a possible repeat and is never removed without you choosing it: leaving a duplicate for a person to look at is better than deleting a real trade.
At import time
Rows that repeat a broker-synced execution are folded into the Reconcile step, where they carry their own badges in the Rows to review table:
| Badge | What it means | Default |
|---|---|---|
| Already synced | A certain repeat of an execution your connected brokerage already synced. | Left out |
| Possible duplicate | A broker execution on the same contract, day and side, differing in quantity or price. | Imported |
| Duplicate | An exact row-for-row match of a trade already in your account, whatever its source. | Left out |
Already synced rows join the duplicates question at the top of the step, so answering Ignore all leaves them out along with the exact matches, and the question's wording says how many of the duplicates came from your brokerage. Possible duplicate rows are different: they are imported unless you say otherwise, and the Bulk actions card offers Keep All N Possible Duplicates and Leave Out All Possible Duplicates, or you can decide row by row. They never block Continue to Review.
Reconcile now opens whenever possible duplicates were found, even if there is nothing else to settle.
After a sync
When a sync writes option trades into a day you had already imported, OptionsPro re-checks that day and records what it found. The Trades page then shows an amber banner:
N imported trades look like copies of trades your brokerage synced. Until you remove them, both copies count toward your P&L.
Review opens a dialog listing one row per execution, each showing the contract and trade day, an Exact match or Possible: reason badge, and the contracts and average price on each side so you can compare them. Possible matches name why they fell short - quantity differs, price differs, or one side is running on values you edited.
- Exact matches start selected. Possible matches do not - check those against your records before selecting them.
- Select all and Select none act on every listed group.
- Delete selected imported copies asks once more before anything happens, and names how many trades will go.
- Not duplicates dismisses the selected groups instead of deleting them. A dismissed group stays dismissed while its evidence is unchanged; if the trades, quantities, prices or certainty behind it move, it comes back so you can look again.
What a deletion does, and does not, do
- Only the imported copy is deleted. Broker-synced trades are never touched, whatever you select.
- The server re-checks every group before deleting it. A group that no longer matches a broker execution, or whose evidence changed after you looked at it, is left alone and reported back to you rather than acted on.
- P&L recomputes once when the deletion finishes.
- There is no undo. Re-importing the file is the only way back, and the broker-synced copy will still be there.
- If something fails partway through, the message says so and the list reloads to show what is actually left.
Limits
- The banner lists up to 500 pending groups. Selecting more than a handful is fine: one Delete selected or Not duplicates handles the whole selection, however long, in one go.
- Options only. Stock trades are not grouped into executions, so a double-counted share lot has to be found on the Trades table and deleted by hand.
- The check is insurance, not a guarantee. An overlapping export whose contract details are extracted differently can still produce a copy neither check groups, so it is still worth reviewing what you import.
Related
- Trade Import - the wizard, and the exact row-for-row duplicate check.
- Trades - where the banner lives, and how to delete imported trades yourself.
- Bulk Actions - selecting and deleting many rows at once.
Expiration & Assignment
How OptionsPro settles a contract that reaches expiration - worthless, in the money, assigned into shares, or cash-settled.
Rolling Repair Assistant
Scored roll candidates for an open position - target strike and expiration, net credit or debit, breakeven change, and delta/theta before and after.