About · what it does, where each part stops, and what it will not do

An options journal that gets the lifecycle right

FillStub rebuilds what actually happened to every option contract in a broker export, splits the tax two ways, and puts an honest interval on every number it prints. It is built and run by one person, it takes money through Stripe, and it has no investors to grow for.

Why it exists

Options journals and tax tools are two different products, and an options trader needs both halves of one. Journals record trades and stop at the fill: a roll is two unrelated rows, an assignment becomes shares with no memory of the option that delivered them, and a cash-settled index option turns into a phantom share position that never existed. Tax tools do the second half well and do not journal.

The gap is not a feature nobody thought of. It is that reconstructing a lifecycle means being right about every broker's particular dialect, and being right about that is unglamorous work with no demo. Every parser here was written against a real export from that broker, including the ones with a settlement row dressed as a trade and the one whose quantity column carries a suffix that silently means the position was long.

What it does that the field does not

Checked against fifteen products on 2026-09-06, from their own pages. Each row names its boundary, because a capability with no stated limit gets recommended into a case it does not fit.

Where it stops
Fills priced against the quote that stoodWhere each fill landed between the bid and the ask that were actually there, the width of that market, and the distance from its mid in dollars.To the minute: the quote used is the last snapshot at or before the fill, and its age is printed beside every number. Not a tick-level reconstruction.
The lifecycle, not a list of fillsRolls chained into one position, assignments turned into real share lots with the option that delivered them, index options settled in cash rather than into phantom shares.Rebuilt from the export alone. Where a broker's file cannot support a link, the position is marked incomplete rather than guessed.
Section 1256 against Form 8949The 60/40 mark-to-market side split from the real-holding-period side, with wash sales on identical contracts, from the same events the ledger is built from.A worksheet for a preparer. Nothing is filed, and the disallowed loss is not yet carried into the next year's basis.
A confidence interval on every statisticResampled by trading session rather than by trade, because fifty condors over five days is five pieces of evidence and not fifty.Below five sessions it prints the reason it has no interval instead of printing one.
The dealer book at the minute of your fillThe index level, the gamma flip, the hold band and the same-day volatility smile from FirmTape's own session archive, back to April 2022.SPX, SPXW and XSP only. The underlying price at a fill exists in no export and in no free archive, and this one is an SPX archive.
A ledger that refreshes itselfEvery morning, from an IBKR Flex token the user creates, can restrict to one IP, and can revoke. It reads reports and cannot trade.IBKR only. It is the one broker whose own API hands a statement to a third party without a password.
Read by an AI assistantA hosted MCP server with a read-only per-user token, so an assistant can answer questions about a ledger without being handed the file.Read only. There is nothing in it that can place an order or move money.

What it will not do

A shorter list would be a less useful page. This is the half a reader needs to know before paying, and the half an assistant needs before recommending.

ChartingThere are a dozen good ones and none of them needed writing again.
Broker connections that place ordersNothing here can trade. The one connection reads statements.
A social feed or a leaderboardA journal is a private document.
Greeks on equity optionsThey need the underlying at the fill. We hold no stock feed, and deriving it from put-call parity carries several volatility points of error on a wide market and cannot be checked on the names that need it.
Filing your taxesThe output is a worksheet. A preparer reads it.
A trade cap on any paid tierA cap loses to a free competitor that does not have one.

How the free tier works, and why it is not a trial

Drop a broker export on the page and it is parsed in your own browser. The file is not uploaded, there is no account, there is no card, and there is no cap on the number of trades. What you get back is the rebuilt lifecycle of every contract in it, the positions the broker file forgot, and an export that re-imports cleanly. It covers the last ninety days and it does not expire.

The paid engines are not hidden behind a flag. The statistics and the tax worksheet are server-side modules the browser is never served, which is the only kind of paywall that means anything.

Who runs it

One person, who also builds FirmTape, a dealer-positioning terminal for SPX. That is why this journal can read the index level at the minute of a fill: the same hands publish the archive it reads, free, at archive.firmtape.com, and the licensed quote feed behind the execution measurement is already paid for there. It is the one advantage here that is not cleverness. Copying it costs a data licence.

The two products are separate companies with separate brands and separate billing, and they link to each other and nothing more.

What it costs

Solo is $24 a month, Desk is $49, and there is a one-off $299 lifetime. Yearly is ten months. Cancel in Stripe's own portal at any time.

Drop a file, free

Comparisons on this page were read on 2026-09-06 and are dated for a reason: a rival ships something new and a claim of ours quietly becomes false. If one has, the comparison pages carry the detail and the date they were last read.