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.
Turn Covered Call Taxes Into A Position Review Workflow
Days to Expiry helps you review stock basis, short-call history, and assignment outcomes so covered call taxes are easier to classify before filing.
Use this guide to understand the rules, then review actual covered call sequences in a portfolio workflow instead of piecing them together from memory and tax forms alone.
Inspect Assignment Paths
Review whether stock was called away, expired, or rolled so tax treatment follows the actual path.
Track Holding Periods
Keep long-term versus short-term consequences tied to the shares and call cycle they came from.
Review Rolls Cleanly
Separate each roll event so gains, losses, and basis adjustments are easier to explain.
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.
Tax-Aware Net Income Calculator
Calculate your true take-home income after taxes and fees. Understand the real yield on your option strategies.
Total premium collected before taxes/fees
Total capital securing positions
Short-term rate: 24% (most option premiums)
Transaction Fees
Fee impact: 0.2% of gross income
Gross Income
$3,000
6% yield
Fees
-$7
Taxes (24%)
-$718
Net Income
$2,275
4.55% net yield
Tax Bracket Sensitivity Analysis
| Tax Region | Tax Rate | Net Income | Net Yield |
|---|---|---|---|
| Federal (22%) | 22% | $2,335 | 4.67% |
| Federal (24%)(Current) | 24% | $2,275 | 4.55% |
| TX/FL (No State) | 24% | $2,275 | 4.55% |
| Federal (32%) | 32% | $2,036 | 4.07% |
| Federal (35%) | 35% | $1,946 | 3.89% |
| NY (High) | 35% | $1,946 | 3.89% |
| CA (High) | 37% | $1,886 | 3.77% |
Shows how your net income changes across different tax jurisdictions
Tax Disclaimer: This calculator provides illustrative estimates only. Tax treatment varies by jurisdiction, income level, and individual circumstances. Consult a qualified tax professional for personalized advice. Options premiums are typically taxed as short-term capital gains in the US.
Discover real options to generate tax-efficient income
How Days to Expiry Applies This Covered Call Tax Framework
Covered call taxes are manageable when you can clearly see the stock lot, the call premium, and what happened next. They get messy when assignment, rolling, and basis adjustments are reconstructed after the fact.
Days to Expiry helps with that review layer:
- Use Portfolio View to inspect covered call history and stock outcomes in one place.
- Use Interactive Brokers Options if the broker records you need are sitting in IBKR exports and statements.
- Use this guide to classify what you are seeing so you know whether you are dealing with expiration, assignment, rolling, or wash sale exposure.
Practical next step: Pick one covered call cycle that involved either assignment or a roll, then verify you can explain the premium, stock basis, and closing outcome without relying on the 1099-B alone.
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
An important IRS distinction: selling a covered call can disqualify dividends received on the underlying stock from the lower qualified dividend tax rate (0%–20%), converting them to ordinary income (up to 37%).
When This Applies
The IRS requires you to hold the underlying stock for more than 60 days during the 121-day window surrounding the ex-dividend date. Selling a covered call that is deep in-the-money counts as a "diminished risk of loss" position, which can pause the holding period clock for this purpose.
Example:
- You own 100 AAPL shares, held 50 days.
- AAPL declares a $0.24/share dividend; ex-date is 7/15/2025.
- You sell a deep ITM $170 call (AAPL trading at $185) on 7/1/2025.
- Even though you hold the shares through the ex-date, the deep ITM call pauses your qualified holding period.
- The $24 dividend is taxed as ordinary income (e.g., 37%) instead of the qualified rate (0%, 15%, or 20%).
Avoidance: If selling covered calls on dividend-paying stocks, use OTM or slightly ITM strikes. Deep ITM calls that substantially reduce your risk exposure trigger this rule. For more on balancing premium income with dividends, see selling covered calls on dividend stocks.
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.
Common 1099-B Discrepancy: Why the Numbers Don't Match
Brokers frequently report the call premium and the stock assignment as separate line items on your 1099-B. This makes it appear as though you have two gains when the economics were one transaction.
How to reconcile on Form 8949:
| 1099-B Line | Description | Proceeds | Basis | Gain |
|---|---|---|---|---|
| Line 1 | Option expired/assigned | $0 | $150 | ($150) loss |
| Line 2 | 100 SPY shares sold | $43,500 | $41,000 | $2,500 gain |
| Corrected | Combined (add premium to proceeds) | $43,590 | $41,000 | $2,590 |
On Form 8949, you enter the corrected combined gain with a note in Column (f): "premium included in proceeds per Pub 550". This prevents double-counting.
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
Review The Stock And Call Together
Treat covered call taxes as one position history, not as disconnected option and stock events.
Covered call tax reporting is easier when you can trace the stock lot, the premium collected, and the outcome of the call in one place. Days to Expiry helps you review that full sequence before filing.
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
Written by Days to Expiry Editorial Team
The Days to Expiry trading team brings together experienced options traders and financial analysts dedicated to helping investors generate consistent income through proven options strategies.
Apply The Tax Framework