Opinion

Why closing expired options at $0.01 is wrong

10 min read15-min delayed quotes

Some trade histories come back with every expired short option closed at $0.00999… — a penny, rounded down and hidden behind three decimal places. If yours does, you have seen it: the position never expired, it was bought back, for a price you never paid. It is a small lie, and it costs you almost nothing in dollars. It also makes the history unusable for the one thing a trade history exists to do.

This is an argument about bookkeeping, so let us be precise about the claim. We are not saying the penny loses you meaningful money. We are saying that recording an expiration as a close deletes the event that actually happened, and when that event was an assignment, the entire downstream chain — shares, cost basis, capital at risk, win rate — silently forks away from your brokerage statement and never comes back.

Three things can happen at expiration

An option position ends in exactly one of three ways, and they are not interchangeable:

  1. It expires worthless. The contract ceases to exist. No trade prints, no commission, no cash moves. For a short option, the entire credit becomes realized profit at $0.00.
  2. It is exercised or assigned. No option trade prints — a stock trade does. 100 shares move at the strike price, cash moves, and you now hold or have disposed of an equity position with a cost basis.
  3. You closed it before expiry. A real trade at a real price, which may well be $0.01 if you were buying back a nearly worthless short.

Outcome 3 is the only one where a closing price exists. A system that models expiration as “closed at $0.01” collapses all three into one, and the collapse is lossy in a very specific direction: it deletes the share leg.

First, the literal penny

Take the trivial part off the table. A $0.01 buy-to-close on one contract is a $1.00 debit that never left your account.

Fictional debits from forced penny closes
  • Contracts

    1

    Expirations per year
    12
    Phantom debits
    $12
  • Contracts

    5

    Expirations per year
    12
    Phantom debits
    $60
  • Contracts

    10

    Expirations per year
    26
    Phantom debits
    $260
  • Contracts

    20

    Expirations per year
    52
    Phantom debits
    $1,040

Every expiration recorded at $0.01 rather than $0.00, at $1.00 per contract.

Twelve dollars a year on a one-contract wheel. Genuinely nothing. A twenty-contract weekly program bleeds $1,040 of debits it never paid — and at a realistic $0.75 weekly credit, that program collects $78,000 of premium a year, so the phantom debits are 1.3% of it. Small. Not the rounding error it gets waved away as, and it runs one direction only. The dollars are not the complaint.

The long side is worse, and in the opposite direction

On a long option, the penny is a fictional credit, and the error scales with how cheap the option was:

A long option that expired worthless, recorded closed at $0.01
  • Entry price

    $4.90

    True return
    −100.0%
    Recorded return
    −99.8%
    Overstatement
    0.2%
  • Entry price

    $1.00

    True return
    −100.0%
    Recorded return
    −99.0%
    Overstatement
    1.0%
  • Entry price

    $0.35

    True return
    −100.0%
    Recorded return
    −97.1%
    Overstatement
    2.9%
  • Entry price

    $0.20

    True return
    −100.0%
    Recorded return
    −95.0%
    Overstatement
    5.0%
  • Entry price

    $0.05

    True return
    −100.0%
    Recorded return
    −80.0%
    Overstatement
    20.0%

A book of twenty $0.20 lottery tickets that all expired worthless is a −$400 month. Recorded at a penny each it is −$380, with $20 of recovery that never happened. The dollar error is trivial. But if you are running a study of whether your cheap-OTM habit is worth keeping, you have just handed yourself a systematic 5% bias in favour of the habit. Backtests die of exactly this.

Now the part that actually matters

Take the PLTR wheel from our full cycle walkthrough. The opening trade is a real quote — the 18 Sep $110 put, last traded at $4.90 on 1 August. Everything after that expiry is a modeled path, because it has not happened yet: PLTR closes at $104 and the put is assigned, two covered calls are priced with Black-Scholes at 60% implied volatility, and the shares are called away at $110 on 20 November.

The same six trades, recorded two ways
1 Aug
Sell PLTR 18 Sep $110 put @ $4.90
18 Sep
TRUTH: assigned, 100 shares at $110 · RECORDED: put closed @ $0.01
21 Sep
Sell 16 Oct $110 call @ $4.60
16 Oct
TRUTH: expired worthless · RECORDED: closed @ $0.01
19 Oct
Sell 20 Nov $110 call @ $7.30
20 Nov
TRUTH: called away at $110 · RECORDED: closed @ $0.01

The 1 Aug put is a real 15-min-delayed quote; the assignment and the two calls are a MODELED path (Black-Scholes, σ = 60%, r = 4.2%). Both histories are folded by the same engine (computeCycleState) from those identical six trades — only the recording differs.

The two histories, marked at three points in the cycle
  • Date / mark

    18 Sep — PLTR $104

    Record
    Truth
    Shares
    100
    Basis
    $110.00
    Net premium
    $490
    Unrealized
    −$600
    Total P/L
    −$110
  • Date / mark

    18 Sep — PLTR $104

    Record
    As recorded
    Shares
    0
    Basis
    Net premium
    $489
    Unrealized
    Total P/L
    +$489
  • Date / mark

    16 Oct — PLTR $108

    Record
    Truth
    Shares
    100
    Basis
    $110.00
    Net premium
    $950
    Unrealized
    −$200
    Total P/L
    +$750
  • Date / mark

    16 Oct — PLTR $108

    Record
    As recorded
    Shares
    0
    Basis
    Net premium
    $948
    Unrealized
    Total P/L
    +$948
  • Date / mark

    20 Nov — PLTR $114

    Record
    Truth
    Shares
    0
    Basis
    Net premium
    $1,680
    Unrealized
    Total P/L
    +$1,680
  • Date / mark

    20 Nov — PLTR $114

    Record
    As recorded
    Shares
    0
    Basis
    Net premium
    $1,677
    Unrealized
    Total P/L
    +$1,677

