Smart Execution con Limit Orders
Quick Reference
Strategia per minimizzare trading costs usando limit orders con fallback a market orders.
Procedura Standard
Step 1: Define Execution Window
Tipico: Full trading day (7-8 ore) Conservative: Half day (3-4 ore) Aggressive: 1-2 ore
Longer window = più probabilità fill al limit.
Step 2: Set Limit Order
Long position:
Limit Price = Current Bid
Short position:
Limit Price = Current Offer
Obiettivo: Catturare half the spread cost.
Step 3: Monitor & Cancel
Cancel limit order SE: - Price moves away (adverse movement) - < 10% of window remaining - Urgent need to be filled
Adverse move threshold: Tipicamente 0.5-1.0 × spread width.
Step 4: Fallback Market Order
Quando mancano ~10% window (es. 45 min su day order): - Cancel limit order - Submit market order - Guarantee execution
Esempio Dettagliato
Setup
Asset: S&P 500 future Time: 9:30 AM Window: Until 4:00 PM (6.5 ore) Current: Bid 4500.25, Offer 4500.50 Spread: 0.25 points = $1.25
Long Entry Sequence
9:30 AM - Place limit buy @ 4500.25 (bid) - If filled: Save $0.625 (half spread) - Wait...
Scenarios:
A) Filled at 10:15 AM @ 4500.25: - Success! Saved 50% of spread - Cost: $0.625 instead of $1.25
B) 3:30 PM - Not filled, price now 4502: - Adverse move (missed 1.75 points) - Cancel limit, market buy @ 4502.50 - Cost: Spread ($1.25) + Adverse move ($1.75 × $5 = $8.75) - Total: $10
C) 3:45 PM - Not filled (15 min left = 10% window): - Cancel limit, market buy - Guarantee execution - Cost: Full spread $1.25
Cost Savings
Expected Savings
Probability filled at limit: ~30-50% (depends on market) Savings when filled: ~50% spread
Expected saving:
E[Saving] = P(fill) × 0.5 × Spread
≈ 0.40 × 0.5 × Spread
= 0.20 × Spread
20% average spread savings.
Example Numbers
10 trades/month, spread $1.25: - Market orders cost: 10 × $1.25 = $12.50 - Smart execution: 10 × 0.80 × $1.25 = $10 - Monthly saving: $2.50 - Annual saving: $30
Small per trade, compounds over time!
Adverse Selection Problem
Why limit sometimes doesn't fill:
Informational edge of market makers: - They see order flow - Know where stops are - Won't trade if you're getting good price
Trade-off: - Try for better price (limit) - Risk missing trade (adverse move)
Execution Window Guidelines
Urgent Trades
Trend signal just triggered: - Short window (1-2 hours) - 10% fallback at 54-60 minutes - Priority: Execution > cost savings
Non-Urgent Trades
Rebalancing, small adjustment: - Long window (full day) - 10% fallback at 3:30-4:00 PM - Priority: Cost savings
Very Patient
Multiple days: - Use "Good till Cancel" (GTC) limit - Review daily - Risk: Missing move entirely
Multiple Limit Orders
Ladder strategy:
Want to buy 4 contracts: - Limit 1 @ bid - Limit 2 @ bid + 0.25 - Limit 3 @ bid + 0.50 - Fallback: Market for remainder at 10% window
Pros: Better average price often Cons: Partial fills, complexity
Market Conditions Adjustment
Wide Spreads (Volatility)
Spread = 5 points instead of 0.25: - More valuable to use limit - But less likely to fill - Consider mid-point: (Bid + Offer) / 2
Tight Spreads (Calm)
Spread = 0.10 points: - Savings minimal - Just use market order - Simplicity > tiny saving
Illiquid Markets
Low volume: - Limit order essential - May need days to fill - Wider window (GTC)
Automation
Algo Implementation
time_elapsed = current_time - order_time
window_pct = time_elapsed / total_window
if window_pct > 0.90 and not filled:
cancel_limit()
submit_market()
if price_moved_adverse > threshold:
cancel_limit()
submit_market()
Human Implementation
Set alert at 10% window remaining: - Phone alarm - Platform alert - Don't forget!
Avoiding Common Traps
Trap 1: Waiting Too Long
"It'll come back to my limit": - Market moved 2% away - Still hoping... - Result: Missed trade, much worse price later
Solution: Strict adverse move threshold.
Trap 2: Pulling Limit Too Early
Impatient, cancel after 10 minutes: - Submit market - 1 minute later: Would have filled at limit
Solution: Stick to plan, 10% window rule.
Trap 3: Too Aggressive Limit
Limit = Bid - 1 point (better than current bid): - Never fills - Waste time - End up market order anyway
Solution: Limit at current bid/offer, not better.
Costs Comparison
Scenario: 100 Trades/Year
Spread: $1.50 average Fill rate at limit: 40%
Market orders only:
Cost = 100 × $1.50 = $150/year
Smart execution:
Filled at limit: 40 × $0.75 = $30
Market fallback: 60 × $1.50 = $90
Total = $120/year
Savings: $30/year (20%)
May seem small, but: - Compounds over decades - Scales with portfolio size - Free money for discipline
When NOT to Use
Crisis/Emergency
Market moving 5%/hour: - Just use market - Execution critical - Spread cost irrelevant vs missing move
Tiny Positions
Position < $1,000: - Spread saving = pennies - Not worth complexity - Market order fine
Very Large Orders
Position > 10% daily volume: - Need algo execution - Single limit won't work - Professional help needed
Errori Comuni
- No fallback: Limit order sits unfilled indefinitely
- Too patient: Adverse move >> spread savings
- Too impatient: Cancel immediately, lose benefit
- Wrong limit price: Setting unrealistic limit
- Ignoring market conditions: Same strategy all markets
- No automation: Forgetting to check at fallback time
Concetti Correlati
- [[Bid-Ask Spread]] - what we're trying to minimize
- [[Transaction Costs]] - execution cost component
- [[Risk Adjusted Costs]] - framework per evaluating savings
- [[Turnover]] - more trades = more important execution