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