Modifier un ordre fait-il perdre sa priorité ?
Modifier le prix d’un ordre limite le renvoie en fin de file. Mesurez le coût sur la probabilité d’exécution et le seuil de rentabilité du re-pricing pour un bot.
La modification d’un ordre et la priorité dans la file d’attente s’opposent. Sur les carnets d’ordres actions américains et sur la plupart des marchés de futures, modifier le prix d’un ordre à cours limité en attente le renvoie en fin de file à son nouveau prix. Augmenter la quantité affichée produit le même effet. Réduire la quantité permet de conserver sa place. Annuler un ordre pour en envoyer un nouveau revient à arriver de nouveau dans la file, avec un nouvel horodatage, quel que soit le nom du bouton sur votre plateforme.
Modifier un ordre fait-il perdre la priorité dans la file ?
Quatre règles couvrent presque toutes les places de marché auxquelles un trader autonome peut accéder.
- Modifier le prix fait perdre la priorité. L’ordre arrive à son nouveau prix comme un nouvel arrivant, derrière tous les ordres déjà présents à ce niveau.
- Augmenter la quantité affichée fait perdre la priorité. Certaines places ne remettent en file que la quantité ajoutée et laissent la tranche initiale en place. D’autres réattribuent un nouveau timestamp à l’ensemble de l’ordre. Dans aucun cas, les actions supplémentaires ne conservent votre ancienne position.
- Réduire la quantité affichée préserve la priorité. La place considère cette modification comme une annulation partielle. Restituer une partie de la quantité ne coûte donc rien en termes de position dans la file.
- Annuler puis renvoyer l’ordre fait perdre la priorité à chaque fois. Un intervalle s’écoule entre les deux opérations, pendant lequel aucun de vos ordres n’est actif.
Cette asymétrie obéit à une logique. La priorité temporelle rémunère le fait d’être resté positionné à un prix pendant que les autres attendaient. Ajouter de la quantité ou modifier le prix implique un nouveau risque. Ce nouveau risque prend place en fin de file. Réduire la quantité retire du risque. Il n’y a donc rien à facturer. Sur un carnet pro rata, le calcul change, car l’allocation dépend de la quantité affichée plutôt que du moment où vous êtes arrivé. Priorité prix-temps contre allocation pro rata présente les deux mécanismes.
Modifier sur place ou annuler puis remplacer ?
Sur la place, ces deux instructions sont différentes. Une modification, que votre plateforme peut appeler « modify » ou « replace », est un seul message qui désigne l’ordre existant et précise le changement. Elle s’applique de manière atomique : soit la modification est exécutée, soit l’ordre reste inchangé. Une annulation suivie d’un nouvel ordre correspond à deux événements séparés par un intervalle. Pendant cet intervalle, vous n’avez plus aucune priorité dans le carnet. Si le marché traite à votre prix durant ce laps de temps, vous n’êtes pas exécuté.
Certaines places mettent en œuvre une modification comme une annulation suivie d’un nouvel ordre. Certains brokers convertissent aussi une modification en annulation-remplacement lors de son acheminement, même lorsque la place permet une véritable modification sur place. Le résultat est le même : la priorité est perdue. Une modification rejetée laisse l’ordre initial en attente, tandis qu’une annulation exécutée avant le rejet du nouvel ordre vous laisse sans ordre actif. Même une modification qui préserve la priorité reçoit généralement un nouvel identifiant d’ordre. Vos propres registres affichent donc un nouvel ordre, alors que le carnet considère toujours qu’il s’agit de l’ancien.
Le coût d’une modification
La position dans la file ne vaut que ce que le marché peut exécuter. Les actions placées devant votre ordre doivent être négociées avant lui, et le rythme des échanges varie fortement au cours de la séance.
Le SQL exact derrière chaque chiffre
SELECT
formatDateTime(toStartOfFifteenMinutes(et), '%H:%i') AS et_time,
round(toFloat64(avg(volume)) / 1000, 1) AS avg_k_shares_per_min,
round(quantileDeterministic(0.5)(toFloat64(volume),
toUInt64(toUnixTimestamp(et))) / 1000, 1) AS median_k_shares_per_min
FROM
(
SELECT
toTimeZone(window_start, 'America/New_York') AS et,
volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= '2026-06-01'
AND window_start < '2026-07-01'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
)
GROUP BY et_time
ORDER BY et_timeEn juin 2026, le quart d’heure commençant à 09:30 ET a enregistré une médiane de 182.8 milliers d’actions AAPL par minute, contre 62 milliers dans la tranche commençant à 12:00. Même ordre, même prix. Le temps d’attente devant cet ordre n’a pas la même dynamique à l’ouverture qu’en milieu de séance.
Probabilité d’exécution avant et après une modification
Les modifications sont évaluées en fonction de leur probabilité d’exécution. Le panneau ci-dessous compte, sur un mois de minutes de séance régulière, combien de fois une minute de tape a enregistré au moins un nombre donné d’actions. Il faut l’interpréter comme la probabilité qu’une file d’attente de cette taille devant vous soit entièrement exécutée en moins d’une minute.
Le SQL exact derrière chaque chiffre
WITH minute_volume AS
(
SELECT
ticker,
toStartOfMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute,
sum(volume) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'KO')
AND window_start >= '2026-06-01'
AND window_start < '2026-07-01'
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY ticker, et_minute
)
SELECT
q.ahead AS shares_ahead,
round(100 * countIf(mv.ticker = 'AAPL' AND mv.shares >= q.ahead) / countIf(mv.ticker = 'AAPL'), 1) AS aapl_pct_of_minutes,
round(100 * countIf(mv.ticker = 'KO' AND mv.shares >= q.ahead) / countIf(mv.ticker = 'KO'), 1) AS ko_pct_of_minutes
FROM minute_volume AS mv
CROSS JOIN
(
SELECT arrayJoin([500, 1000, 2000, 4000, 8000, 16000, 32000, 64000, 128000]) AS ahead
) AS q
GROUP BY q.ahead
ORDER BY q.aheadAvec 500 actions devant vous, 100 pour cent des minutes sur AAPL ont enregistré un volume suffisant, contre 100 pour cent des minutes sur KO. À 8000 actions, le chiffre d’AAPL est de 100 pour cent, et à 128000 actions, il tombe à 22.2 pour cent. La courbe ne peut que descendre, et perdre sa priorité revient simplement à se déplacer vers la droite le long de celle-ci.
Considérez cette ligne comme un plafond optimiste. Le volume enregistré pendant une minute se répartit entre de nombreux prix et les deux côtés du marché. Seule une fraction de ce volume atteint votre niveau de prix. Une file d’attente réelle se vide donc plus lentement. Les minutes sans aucun print ne sont pas comptabilisées. Estimer votre position dans la file d’attente affine l’analyse en intégrant la profondeur de marché et les taux d’annulation.
La distance de re-pricing à l’équilibre
Il faut maintenant attribuer une valeur à la modification. Prenons un ordre d’achat hypothétique, avec 8 000 actions devant lui dans la file et une probabilité de 60 % d’être exécuté dans la minute. Améliorer le bid d’un centime le place seul au meilleur prix, sans aucun ordre devant lui : appelons cette probabilité 99 %. Cette amélioration coûte un centime par action sur chaque exécution.
Notons V la valeur d’une exécution par action, c’est-à-dire votre avantage plus toute rebate, et t la distance de re-pricing. La modification est à l’équilibre lorsque la probabilité améliorée multipliée par le gain réduit égale l’ancienne probabilité multipliée par le gain intégral, ce qui donne :
t = V x (1 - p0 / p1)
Avec une exécution valorisée à 3 cents par action et une probabilité passant de 60 à 99 %, la distance à l’équilibre ressort à environ 1,2 cent. Une amélioration d’un centime se justifie donc. Une poursuite de 2 cents ne se justifie pas.
Appliquons le même calcul à un bot dont le seul avantage vient de la maker rebate. Les rebates des market makers de premier rang sur les grandes places actions américaines se situent autour de 0,20 à 0,30 cent par action selon les barèmes publiés à la mi-2026 ; retenons donc un quart de cent. La formule donne une distance à l’équilibre proche de 0,1 cent, alors que la plus petite variation de prix acceptée par les places américaines est d’un cent entier, soit environ dix fois trop. Un bot qui modifie son prix pour préserver une rebate paie un tick pour courir après un quart de cent.
La rebate est versée sur les exécutions, jamais sur les intentions. Un ordre qui conserve une excellente position dans la file mais n’est jamais exécuté ne rapporte rien. Une rebate jamais perçue ne constitue pas une économie. Les frais et rebates maker-taker explique le fonctionnement de ces barèmes.
Quand il n’y a aucune marge d’amélioration
Améliorer un prix n’est possible que lorsque le bid et l’offer sont séparés par un écart. Pour les plus grandes capitalisations, ce n’est généralement pas le cas.
Le SQL exact derrière chaque chiffre
SELECT
ticker AS symbol,
round(avg(toFloat64(ask_price) - toFloat64(bid_price)) * 100, 2) AS avg_spread_cents,
round(100 * countIf(toFloat64(ask_price) - toFloat64(bid_price) <= 0.0105) / count(), 1) AS one_tick_wide_pct
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'KO', 'SPY', 'NVDA', 'COST', 'NFLX')
AND sip_timestamp >= '2026-06-10 13:30:00'
AND sip_timestamp < '2026-06-10 20:00:00'
AND bid_price > 0
AND ask_price > bid_price
AND toFloat64(ask_price) - toFloat64(bid_price) < 5
GROUP BY ticker
ORDER BY one_tick_wide_pct DESCNFLX affichait un spread d’un centime sur 81.4 % de ses mises à jour de cotation le 10 juin 2026, avec une largeur moyenne de 1.3 centimes. À l’autre extrémité du panel, COST affichait une largeur moyenne de 77.53 centimes. Sur un marché limité à un tick, il n’existe aucun prix entre le bid et l’offer auquel se positionner. Le seul moyen de passer devant la file d’attente consiste à traverser le spread. Vous devenez alors taker : vous payez la commission du taker au lieu de percevoir la rebate, et vous abandonnez l’intégralité du spread, pas seulement un tick.
À quelle fréquence un bot de re-pricing est confronté à ce choix
Un bot qui suit le marché n’exécute pas cette opération une seule fois. Il la répète chaque fois que le meilleur niveau du carnet s’éloigne de son ordre.
Le SQL exact derrière chaque chiffre
SELECT
formatDateTime(toStartOfFifteenMinutes(et), '%H:%i') AS et_time,
uniqExactIf(bid_price, ticker = 'AAPL') AS aapl_distinct_bids,
uniqExactIf(bid_price, ticker = 'KO') AS ko_distinct_bids
FROM
(
SELECT
toTimeZone(sip_timestamp, 'America/New_York') AS et,
ticker,
bid_price
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'KO')
AND sip_timestamp >= '2026-06-10 13:30:00'
AND sip_timestamp < '2026-06-10 20:00:00'
AND bid_price > 0
)
GROUP BY et_time
ORDER BY et_timeLe meilleur bid sur AAPL a atteint 359 prix distincts au cours du quart d’heure débutant à 09:30 ET le 10 juin 2026, puis 152 prix au cours du quart d’heure débutant à 15:45. Le meilleur bid sur KO a atteint 78 prix dans ce premier quart d’heure. Chacun de ces mouvements peut donner lieu à une modification envoyée par un bot de re-pricing, et chaque modification relance l’attente. Les bots de grid trading font un choix opposé en plaçant une grille à des prix fixes : les prix deviennent obsolètes, mais la priorité est conservée.
Icebergs et prévention de l’auto-exécution
Deux effets de second ordre prennent souvent les intervenants au dépourvu.
Les ordres à réserve, généralement appelés ordres iceberg, affichent une tranche et gardent le reste caché. Sur la plupart des carnets, chaque renouvellement de la tranche affichée rejoint la fin de la file d’attente à ce prix. Un gros ordre iceberg se comporte donc comme une succession de petits ordres qui cèdent continuellement leur place aux ordres dont la taille est entièrement affichée. Modifier la taille affichée relance le même cycle.
La prévention de l’auto-exécution est l’autre effet. Les plateformes n’autorisent pas l’exécution de l’ordre d’un participant contre son propre ordre en attente. La solution habituelle consiste à annuler l’un des deux ordres, voire les deux sur certaines plateformes. Un bot qui ajuste ses prix sur un carnet peu profond peut supprimer sa propre cotation du côté opposé. Une seule modification se traduit alors par la perte de deux places dans la file. Les modifications conservent généralement la durée de validité initiale de l’ordre, tandis qu’un cancel and replace la réinitialise. Ce point est détaillé dans la durée de validité de l’ordre.
FAQ
Modifier le prix d’un ordre à cours limité fait-il perdre sa position dans la file d’attente ?
Oui. Sur les carnets d’ordres d’actions américaines et sur la plupart des places de futures, l’ordre est considéré comme un nouvel ordre à son nouveau prix. Il se place derrière toutes les actions déjà présentes à ce niveau. La seule modification qui préserve la priorité est une réduction de la taille au même prix.
Une annulation suivie d’un remplacement équivaut-elle à une modification d’ordre ?
Les deux opérations diffèrent selon la place de négociation. Une modification est un message unique. Elle peut préserver la priorité lorsque seule la taille diminue. Une annulation suivie d’un remplacement correspond à deux événements. Entre les deux, aucun de vos titres n’est présent dans le carnet. L’ordre de remplacement rejoint toujours la fin de la file.
Réduire la taille d’un ordre permet-il de conserver sa priorité dans la file ?
Oui, au même prix. Les places de négociation traitent une réduction de taille comme une annulation partielle. Les actions restantes conservent leur horodatage initial. Une augmentation de la taille ne fonctionne pas de la même manière.
Quelle est la valeur réelle d’une position dans la file ?
C’est la probabilité d’exécution qu’elle procure, multipliée par la valeur que cette exécution représente pour vous. Ces deux éléments peuvent être mesurés. Les panneaux ci-dessus indiquent le volume exécuté par minute. Votre propre avantage et toute remise déterminent la valeur d’une exécution.
Chaque panneau contient la requête SQL qui l’a généré. Modifiez le ticker ou la période, puis posez la même question sur n’importe quelle valeur dans le terminal Strasmore.