Covered call writing is marketed as a "passive income" strategy. On taxes, it's more complicated.
Here's what most people get wrong:
The sale price of your stock isn't your actual sale price. When your covered call is assigned, your taxable proceeds include both the stock price and the premium you originally collected.
This changes everything about cost basis, holding periods, and whether you owe short-term or long-term capital gains tax.
This guide walks through the tax mechanics of covered calls, assignment scenarios, rolling, and how to report them.
Covered Call Tax Basics
When you sell a covered call:
- Opening: You collect a premium (taxable as gain when position closes)
- Hold: The premium reduces your cost basis in the stock
- Assignment: Stock is called away at strike price; you realize gain
The key insight: Your taxable proceeds = Strike price + Premium collected.
Real Example: Basic Covered Call (No Assignment)
You own 100 SPY shares, bought at $410/share on 6/1/2025 (held 6 months).
You sell a $435 covered call, collect $0.90 premium on 10/1/2025.
Scenario A: Call expires worthless (SPY ends below $435)
On 10/18/2025 (call expiration):
- SPY is at $430
- Your call expires worthless
- You keep the $0.90 premium ($90)
- You still own 100 shares
Tax treatment:
| Event | Tax Impact |
|---|---|
| Sell covered call, collect $0.90 | No tax event yet (premium held) |
| Call expires worthless | Short-term capital gain: $90 (premium) |
| You still own stock | Holding period continues (now 7 months total) |
At year-end (if you sell the stock):
- Basis: $410 - $0.90 = $409.10/share
- Sale price: Whatever SPY is trading at
- Holding period: Started 6/1, so long-term (1+ year rule applies from original buy)
- Tax rate: 20% (long-term) on any gain above $409.10
Scenario B: Call is Assigned (SPY rises above $435)
SPY rallies to $445 by 10/18/2025. Your $435 call is assigned.
What happens:
- Your 100 shares are called away at $435/share = $43,500 proceeds
- Your cost basis in the stock: $410/share
- Your premium collected: $0.90/share
- Holding period: 6/1 to 10/18 = ~4.5 months (short-term)
Tax calculation:
| Item | Amount |
|---|---|
| Stock proceeds (strike price) | $43,500 |
| Cost basis | $41,000 |
| Stock gain before premium | $2,500 |
| Premium collected | $90 |
| Total gain | $2,590 |
| Holding period | Short-term (4.5 months) |
| Tax rate | 37% (short-term) |
| Tax owed | $2,590 × 37% = $958.30 |
Key point: Your actual proceeds are strike ($435 × 100 = $43,500) plus the premium ($90 for a total of $43,590 effective proceeds).
But the IRS doesn't report it that way on your 1099-B. Instead:
- 1099-B shows proceeds: $43,500 (strike price)
- 1099-B shows cost basis: $41,000 (original cost)
- 1099-B shows gain: $2,500
The $90 premium appears separately (usually as a short-term gain on the option close).
When filing taxes, you combine:
- Stock gain: $2,500 (40% LTCG? No, only 4.5 months held, so STCG)
- Option premium: $90 (STCG)
- Total: $2,590 STCG
The Holding Period Trap
Here's where covered calls get tricky:
If your stock hasn't been held 1+ year, the entire covered call gain is short-term capital gains (37% rate).
Even if the stock was held < 1 year, your cost basis is reduced by the premium, which affects your holding period calculation.
Holding Period Example 1: Assignment Before 1-Year Mark
- Buy 100 SPY on 1/15/2025 at $400/share
- Sell 2/15/2025 $425 covered call, collect $2.00 premium
- Call assigned 2/20/2025 (SPY at $428)
- Holding period: 36 days (< 1 year)
Tax treatment:
- Stock proceeds: $425 × 100 = $42,500
- Cost basis: $400 - $2.00 premium = $398/share (effective basis)
- Capital gain: ($425 - $398) × 100 = $2,700
- Type: Short-term capital gain (held 36 days)
- Tax: $2,700 × 37% = $999
Holding Period Example 2: Assignment After 1-Year Mark
- Buy 100 SPY on 1/15/2025 at $400/share
- Sell 2/15/2026 $425 covered call, collect $2.00 premium
- Call assigned 2/20/2026 (SPY at $428)
- Holding period: 1 year + 36 days (long-term)
Tax treatment:
- Stock proceeds: $425 × 100 = $42,500
- Cost basis: $400 - $2.00 premium = $398/share
- Capital gain: ($425 - $398) × 100 = $2,700
- Type: Long-term capital gain (held 1+ year)
- Tax: $2,700 × 20% = $540
Difference: Assignment before 1-year mark costs you $999 tax vs $540 after. That's $459 tax difference on a $2,700 gain.
Strategy implication: If your stock is close to the 1-year mark, be careful about selling aggressive (low strike) covered calls. If assigned before 1-year, you'll owe a lot more tax.
Rolling a Covered Call: Tax Treatment
When you roll a covered call, you're:
- Buying back (closing) the short call
- Selling a new call at a higher strike or later expiration
Each leg is taxed separately.
Real Example: Rolling a Covered Call
- Buy 100 SPY on 7/1/2025 at $415/share
- Sell 9/1/2025 $430 covered call for $1.50 premium (earned)
- On 9/15/2025, SPY is at $428; you decide to roll
- Buy back the $430 call at $2.50 (loss: you sold at $1.50, buying back at $2.50)
- Sell 10/1/2025 $435 call for $1.20 premium
Tax treatment for each event:
Event 1: Original call sale
- Premium collected: $1.50 (no tax yet; it's part of unrealized position)
Event 2: Buy back (close) the original call
- Sold at: $1.50
- Bought at: $2.50
- Loss: -$1.00 × 100 = -$100
- Type: Short-term capital loss (held ~2 weeks)
- Tax impact: -$100 deduction
Event 3: Sell the new call
- Premium collected: $1.20
- No tax yet (unrealized)
Running tax tally at this point:
- Call 1 closed: -$100 loss
- Call 2 open: $1.20 premium (unrealized)
- Net so far: -$100 + $1.20 = -$98.80 gain (or $98.80 net loss if closed)
The key: Each roll creates two separate tax events:
- Closing the previous call (may be gain or loss)
- Opening a new call (future gain or loss)
Tax Trap: Rolling for a Credit Reduction
Many traders roll calls to reduce the loss when the stock drops below the strike.
Example that goes wrong:
- Buy 100 SPY at $430/share on 1/15/2025
- Sell 2/15/2025 $435 call for $2.00 (premium collected)
- On 2/1/2025, SPY drops to $420
- Your $435 call drops to $0.50 (buy back loss: sell at $2.00, buy at $0.50, gain is $1.50)
- Sell 3/15/2025 $430 call for $1.00
Tax treatment:
| Event | Tax Impact |
|---|---|
| Sell call 1 | $2.00 premium collected (deferred) |
| Buy back call 1 at $0.50 | Gain: ($2.00 - $0.50) × 100 = $150 short-term gain |
| Sell call 2 | $1.00 premium collected (deferred) |
| If call 2 expires worthless | $100 short-term gain |
| If call 2 assigned at $430 | Stock proceeds $43,000 - basis $430 = $1,000 STCG (if < 1 year held) |
This looks like:
- Call 1 close: +$150 short-term gain
- Call 2 close or assign: +$100 short-term gain
- Stock (if assigned): +$1,000 short-term gain
- Total tax: ($150 + $100 + $1,000) × 37% = $457.30
But here's the trap: If you rolled to avoid loss, you've turned a -$430 loss (stock below basis) into a +$1,250 gain. That's $1,680 more tax.
Better strategy: Accept the loss, don't roll. Use it to offset other gains.
Wash Sale Rules + Covered Calls
The wash sale rule states: If you sell a security at a loss, you can't buy the same security (or substantially identical security) within 30 days before or after the sale.
How this affects covered calls:
Scenario: Buy-Write at a Loss
You own 100 shares, now worth $380 (you paid $400). You're holding for tax loss harvesting.
You sell a covered call for $2.00 at the $400 strike.
If the call is assigned:
- You're forced to sell at $400 strike
- This creates a $0 loss or small gain (depending on premium)
- The stock is gone, so no wash sale issue
But if the stock rallies and the call expires worthless:
- You keep the $200 premium gain
- Stock is still in your possession at $380 cost basis
- You decide to sell the stock at a loss (now $380)
- Wash sale rule applies: If you bought another 100 shares in the 30 days before collecting the premium, the loss is disallowed
Example: Wash Sale Trap
- 1/15/2025: Buy 100 SPY at $420/share (now worth $380 on 2/15/2025)
- 2/15/2025: Sell $400 covered call for $2.00 premium
- 2/20/2025: Call expires worthless; you keep $200 premium
- 2/21/2025: You sell 100 SPY at $380/share for -$4,000 loss
- Meanwhile (for unrelated reasons), 3/1/2025: You buy 100 SPY at $375/share (entry point for new trade)
Wash sale analysis:
- Sold at loss: 2/21/2025 ($380 loss = $4,000)
- Bought substantially identical: 3/1/2025 (within 30 days)
- Result: $4,000 loss is disallowed. Cost basis of new shares is adjusted.
To avoid this: If you're going to sell a covered call on a losing position, make sure you don't buy the same security within 30 days after selling at a loss.
Early Assignment + Tax Consequences
Early assignment (before expiration) happens when:
- The option is deep in-the-money (ITM)
- The underlying pays a dividend before expiration (most common reason)
Example: Early Assignment on Dividend
- You own 100 Berkshire Hathaway shares, sold a $650 call (now trading at $680, deep ITM)
- Berkshire pays a $50 dividend on 10/15/2025
- Your call holder exercises early on 10/14/2025 to capture the dividend
- You're assigned early
Tax treatment:
- You don't receive the $50 dividend (the call holder gets it)
- Your stock is called away at the $650 strike
- Your capital gain is still: $650 strike - $400 cost basis = $250 gain
- Assignment date determines holding period (not the original purchase date)
The twist: If you were 1 week away from 1-year holding period, early assignment locks in short-term capital gains instead of long-term. The call holder's dividend capture forced you into a less-favorable tax situation.
Strategy: In dividend-paying stocks near long-term holding periods, avoid selling deep ITM calls, or set strikes high enough that early assignment doesn't hurt.
How to Report Covered Calls on Taxes
Step 1: Gather Data
Export from your broker:
- Date of stock purchase
- Cost basis per share
- Date of covered call sale
- Premium collected
- Date of expiration or assignment
- Strike price (if assigned)
- Current market price (if expired)
Step 2: Calculate P&L for Each Covered Call Cycle
If call expires worthless:
P&L = Premium collected (short-term capital gain)
If assigned:
Proceeds = Strike price × 100 + Commission adjustments
Cost basis = Original cost - Premium collected
P&L = Proceeds - Cost basis
Type = Short-term or long-term (based on stock holding period)
Step 3: Report on Form 8949 and Schedule D
-
List the closed covered call on Form 8949 (Sales of Capital Assets)
- Description: "100 SPY @ $435 strike, covered call, assigned"
- Date acquired: Stock purchase date
- Date sold: Assignment date or expiration date
- Proceeds: Strike price + premium
- Cost basis: Stock basis - premium
- Gain/loss: Calculated above
-
Transfer totals to Schedule D
- Short-term section: Most covered calls fall here (unless held 1+ year)
- Long-term section: Only if stock held 1+ year at time of assignment
Step 4: Handle Multi-Year Positions
If you hold a stock > 1 year and sell multiple covered calls, each roll might have different tax treatment:
Example:
- Held stock 1.5 years
- Sell 5 consecutive covered calls over 6 months
- Call 1 expires (LTCG on premium: $100)
- Calls 2-5 also expire or assigned (each is LTCG: ~$80-100 each)
- Total: ~$500 long-term capital gain
All at 20% rate, not 37%.
Covered Call Tax Planning Strategies
Strategy 1: Avoid Assignment Before 1-Year Mark
If your covered call stock is close to 1-year holding, don't sell aggressively-priced (low strike) calls.
Better approach:
- Sell calls at higher strikes (out-of-money) to reduce assignment probability
- If assigned, it's after 1-year mark; taxes are 20% instead of 37%
Strategy 2: Use Covered Calls to Accelerate Long-Term Gains
If you own a stock that has appreciated 50%+ and is already long-term:
- Sell aggressive covered calls (lower strikes)
- Get assigned at a high strike price
- Realize gain at 20% long-term rate
- Use proceeds to buy another stock
- This is more efficient than holding forever
Strategy 3: Layer Covered Calls on Tax-Loss Harvested Shares
If you sold a stock at a loss earlier in the year:
- Buy it back 31+ days later (avoid wash sale)
- Immediately sell covered calls at high strikes
- Collect premium; if assigned, realize smaller gain
- The wash sale loss from the first sale offsets other gains elsewhere
Strategy 4: Roll Into Lower Prices to Defer Assignment (Tax Deferral)
If stock has appreciated significantly and assignment would trigger huge capital gains:
- Roll to lower strikes to collect more premium
- Defer assignment into next tax year
- This shifts capital gains tax liability to a different year
Example:
- Own 100 SPY, up $5,000
- Sell $450 call; stock rallies to $452; call is ITM but not assigned yet
- Roll to $460 strike; collect additional $0.50 premium
- Call expires worthless (or assigned later in December)
- This defers realization to later in tax year or next year
Covered Calls and Qualified Dividend Income
Here's an interesting IRS rule: If your covered call is "naked" in the sense that it's underwater (stock is below strike), collected premiums are still ordinary income, not qualified dividends.
Most retail traders don't worry about this because premiums are short-term gains anyway.
But for a 1099-B error, it's worth knowing.
Reporting Covered Calls on Your 1099-B
Your broker will send you a 1099-B that shows:
Entry 1 (call sale):
Proceeds: $0 (call sale; no proceeds until expiration/assignment)
Cost: Premium amount (e.g., $1.50)
Gain/Loss: -$1.50 (appears as loss, but it's actually unrealized premium)
Entry 2 (call expiration):
Proceeds: $0
Cost: $0
Gain/Loss: $1.50 short-term gain (the $1.50 premium, now realized)
Code: X (expiration)
OR
Entry 2 (call assignment):
Proceeds: Strike price × 100 (e.g., $43,500 for $435 strike)
Cost: Stock basis - premium (e.g., $41,000 - $150 = $40,850)
Gain/Loss: $2,650
Code: E (exercise)
Plus a separate entry for the stock:
The 100 shares are reported as a "call away" or assignment. Your broker's 1099-B format varies.
Covered Call Taxes With Multi-Position Scenarios
If you own multiple 100-share blocks of the same stock and sell multiple covered calls:
Example:
- Block A: 100 SPY at $400/share, bought 1/15/2025
- Block B: 100 SPY at $410/share, bought 6/15/2025
- Both still held 10/15/2025 (Block A = long-term in 3 months; Block B still short-term)
If you sell covered calls on both blocks and both are assigned:
- Block A: Assignment = long-term gain (if assigned after 1/15/2026)
- Block B: Assignment = short-term gain (if assigned before 6/15/2026)
- Different tax rates apply to each
Reporting: You'd have two separate entries on Form 8949, each with different holding period classification.
Bottom Line: Covered Call Taxes
Key takeaways:
-
Covered calls reduce your stock cost basis by the premium collected
- Basis: Original price - Premium = Adjusted cost basis
- Example: Buy at $410, sell $1.50 call = $408.50 basis
-
If assigned before 1-year holding, all gains are short-term (37% rate)
- Stock gains + call premiums = taxed as short-term
- Plan to avoid assignment before 1-year if possible
-
If assigned after 1-year holding, all gains are long-term (20% rate)
- Strategy: Hold through 1-year, then sell aggressive covered calls
- Realize gains at lower tax rate
-
Rolling creates multiple tax events
- Closing the old call = gain or loss
- Opening new call = future gain or loss
- Track each separately
-
Wash sale rules still apply
- Don't sell at a loss, then buy back within 30 days
- Affects covered calls on losing positions
-
Report on Form 8949 + Schedule D
- Describe the covered call
- Specify if assignment or expiration
- Classify as short-term or long-term
-
File Form 6781 if trading Section 1256 contracts (SPX)
- Covered calls on SPX get 60/40 tax treatment
- Better than regular covered calls on SPY
Related Articles
Master the tax side of covered calls:
- Complete Options Tax Guide – Full framework
- Interactive Brokers Tax Statement Guide – How to read statements
- SPX Options Tax Treatment – Better tax treatment
- Understanding Wash Sale Rules – Avoid loss disallowance
- Form 1099-B Walkthrough – Reading your forms