Limit price & fill heuristic
For every order WheelTrading pre-fills the limit price with the mid (Bid+Ask)/2 and describes in plain language where that price sits inside the current price range. The pre-fill is fully editable and constitutes neither investment advice nor a recommendation. We avoid options-trader jargon on purpose – the technical terms are still shown in brackets (Bid, Ask, Mid, Spread) for the pros.
Glossary
- Limit (your price): only fills at this price or better for you.
- Bid (buyer's price): what buyers currently pay. As a seller you
fill immediately here.
- Ask (seller's price): what sellers currently ask.
- Mid: arithmetic mean
(Bid+Ask)/2. Theoretical fair value. - Spread (price range):
Ask − Bid. Wide range = low liquidity. - Position in range: 0 % = at buyer's price, 100 % = at seller's price.
- IV percentile (last 12 months): share of trading days in the past
52 weeks where implied volatility was at or below today.
Quote source
- NYSE open (09:30–16:00 ET, Mon–Fri, no holiday): live quotes from
the IBKR Client Portal (your market-data subscription).
- NYSE closed: delayed snapshots, automatically falling back to
yfinance. In the modal this is flagged with a "Delayed · NYSE closed" badge – re-check at the next open.
Recommendation per option type
The heuristic is intentionally asymmetric because puts and calls have different goals:
| Option type | Intent | Recommendation |
|---|---|---|
| Selling a CALL (you want the shares to go) | fill-oriented | close to buyer's price (Bid) |
| Selling a PUT (you don't want the shares) | premium-oriented | closer to mid |
| Buying a CALL back (save premium) | premium-oriented | closer to mid |
| Buying a PUT back (close the obligation) | fill-oriented | close to seller's price (Ask) |
For wide ranges the suggestion is pushed even further toward "safe fill" (see table below).
Range classes
| Range width | Class | Meaning |
|---|---|---|
| < 5 % | tight | very tradable, mid is realistic |
| 5 % – 15 % | normal | mid ±1 tick is the standard |
| 15 % – 30 % | wide | mid rarely fills, lean toward bid/ask |
| > 30 % | very wide | illiquid, clearly toward bid/ask |
Volatility modifier
If the IV percentile (52 weeks) is known:
- > 70 % (premium historically rich): you can be slightly more
aggressive (suggestion moves toward more premium).
- < 30 % (premium historically cheap): we recommend a safer fill
instead of waiting for better conditions.
If history is missing (e.g. new symbol), only the range-based logic applies.
Fill outlook (algorithmic)
From the position of your limit in the price range we derive an algorithmic classification of the fill likelihood. Data basis: current Bid/Ask/Mid quotes (IBKR Client Portal or delayed yfinance fallback), range width and — if available — the 52-week IV percentile.
| Position | Outlook |
|---|---|
| ≤ 5 % | fills immediately (minimal premium) |
| 5 % – 85 % | likely within the trading session |
| 85 % – 100 % | needs market move – order can stay open for days |
| > 100 % | above seller's price – only on a clear move |
The last two classes trigger a confirmation gate ("send anyway" checkbox) before the order goes to IBKR.
The value shown is an algorithmic classification of the current market picture – not a forecast, not investment advice, not a recommendation. Actual execution depends on the market and may deviate at any time.
Confirmation gate (previously: MID drift gate)
Until 2026-06-24 drift was measured against the mid. With wide ranges this produced the paradoxical behaviour that a limit sitting at the buyer's price (perfect for a fast sell) was flagged as drift.
Since 2026-06-25: confirmation is only required when the position in the range clearly tilts toward the seller's price or when no fresh quote is available.
Real-world example
GEN, covered call @ 26, price range $0.25 / $0.35 / $0.45 (57 % – very wide). You sell the call and want the shares to go.
- Suggestion: $0.30. You give up 5 cents versus mid but get a
realistic fill chance within the session.
- Your limit $0.25 (at buyer's price): fills immediately, but you
only collect the minimum premium. If that's intended: just send.
In the old UI this would have shown "Drift 40 %" – misleading and now fixed.