Basis is the raw cost per share. Total P/L is net premium plus realized and unrealized share movement.

On 18 September the two records are $599 apart on a single contract. One says you are down $110 holding 100 shares underwater. The other says you are up $489 holding nothing. Same account, same day, same six trades.

Look at the end row and you will see the defence: by 20 November the two histories converge to within $3. The forced penny close is self-correcting in total P/L. That is exactly the problem — it is right at the only moment nobody needs it to be, and wrong every single day in between. A trade history is a record of what you were exposed to over time. If the middle is fiction, the total is a coincidence.

The capital lie

There is a second number in that fold that never converges at all. From 18 September to 20 November, the true history has $11,000 of capital at risk — you own 100 shares of PLTR. The recorded history has $0: the put closed, the cash freed, nothing on the books.

Every return-on-capital figure you compute over that window is therefore dividing by the wrong denominator, or by zero. This is not an edge case. This is the two months in the middle of the campaign.

And the covered calls that follow are hanging off nothing. In the recorded history you sold two calls against no shares. Any risk system reading that file sees naked short calls — undefined upside risk — where you actually had a fully covered position. Get that wrong in the other direction and it is a margin call.

The win rate you did not earn

The assigned put, as a single trade
  • Outcome

    Recorded
    Closed at $0.01
    Reality
    Assigned at $110
  • Trade P/L

    Recorded
    +$489
    Reality
    −$110
  • Return on credit

    Recorded
    +99.8%
    Reality
    −22.4%
  • Counts as

    Recorded
    A win
    Reality
    An assignment

Reality marks the delivered shares at PLTR’s $104 close: (104 − 110) × 100 + $490 premium.

Recorded, this campaign is three trades, three wins, 100% win rate, +99.8% on the flagship one. In reality it was two expirations and one assignment that put you underwater for two months before the calls dug you out.

Both stories end at roughly the same P/L. Only one of them tells you that your put-selling gets assigned about a third of the time. Note that this is more than the contract’s −0.27 delta implies: the engine puts the true probability of assignment at 33.9%, and delta understates it for every put — which is precisely the fact you need if you are ever going to size the strategy correctly. A 100% win rate is not a flattering statistic. It is a broken instrument.

A trade history is not a scoreboard. It is the only dataset you have about your own behaviour, and its value is entirely in the events it records faithfully — especially the ones you would rather round off.

What a correct record looks like

It is not complicated. Expiration needs to be a distinct kind of event, not a trade with an invented price:

  • Expired worthless — closing value $0.00, no cash movement, no commission, position removed. Expiry is its own kind of event, not a trade with a price attached to it.
  • Assigned / called away — creates or removes a stock lot at the strike, carries a real per-share price (any price, including $0.00), and links to the option that caused it.
  • Bought or sold to close — a real trade, at a real price, which may legitimately be $0.01.

With those three distinct, the fold is unambiguous: premium is credited when sold, the assignment sets the cost basis, the adjusted basis walks down with every subsequent credit, and capital at risk reflects what you actually own. Both records came out of that fold, run twice on the same six trades.

What we do about your existing history

If your history is already recorded this way, none of it is your fault and you should not have to re-key years of trades to fix it. The importer handles it:

  • It reads that export directly (.xlsx or .csv — one trade row per trade, its legs beneath) and flags every leg closed at $0.00999… as a forced close rather than trusting it.
  • One tap normalizes those to $0.00, which is what actually happened, with a preview of the P/L change on every affected trade before anything is written.
  • Where a closed trade’s row carries the close timestamp in the expiration column — which the layout our file importer reads does — true expiry is derived from the leg symbols instead. Otherwise every closed trade in your history arrives with the wrong expiry.
  • It detects the wheel pattern — put sold, then shares, then calls on the same ticker — and offers to reconstruct it as a linked cycle with the stock lot and the correct cost basis, rather than one loose ticket per leg.
  • Nothing is written until you confirm. The preview shows the P/L your file recorded next to our engine’s recomputation, with discrepancies highlighted, so you can see exactly where the two disagree.

Bringing a history across needs somewhere to put it, so the import flow sits behind a free account: upload a trade-history export in the layout the file reader takes, or a screenshot of your brokerage positions for anything else, and everything is previewed and reconciled — penny closes flagged, wheel campaigns reassembled — before a single row is saved. After that the wheel tracker shows the campaign as it actually happened: the assignment, the basis step, the capital that was tied up, and the annualized return computed against that capital instead of against premium collected.

The uncomfortable part

The shortcut deserves a fair hearing. If a record’s only job is to sketch a spread, show the payoff and help you decide whether to send it, the penny close is invisible and irrelevant — nothing downstream depends on it, because there is no downstream. It turns into a defect the moment that same record is asked to be a history, and that promotion happens quietly, one feature at a time, years after the shape of the data was settled.

The general principle is worth more than the specific arithmetic: an event without a price still has to be recordable. Options expire. Options get assigned. Both are real things that happened to real capital, and a record that can only hold trades has to invent a price for them — in whichever direction keeps the model consistent, rather than the history true.

Caveats

Next: the full wheel cycle these numbers came from, or what a cash-secured put actually pays.

Not investment, tax, or legal advice. Options involve substantial risk and are not suitable for every investor. Quotes shown are 15 minutes delayed and taken from each contract’s last trade — check the live market before trading.