Home/Learn/Covered calls

Learn · Covered calls

How to track covered call profit and loss

Bought 100 shares at $48, sold three calls over five months for $840 total, got called away at $55. What did the campaign make? The answer is one number — but only if you track the two streams separately and let them meet at assignment.

Oct 7, 2026 7 min read ThetaIQ Learn

The short answer

A covered call campaign has two profit streams that live in different parts of your account: the option stream (premiums collected, minus buybacks paid) and the stock stream (what your shares gain or lose). The campaign's true result only resolves when the shares leave:

Campaign profit = total option premium kept + (share exit price − purchase price) × shares "Exit price" is the strike on assignment, or your sale price if you sell the shares normally.

There's an equivalent way to see the same number, and it's the one that makes covered calls click: premium you collect lowers your real cost basis in the shares.

Real cost basis = purchase price − total premium kept per share
Campaign profit = (exit price − real cost basis) × shares Same answer, better mental model. $48 buy minus $8.40 premium = $39.60 real basis.

Worked example: one campaign, five months

You buy 100 shares of XYZ at $48 and sell calls against it as they make sense:

DateEventCash (per share)Running basis
May 4Buy 100 shares−$48.00$48.00
May 4Sell Jun $50 call+$4.40$43.60
Jun 20Call expires, sell Aug $50 call+$1.90$41.70
Aug 15Call expires, sell Oct $55 call+$2.10$39.60
Oct 17Shares called away at $55+$55.00—
Campaign profit+$15.40+$1,540

Check it both ways. Stream view: $840 premium + ($55 − $48) × 100 stock gain = $1,540. Basis view: ($55 − $39.60) × 100 = $1,540. Same number, because they're the same arithmetic in different clothes.

On a $4,800 outlay, that's a 32% campaign return in about five months — a number you'll never see if you track the calls and the stock in separate tabs.

Run your own campaign

Covered call campaign calculator

Per-share prices. "Total premium kept" = every credit minus every buyback across all calls on this lot.

Real cost basis: $39.60
Campaign profit: +$1,540

What breaks most spreadsheets

Partial coverage and partial assignment

Own 300 shares, sell 2 calls, get assigned on 200. The remaining 100 shares keep their own basis and their own history — they're a different campaign now. Basis accounting has to live per lot, not per ticker, or the leftover shares inherit a muddled average.

Buybacks mid-campaign

A buyback is negative premium. It raises your real basis. If you rolled up for a net debit of $1.00, your basis just went from $39.60 back to $40.60 — and your max campaign profit dropped by exactly $100. Sheets that log premium as "income" in a separate column never reconcile this.

Dividends and DRIP

Cash dividends are a third stream — real income, but not option premium, and they don't change basis. Reinvested dividends create new mini-lots at new prices, each needing coverage tracking of their own. This is where "I'll just average it" goes to die.

Averaging down with new lots

Buying another 100 shares at $41 while the first lot sits at $48 basis doesn't merge anything — unless you deliberately pool them. Each lot has its own real basis, its own calls, its own called-away math.

The honest dashboard

For every covered position, you want five numbers at a glance: purchase price, total premium kept, real basis, current coverage (how many calls against how many shares), and the if-called result at the current strike. If any of those requires opening a spreadsheet, the tracking has already failed — you'll stop doing it in month two, right when the chains get interesting.

That's the exact screen ThetaIQ's covered call tracker is: log the share lot, log each call and roll against it, and the app keeps premium, real basis, and if-called profit current per lot — DRIP lots and partial assignments included. When the shares finally get called away, the $1,540 is already computed; you just get to agree with it.

Basis after premium, per lot,
without the spreadsheet.

Free plan, any broker, sixty seconds to set up.

Track your covered calls free →