Perché il tuo ordine su opzioni non viene eseguito
Scopri perché un ordine su opzioni resta ineseguito: priorità dell’exchange, allocazione pro-rata, quantità che cambia prezzo e routing del prezzo netto per gli spread.
Perché il tuo ordine su opzioni di solito non viene eseguito dipende da meccanismi che una schermata retail non mostra mai: la posizione dell’ordine nella coda di allocazione dell’exchange, se la quantità a cui ti sei accodato è ancora disponibile, quanto è ampio realmente il market e se il prezzo netto di un ordine multi-leg è effettivamente eseguibile. Una quotazione visualizzata è un’istantanea del prezzo a cui qualcuno era disposto a negoziare poco prima. Adeguarsi a quel prezzo inserisce l’ordine nella coda. Non lo porta in testa.
Una quotazione su opzioni è una promessa di poter negoziare a quel prezzo?
No. Una quotazione è un’offerta su due lati che chi l’ha inserita può cancellare o modificare in qualsiasi momento. La quantità associata vale solo per quell’istante. Su un sottostante quotato attivamente, un singolo contratto aggiorna bid e ask molte volte al secondo. La nostra guida allo spread bid-ask delle opzioni spiega cosa rappresentano i due lati. A determinare l’esecuzione è la brevità con cui ogni versione della quotazione resta disponibile.
Il pannello seguente conta ogni aggiornamento delle quotazioni trasmesso dal feed per i contratti di opzioni Apple in una finestra di 30 secondi fissata, a partire dalle 14:00:00 ET del 17 giugno 2026, secondo per secondo.
L'esatto SQL dietro ogni numero
SELECT
formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') AS et_time,
round(count() / 1000, 1) AS quote_updates_k,
round(count() / uniqExact(ticker), 1) AS updates_per_contract
FROM global_markets.cache_options_quotes
WHERE ticker IN
(
SELECT ticker
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = '2026-06-17'
)
AND sip_timestamp >= toDateTime('2026-06-17 18:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-17 18:00:30', 'UTC')
GROUP BY et_time
ORDER BY et_timeNel primo secondo il feed ha trasmesso circa 0.9 mila aggiornamenti delle quotazioni su quei contratti, pari a circa 1.9 quotazioni ripubblicate per contratto in quel secondo. Un ordine non viaggia a quella velocità. Quando un clic diventa un messaggio presente sull’exchange, il book in cui arriva è già cambiato più volte.
Essere al prezzo migliore ti mette in testa alla coda?
Non da solo. Gli exchange azionari applicano soprattutto la priorità prezzo-tempo: a un determinato prezzo, chi è arrivato prima negozia per primo. Gli exchange di opzioni aggiungono due regole. Sono queste regole a lasciare gli ordini in attesa.
Gli ordini dei clienti pubblici vengono prima. Quasi tutti gli exchange di opzioni statunitensi danno precedenza agli ordini dei clienti pubblici rispetto agli ordini di market maker e professional già presenti allo stesso prezzo. Questo aspetto favorisce il trader retail.
Dopo la priorità dei clienti, l’allocazione è pro-rata e non segue l’ordine temporale. Un ordine in arrivo viene distribuito tra gli ordini presenti in proporzione alla loro quantità, spesso con un piccolo vantaggio per chi ha inserito per primo il prezzo. È la quantità, non l’ora di arrivo, a determinare la quota.
Considerando insieme queste regole, un ordine da 1 contratto accanto a uno da 500 vale un contratto su 501, non un ordine su due in coda. Un ordine in arrivo da 100 contratti può quindi eseguire un solo contratto sull’ordine più piccolo.
Il pannello seguente raggruppa per dimensione ogni trade su opzioni Apple registrato il 17 giugno 2026. Confronta poi la quota di ciascun gruppo sul totale dei print della giornata con la quota sul totale dei contratti scambiati.
L'esatto SQL dietro ogni numero
WITH
(
SELECT count()
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
) AS day_prints,
(
SELECT sum(size)
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
) AS day_contracts
SELECT
multiIf(size = 1, '1 contract',
size <= 5, '2 to 5',
size <= 20, '6 to 20',
size <= 100, '21 to 100',
'over 100') AS size_bucket,
round(100 * count() / day_prints, 2) AS share_of_trades_pct,
round(100 * sum(size) / day_contracts, 2) AS share_of_volume_pct
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
GROUP BY size_bucket
ORDER BY min(size)I trade da un singolo contratto hanno rappresentato 48.48% dei print della giornata e 7.83% dei contratti scambiati. Il gruppo over 100 mostra il contrario: 0.44% dei print ha concentrato 16.67% dei volumi. Nell’allocazione pro-rata, è il secondo dato a determinare quanto di un ordine in arrivo raggiunge un singolo ordine presente. I market maker quotano continuamente entrambi i lati e gestiscono l’inventario durante la giornata, come spiega nel dettaglio la nostra guida a come guadagnano i market maker.
Perché il mio ordine su opzioni non viene eseguito al mid?
Il mid è un valore aritmetico: bid più ask, diviso due. Nessuno è obbligato a negoziare a quel prezzo. I due prezzi sempre disponibili sono i naturals: l’ask se acquisti e il bid se vendi. Ogni prezzo tra il natural e il mid è una trattativa. L’esecuzione avviene quando il modello della controparte valuta il contratto a un prezzo più favorevole per il tuo lato del midpoint, oppure quando arriva un secondo ordine pubblico che vuole effettuare l’operazione opposta.
L’ampiezza della trattativa dipende da quanto è largo il market. La larghezza varia molto in base al prezzo del contratto. Il pannello seguente usa la stessa finestra di 30 secondi, raggruppa ogni quotazione sulle opzioni Apple in base al prezzo del contratto e riporta lo spread mediano quotato in centesimi, insieme allo stesso spread espresso come percentuale del mid.
L'esatto SQL dietro ogni numero
SELECT
price_bucket,
round(quantileExact(0.5)(spread) * 100, 1) AS median_spread_cents,
round(quantileExact(0.5)(100 * spread / mid), 1) AS spread_pct_of_mid
FROM
(
SELECT
toFloat64(ask_price) - toFloat64(bid_price) AS spread,
(toFloat64(ask_price) + toFloat64(bid_price)) / 2 AS mid,
multiIf(mid < 0.50, 'under $0.50',
mid < 2.00, '$0.50 to $2',
mid < 5.00, '$2 to $5',
mid < 15.00, '$5 to $15',
'$15 and up') AS price_bucket,
multiIf(mid < 0.50, 1, mid < 2.00, 2, mid < 5.00, 3, mid < 15.00, 4, 5) AS bucket_order
FROM global_markets.cache_options_quotes
WHERE ticker IN
(
SELECT ticker
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = '2026-06-17'
)
AND sip_timestamp >= toDateTime('2026-06-17 18:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-17 18:00:30', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY price_bucket
ORDER BY min(bucket_order)I contratti del gruppo under $0.50 mostravano uno spread mediano di 17 centesimi, pari a 75% del mid. I contratti del gruppo $15 and up mostravano 170 centesimi, pari a 3.8% del mid. In centesimi, il contratto più costoso presenta la quotazione più ampia. In percentuale, invece, il contratto più economico ha un market molto più largo. Un ordine fermo al midpoint chiede alla controparte di rinunciare a una quota rilevante di quello spread. Liquidità e volatilità incidono sull’ampiezza in direzioni diverse, e due contratti sullo stesso sottostante possono comportarsi in modo completamente diverso.
Un market order rispetto a un limit order elimina la questione del prezzo e ne introduce un’altra. Un market order esegue contro ciò che il book contiene in quell’istante. Su una serie di opzioni thinly traded, il prezzo può trovarsi a diversi tick di distanza dall’ultima quotazione visualizzata sullo schermo.
Perché uno spread non viene eseguito quando entrambe le leg sembrano eseguibili?
Un ordine multi-leg non resta nei due book delle singole leg. Viene instradato verso un complex order book e abbinato come un unico pacchetto, sulla base del prezzo netto. L’exchange lo esegue contro un altro ordine complesso oppure contro i book delle singole leg quando il loro prezzo combinato è migliore del tuo prezzo netto. In entrambi i casi, l’esecuzione avviene solo quando viene determinato il prezzo dell’intero pacchetto.
Prendiamo un ipotetico call spread a due leg. La leg long è quotata con bid a 1,20 dollari e ask a 1,35 dollari; la leg short con bid a 0,60 dollari e ask a 0,72 dollari. Acquistare il pacchetto ai naturals costa 1,35 meno 0,60, cioè un debit di 0,75 dollari. Vendere ai naturals produce 1,20 meno 0,72, cioè un credit di 0,48 dollari. Il market netto del pacchetto è quindi bid a 0,48 dollari e ask a 0,75 dollari, con un midpoint di 0,615 dollari. Osservare separatamente le leg non dice nulla sulla possibilità di eseguire a 0,62 dollari. Il book combinato mantiene un proprio market su due lati e propri ordini presenti.
Ne derivano due conseguenze. Se una leg viene eseguita al tuo prezzo nel book della singola leg, il tuo spread può restare ineseguito. Inoltre, il tuo ordine non era mai presente in quel book. Uno spread prezzato in base alle leg anziché al prezzo netto è rapportato a un book che non esiste.
Perché un ordine non viene eseguito su uno strike con volume pari a zero?
Non c’è alcun malfunzionamento. La maggior parte degli strike quotati non viene scambiata nella maggior parte delle sedute. Una chain elenca tutti gli strike aperti dall’exchange, ma molti restano quotati senza esecuzioni, talvolta per settimane. Il volume conta i contratti scambiati oggi. L’open interest conta le posizioni ancora aperte. La differenza tra i due concetti è spiegata nel nostro approfondimento su volume e open interest delle opzioni.
Il pannello seguente misura quanto si riduce la liquidità degli strike più esterni. Considera ogni contratto Apple con una scadenza tra 20 e 45 giorni nei mesi di maggio e giugno 2026, li raggruppa in base alla distanza dello strike dal prezzo del sottostante nella giornata e riporta il volume giornaliero mediano, insieme alla quota di giornate-contratto con meno di 10 contratti registrati.
L'esatto SQL dietro ogni numero
SELECT
moneyness_bucket,
round(quantileExact(0.5)(toFloat64(volume)), 0) AS median_daily_volume,
round(100 * countIf(volume < 10) / count(), 1) AS share_under_10_lots_pct
FROM
(
SELECT
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS gap,
multiIf(gap < 0.02, '0% to 2% from spot',
gap < 0.05, '2% to 5% from spot',
gap < 0.10, '5% to 10% from spot',
gap < 0.20, '10% to 20% from spot',
'more than 20% from spot') AS moneyness_bucket,
multiIf(gap < 0.02, 1, gap < 0.05, 2, gap < 0.10, 3, gap < 0.20, 4, 5) AS bucket_order,
volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= '2026-05-01'
AND date < '2026-07-01'
AND days_to_expiry BETWEEN 20 AND 45
AND underlying_close > 0
)
GROUP BY moneyness_bucket
ORDER BY min(bucket_order)I contratti 0% to 2% from spot hanno registrato un volume giornaliero mediano di 354 contratti. Nel 2% delle giornate-contratto sono stati registrati meno di 10 contratti. I contratti more than 20% from spot hanno registrato una mediana di 6 contratti al giorno. In quel gruppo, nel 55.4% delle giornate-contratto sono stati registrati meno di 10 contratti. Un ordine fermo su uno di questi strike attende flussi che non stanno arrivando. L’unica controparte costante è il market maker che aveva quotato lo strike.
Cosa cambia il funzionamento del mercato per un ordine
- Uno spread viene prezzato sul valore netto. Il complex book abbina i pacchetti, mentre il prezzo di una singola leg non ha una priorità autonoma al suo interno.
- Il mid funziona da riferimento. In un market ampio, i due prezzi sempre disponibili sono i naturals: l’ask per un acquisto e il bid per una vendita.
- La quantità determina la quota di un’esecuzione pro-rata. Un ordine da 1 contratto accanto a ordini molto più grandi riceve una quota proporzionale di ciò che arriva.
- Uno strike poco scambiato pone prima una questione di quotazione e poi una questione di ordine. Non sta arrivando nulla con cui abbinare l’ordine.
Domande frequenti
Perché il mio limit order su opzioni non viene eseguito quando è al bid?
Inserire l’ordine al bid lo colloca nella coda a quel prezzo. Gli exchange di opzioni assegnano le esecuzioni in base allo status del cliente e alla quantità, non esclusivamente all’ordine di arrivo. Un ordine piccolo accanto a ordini molto più grandi riceve una quota proporzionale di ogni trade. Su un print di dimensioni moderate, questa quota può essere arrotondata a zero.
Gli exchange di opzioni eseguono gli ordini nell’ordine in cui arrivano?
Nella maggior parte dei casi, no. Gli ordini dei clienti pubblici hanno precedenza sugli ordini di market maker e professional allo stesso prezzo. La quantità restante viene generalmente allocata pro-rata, in proporzione alla quantità di ciascun ordine presente. Alcuni exchange aggiungono un vantaggio di priorità a chi ha inserito per primo il prezzo.
Cosa significa pagare il natural in un ordine su opzioni?
Il natural è il prezzo già visualizzato sul tuo lato del market: l’ask quando acquisti e il bid quando vendi. Un ordine al natural è eseguibile contro la quotazione corrente. Un ordine al mid attende invece che la controparte migliori il prezzo.
È normale che un’opzione con volume pari a zero non venga mai eseguita?
Sì. La maggior parte degli strike quotati non viene scambiata nella maggior parte delle sedute. Un ordine fermo su uno di questi strike compete per flussi che non stanno arrivando. La quotazione visualizzata è in genere l’obbligo di un market maker. L’esecuzione dipende dal fatto che quel prezzo sia ancora conveniente per il market maker in quel momento.
Come sono stati costruiti questi pannelli
I due pannelli sulle quotazioni utilizzano una finestra di 30 secondi fissata, dalle 14:00:00 alle 14:00:30 ET del 17 giugno 2026. L’analisi è limitata ai contratti di opzioni Apple con un record giornaliero dei greeks in quella data. Fissare la finestra mantiene stabili questi numeri ogni volta che l’articolo viene rigenerato. Il censimento degli strike copre maggio e giugno 2026 e mantiene volutamente anche i contratti che non hanno registrato alcun volume. La frequenza con cui uno strike quotato resta senza scambi è esattamente ciò che misura quel pannello. I timestamp archiviati sono in UTC e vengono convertiti in Eastern time all’interno di ciascuna query.
Ogni pannello qui sopra riporta sotto di sé l’SQL completo. Per eseguire le stesse misurazioni su un contratto che segui, poni la domanda in inglese semplice sul terminale Strasmore.