# How to record options trades in a trading journal

A spread imported as legs is scored as four trades, and an expiry often has no row. Which journals rebuild the position, and what you still fix by hand.

*https://stockmarketstack.com/how-to/record-options-trades-in-a-journal · next to Trading Journal Software*

**Answer:** Export fills and the separate expirations-and-assignments record from the broker, import both, then check that the journal grouped the legs into one position. TradesViz groups spreads and links assignments to the stock; TraderSync closes unreported expiries itself; TradingDiary Pro and Tradervue leave grouping and closing to you. What breaks is the rows the broker never sends, the roll split across two symbols, and the 100 multiplier.

## The tools that do this

*In the order this page recommends trying them. Paid placement does not affect this order.*

1. [TradesViz](https://stockmarketstack.com/tools/tradesviz.md) — Groups 30-plus strategies on import, even when legs close separately, and links assignment and exercise to the stock. Options need Pro, $19.99 a month.
2. [TraderSync](https://stockmarketstack.com/tools/tradersync.md) — Closes an expired contract itself two business days after expiry when the broker sends no row. Its auto spread detection is an Elite setting.
3. [TradingDiary Pro](https://stockmarketstack.com/tools/tradingdiary-pro.md) — Windows, $149 once. Imports each leg as its own position, then groups detected strategies and attaches roll legs through Adjust, by hand.
4. [Tradervue](https://stockmarketstack.com/tools/tradervue.md) — Nothing automatic. Manage Options pre-fills the closing execution for an expired or assigned leg, which you price and date. Silver, $29.95 a month.
5. [TradeLog](https://stockmarketstack.com/tools/tradelog.md) — The tax record. Exercise and assignment book no gain or loss on the option and move the premium into the stock's basis or proceeds. From $219 a year.
6. [SnapTrade](https://stockmarketstack.com/tools/snaptrade.md) — The API route. Activities typed OPTIONEXPIRATION, OPTIONASSIGNMENT and OPTIONEXERCISE, with the 21-character OCC symbol on each option row.

## The short way

Get two things out of the broker, not one: the trade history, and the record of what happened
to contracts that were never traded out — expirations, assignments, exercises. Then import both
into a journal that understands options, and check one multi-leg position by hand before trusting
anything it reports.

The two-records part is what most people miss. An expiry is not a fill, so it is often not in the
trade export at all; Tradervue's help page puts it plainly: "Some brokers and platforms do not
provide data for expired or exercised/assigned options in their export files." Interactive
Brokers keeps them in a Flex Query section of their own, Option Exercises, Assignments and
Expirations, listing assignment, exercise and expiration activity with the underlying for each
contract. TradesViz's Interactive Brokers instructions tell you to tick that section beside
Trades, and TradingDiary Pro's list of required Flex sections includes it too. Getting the
trade file itself is covered in [exporting broker trade history](https://stockmarketstack.com/how-to/export-broker-trade-history).

Of the journals here, [TradesViz](https://stockmarketstack.com/tools/tradesviz) does the most on import: it groups legs into
spreads, can add the expiry executions and links an assignment or exercise to the stock position it
created. Options are a Pro feature at $19.99 a month; the free plan imports stocks only.

## What the options are

**A journal that rebuilds the position.** [TradesViz](https://stockmarketstack.com/tools/tradesviz)'s import settings guide,
updated 31 August 2026, has an option to "attempt advanced grouping of options" across what it
says are 30-plus strategies, a setting to "group spreads and other strategies even if individual
option legs are closed separately", and one to split multi-strike strategies the broker fused
into one. Its options page says assignment and exercise events are linked to the underlying
stock position. When grouping guesses wrong, its trade-management FAQ lets you shift-click
trades on the same underlying and merge them, or split executions out of one.

**A journal that closes what the broker forgot.** [TraderSync](https://stockmarketstack.com/tools/tradersync)'s support
pages say it closes an expired contract when the broker reports the expiry, and otherwise closes
it itself two business days after the expiration date, so the settlement price is in. Its Auto
Spread Detection, which groups legs into one trade, is described on its support pages as an
Elite-plan setting ($79.95 a month), roughly 80% accurate, and applied only to trades imported
after you switch it on — so switch it on before importing a year of history, or that year
stays as legs.

**A journal that detects and lets you assign.** [TradingDiary Pro](https://stockmarketstack.com/tools/tradingdiary-pro) is
Windows desktop software at $149 once. Its own options page says it straight: "By default,
importing trades creates separate positions for each of the four legs, each with its own P&L."
Tools → Assign Options Strategies then lists the strategies it detected, more than 25 kinds, and
you tick the ones to combine; a right-click Adjust attaches new legs to an existing strategy and
recalculates its P&L, which is how a roll stays one position.

**A journal where you close it yourself.** [Tradervue](https://stockmarketstack.com/tools/tradervue) has no automatic
handling of expiry or assignment. Its Manage Options button, on the Silver and Gold plans, opens
an execution editor pre-filled with the contract and the quantity needed to close the leg; you
set the price to zero for an expiry, or to what the assignment implied, and the date. Slow, and
exact, because you typed it.

**Tax software, which answers a different question.** [TradeLog](https://stockmarketstack.com/tools/tradelog) implements the
IRS treatment of exercise and assignment: the option shows no profit or loss, and its premium
adjusts the stock's cost basis or sale proceeds instead. From its Adjustments menu, Exercise lists
the options waiting to be matched. That is the right record for Form 8949 and the wrong one for
asking how a strategy performed, which is why it sits beside a journal rather than replacing one.

**Your own code.** [SnapTrade](https://stockmarketstack.com/tools/snaptrade)'s activities endpoint types each row, and the
types include `OPTIONEXPIRATION`, `OPTIONASSIGNMENT` and `OPTIONEXERCISE` alongside `BUY` and
`SELL`. Each option row carries the OCC symbol, a strike, an expiration, a call or put, and an
`is_mini_option` flag. SnapTrade says it does "a best effort to categorize brokerage transaction
types into a common set of values", so the event types are only as complete as what each broker
sends it.

If none of these fits, [Trademetria](https://stockmarketstack.com/tools/trademetria) can merge legs and report them as a spread, and
[Stonk Journal](https://stockmarketstack.com/tools/stonkjournal) keeps manually entered multi-leg fills under one parent trade
for free; the field is [trading journal software](https://stockmarketstack.com/categories/trade-journals).

## Where this breaks

**A spread imported as legs is four trades.** An iron condor arrives as four positions with four
P&Ls, and every statistic downstream counts them: the win rate, the average winner, the number
of trades, the P&L by symbol. Whatever the position did, its legs show up as winners and losers
of their own, and the summary describes something you did not trade. Spread detection exists to
fix this, and none of the vendors claims it is perfect — TraderSync's own figure is about 80%.
Check one known spread after every import format change.

**The expiry and the assignment have no trade row.** A contract that expired worthless was not
sold, so a trade export may simply stop mentioning it, and the journal keeps it open forever,
with an open-position count and an unrealised P&L that never go away. An assignment is worse: a
short option disappears and shares appear, and an importer reading only Trades sees a stock
purchase with no option closing against it. The fix is the second record from the broker, or a
journal that closes unreported expiries itself, or closing each one by hand.

**A roll is two symbols.** Rolling closes one contract and opens another with a different expiry
or strike, often in one order, and to the journal those are two unrelated instruments — a closed
trade with a realised result and a new trade from zero. Any grouping keyed on symbol splits them;
TradesViz's default setting, by its own description, splits a trade when the position in that
symbol goes flat. Merge them, or adjust the strategy, after import.

**The broker's symbol is not the clearing symbol.** The OCC symbol is 21 characters: the root
padded to six, the expiry as YYMMDD, C or P, and the strike times 1,000 in eight digits —
SnapTrade's documented example is `AAPL  261218C00240000`, a 240 call expiring 18 December 2026.
Brokers display their own versions. Fidelity's published format strings the same fields together
with no padding and a decimal strike, so a 27.50 Microsoft call reads `-MSFT110122C27.5`. A
journal fed from two sources has to normalise one into the other, or the same contract becomes
two positions. Adjusted contracts after a split or a special dividend add a digit to the root —
Fidelity's example is `-MSFT1110122C25` — to mark a non-standard contract, whose deliverable a
journal cannot infer from the symbol alone.
See [symbology](https://stockmarketstack.com/glossary/symbology).

**The multiplier lives outside the price.** An option quote is per share; a standard US equity
contract is 100 shares, and SnapTrade's schema flags mini options at 10. A CSV mapped by hand, or
an importer that does not recognise a row as an option, books a 2.50 premium as 2.50 dollars
rather than 250, and every P&L figure for that contract is out by a factor of 100.

**The assigned shares carry two different costs.** A journal records the short put closing at
assignment and a stock purchase at the strike, and the two rows add up to the right total.
IRS Publication 550 records the same event differently: when a put you wrote is exercised, you
"decrease your basis in the stock by the amount you received for the put", and when a call you
wrote is exercised, you increase the amount realised on the stock by the premium. Neither is
wrong, but a journal's stock basis will not match the tax basis, and a later sale of those shares
will show a different gain in each. For the tax version, the record to keep is
[cost basis](https://stockmarketstack.com/glossary/cost-basis) after the adjustment, and [wash sales](https://stockmarketstack.com/how-to/reconcile-wash-sales-across-accounts)
across accounts make it worse.

## If you outgrow this

**When the question is tax rather than review**, a journal's P&L is not a filing record:
[TradeLog](https://stockmarketstack.com/tools/tradelog) rebuilds the year from raw fills with the exercise and assignment
adjustments applied, and [wash sales](https://stockmarketstack.com/glossary/wash-sale) are the reason it exists.

**When several accounts or brokers feed one journal**, the symbol problem and the missing-row
problem multiply by the number of brokers. An aggregation API such as [SnapTrade](https://stockmarketstack.com/tools/snaptrade)
puts every broker into one schema with typed option events, at the price of writing the journal
logic yourself.

**When the journal choice is still open**, [TradesViz against Edgewonk](https://stockmarketstack.com/compare/tradesviz-vs-edgewonk)
and [Tradervue, TraderSync and TradeZella](https://stockmarketstack.com/compare/tradervue-vs-tradersync-vs-tradezella) compare
the products on more than options, and the [trading journal cost
calculator](https://stockmarketstack.com/calculators/trading-journal-cost) prices them for your number of accounts.

## FAQ

### Why does my journal show an option I let expire as still open?

Because the broker's trade file has no row for it. An expiry is not a trade, so many exports leave it out, and Tradervue's help says so directly. At Interactive Brokers it lives in a separate Flex Query section, Option Exercises, Assignments and Expirations, which has to be ticked alongside Trades. Otherwise close it by hand at zero on the expiry date.

### Should an assigned put show a loss on the option and a separate stock trade?

In a journal, that is usually how it lands, and the total across the two rows is right. For US tax, IRS Publication 550 treats it differently — the premium of a written put that is exercised reduces the basis of the shares you buy, and the option itself shows no gain or loss. TradeLog follows that rule; review-first journals generally do not.

### How do I keep a roll as one trade?

Merge it after import. A roll closes one contract and opens another with a different expiry or strike, which is a different symbol, so a journal that groups by symbol sees two trades. TradesViz merges selected trades on the same underlying; TradingDiary Pro adds the new legs to an existing strategy through Adjust. Neither does it on its own.

### Why is my option P&L out by a factor of 100?

Because option prices are quoted per share and a standard US equity contract covers 100 shares. SnapTrade's documentation, for one, gives the option price per share and describes mini options as 10 shares per contract. A journal that does not know a row is an option, or a CSV mapped by hand without a multiplier, books one contract at a premium of 2.50 as 2.50 dollars rather than 250.

## Sources

1. [Option Exercises/Assignments/Expirations — Flex Query Reference](https://ibkrguides.com/reportingreference/reportguide/options_exercises_expirations_fq.htm) — Interactive Brokers, 2025-03-20
2. [Managing Option Positions — Tradervue Help](https://help.tradervue.com/article/3443-managing-option-positions) — Tradervue, 2024-09-25
3. [Complete guide to import settings in TradesViz](https://tradesviz.com/blog/import-settings-guide) — TradesViz, 2026-08-31
4. [How to auto-import Interactive Brokers trades](https://tradesviz.com/blog/auto-import-interactive-brokers/) — TradesViz, 2026-08-25
5. [TradesViz: Options Trading Journal](https://www.tradesviz.com/options/) — TradesViz, read 2026-10-08
6. [Trade Management FAQs](https://www.tradesviz.com/product-faq/category/trade-management/) — TradesViz, read 2026-10-08
7. [How TraderSync Creates Automatic Expiration Orders](https://tradersync.com/support/how-does-tradersync-automatically-create-an-expiration-order-and-assigns-it-to-a-trade/) — TraderSync, read 2026-10-08
8. [How can I activate the auto-spread detection?](https://tradersync.com/support/how-can-i-activate-the-auto-spread-detection/) — TraderSync, read 2026-10-08
9. [Options Trading Journal](https://www.tradingdiarypro.com/options-trading-journal/) — TradingDiary Pro (Sword Tech Kft.), read 2026-10-08
10. [Creating flex queries (Interactive Brokers) — TradingDiary Pro Help](https://webhelp.tradingdiarypro.com/create_flex_querries_interactive_brokers.htm) — TradingDiary Pro (Sword Tech Kft.), read 2026-10-08
11. [Option Exercise / Assign — TradeLog Support](https://support.tradelogsoftware.com/hc/en-us/articles/115004501894-Option-Exercise-Assign) — TradeLog, read 2026-10-08
12. [Account Information — getAccountActivities](https://docs.snaptrade.com/reference/Account%20Information/AccountInformation_getAccountActivities) — SnapTrade, read 2026-10-08
13. [Option Symbology Initiative (OSI)](https://www.fidelity.com/research/options/osi.shtml) — Fidelity Investments, read 2026-10-08
14. [Publication 550 (2025), Investment Income and Expenses](https://www.irs.gov/publications/p550) — Internal Revenue Service, read 2026-10-08

*Last updated 2026-10-08. A reference page, corrected in place — not a dated post.*
