Build a contract record before applying filters
Start with shares you own or are independently willing to buy and sell at the selected strike. This worksheet assumes one standard call covering 100 shares, physical stock delivery and an American exercise style. Verify the actual contract specifications: adjusted contracts can have different deliverables. Shares already committed to another short call cannot cover this one again.
- Keep ticker, contract identifier, expiration, strike, currency, deliverable, exercise style and unencumbered share count together.
- Record stock price and its timestamp, option bid and ask with their timestamps and sizes, delta, open interest and session volume. Missing delta or quote time means the row cannot pass a rule that needs it.
- Add your share cost per unit, estimated transaction costs, earnings date, ex-dividend date and dividend amount from your broker or issuer records. Do not infer personal cost from an options chain.
- Use the quote time supplied by the data source, with its time zone. A page refresh time or screenshot capture time does not prove that a quote is current.
Apply a stated screen, then keep the rejection reason
The following settings are illustrative research rules, not optimized parameters. Apply them during the relevant trading session. A pass creates a review candidate, not a trade instruction. Set the thresholds before looking at the results so a high premium does not become a reason to ignore a failed check.
- Spread percentage = 100 × (ask - bid) / ((ask + bid) / 2). Evaluate unrounded inputs, and reject a nonpositive midpoint.
- Use the bid as a conservative initial sale-price assumption, then reprice at the broker. Even a displayed bid with sufficient size can disappear before an order arrives.
- If the feed is delayed, keep a separate research list and obtain current quotes before applying this freshness rule. Do not silently relax 60 seconds to accommodate unavailable data.
| Field | Example rule | Why it can fail |
|---|
| Expiration | 21 to 45 calendar days remaining | Expired, same-day or out-of-window contracts are excluded. |
| Call delta | 0.20 to 0.35 inclusive | Missing or out-of-range values fail; delta is a model sensitivity, not a guaranteed assignment probability. |
| Quote freshness | Stock, bid and ask observations no older than 60 seconds | An unknown timestamp, delayed feed or future timestamp fails this screen. |
| Spread | Bid > 0; ask ≥ bid; spread / midpoint ≤ 10% | A wide or crossed market cannot support the assumed sale price. |
| Activity and size | Open interest ≥ 100; session volume ≥ 10; bid size ≥ intended contracts | These are separate checks. Activity alone does not guarantee a fill. |
| Net premium yield | At least 2% of current share value | Deduct the stated cost allowance before applying the threshold. |
| Holding cost | Capped profit against recorded share cost ≥ 0 | A strike below your cost can crystallize a loss despite premium income. |
| Coverage and events | Enough deliverable shares; review earnings and ex-dividend dates | An event or unwanted share sale can disqualify an otherwise passing row. |
Compare five hypothetical candidates
Every row below uses a hypothetical USD 50 stock, 30 days to expiration, 100 available shares, open interest 500, session volume 50 and bid size 5 contracts. The cost allowance is USD 0.05 per share. Unless stated otherwise, stock and option quotes are 20 seconds old, share cost is USD 48, the call strike is USD 52 and the event review is clear. These are invented inputs for calculation practice, not a market snapshot.
- Candidate A: midpoint = 1.25; spread = 0.10 / 1.25 = 8%. Net premium = 1.20 - 0.05 = 1.15. Premium yield = 1.15 / 50 = 2.30%.
- Candidate E has the same option as A but a different holding cost: 52 - 55 + 1.15 = -1.85. A screen that omits personal cost cannot distinguish these outcomes.
- A missing bid, missing delta, unknown deliverable or absent quote timestamp goes into a review queue. It does not receive a zero that lets the row pass.
| Candidate | Bid / ask | Delta | Changed input | Screen result |
|---|
| A | $1.20 / $1.30 | 0.30 | None | Pass: 8% spread, 2.30% net premium yield, $5.15 capped profit per share on cost. |
| B | $1.80 / $2.40 | 0.30 | Wider market | Reject: spread is 28.57%, despite a 3.50% net premium yield. |
| C | $1.20 / $1.30 | 0.45 | Higher delta | Reject: delta exceeds 0.35. |
| D | $1.20 / $1.30 | 0.30 | Option quote age: 15 minutes | Reject: 900 seconds exceeds the 60-second limit. |
| E | $1.20 / $1.30 | 0.30 | Share cost: $55 | Reject: capped cost-basis loss is $1.85 per share. |
Separate premium income from total position return
Let S be the current stock price, B your recorded per-share cost, K the strike, p the assumed call sale price and f a per-share cost allowance. Net premium c = p - f. At expiration, with stock price T, the covered position has modeled profit min(T, K) - S + c from today, or min(T, K) - B + c against original cost. This assumes the standard covered payoff, no dividends, taxes or financing, and no early close or assignment costs beyond f.
- The $515 cost-basis gain includes the $200 stock appreciation already present when S = 50 and B = 48. It is not all earned by selling the call today.
- Some screens divide returns by net debit, S - c. Candidate A would then show 3.15 / 48.85 = 6.45% capped return. Label the denominator before comparing rankings.
- Annualizing assumes comparable opportunities can recur. It does not forecast a year of income, account for losses between trades or include compounding.
- With an in-the-money call, part of the premium is intrinsic value: max(S - K, 0). Do not label the whole premium as new economic yield without including the offsetting stock sale below S.
| Candidate A metric | Calculation | Result |
|---|
| Net premium received | 100 × (1.20 - 0.05) | $115 per covered contract |
| Premium yield on current share value | 1.15 / 50 | 2.30% for this option term |
| Maximum gain from today | 100 × (52 - 50 + 1.15) | $315, or 6.30% of $5,000 |
| Maximum gain against original cost | 100 × (52 - 48 + 1.15) | $515, or 10.73% of $4,800 |
| Breakeven from today | 50 - 1.15 | $48.85 per share |
| Breakeven against recorded cost | 48 - 1.15 | $46.85 per share |
| Simple annualized premium figure | 2.30% × 365 / 30 | 27.98%, a scaling calculation only |
Stress the stock decline and the capped upside
The same USD 115 net premium produces very different total outcomes. These expiration scenarios use Candidate A and the assumptions above. They mark the remaining shares at T when the call expires; an unrealized stock loss is still part of the position result.
- At $60, holding 100 shares alone would gain $1,000 from the $50 starting price. The covered position gains $315 under these assumptions; the call limits participation above $52.
- If you close before expiration, use the actual call repurchase price and stock sale price, then deduct costs. An expiration payoff diagram does not price that earlier exit.
| Stock at expiration | Modeled gain from today | Modeled gain against $48 cost |
|---|
| $45 | -$385 | -$185 |
| $50 | +$115 | +$315 |
| $52 | +$315 | +$515 |
| $60 | +$315 | +$515 |
| $0 | -$4,885 | -$4,685 |
Flag early assignment before counting a dividend
The Options Industry Council explains that American-style call assignment can occur before expiration and that dividend dates deserve attention. Consider a separate hypothetical update: stock at USD 53, strike 52, call market value 1.10, and a USD 0.60 dividend with the ex-date tomorrow. Intrinsic value is 1.00 and remaining time value is 0.10. A dividend larger than that time value is a reason to review early-exercise risk, not a prediction that assignment must occur.
- If the holder exercises before the ex-date, the covered writer can lose the shares and the dividend entitlement. Do not add the $60 dividend to the earlier $315 capped gain as though both were assured.
- If keeping the shares matters, evaluate the actual cost to close the call before assignment, broker deadlines and any assignment already processed. A roll closes one position and opens another; it creates a new cost and obligation.
- Near expiration, confirm assignment status with the broker before selling or covering the shares again. A payoff estimate cannot establish whether a specific holder exercised.
Use TradingView and Pineify to verify the inputs
TradingView documents an Options chain under Products > Options with expirations, strikes, bid/ask quotes and Greeks. Select the underlying and Calls, inspect the relevant expiration, and use its spread controls to narrow the view. The row details include a payoff diagram. Check whether a diagram represents only the selected option or the combined stock-and-call position before comparing it with the worksheet.
- In Pineify AI Stocks & Options Picker, open a ticker and its Options Chain tab. Choose an available expiration and Calls; inspect delta, bid, ask, volume and open interest. Sort the supported columns to review the returned contracts.
- Pineify provides this per-ticker chain view, not a dedicated cross-market covered-call ranking screen. It does not apply your share cost, the quote-age rule or all the worksheet filters automatically.
- If a quote timestamp or other required field is unavailable in the displayed chain, obtain it from a verifiable broker or exchange feed. The current view does not establish complete chain coverage or current execution prices; missing values stay unresolved.
- Record the accepted contract and every rejected row with its reason. Recheck prices, costs, events and available shares before any separate broker action. Neither this guide nor its product link places an order.