Qu'est-ce que l'ADV volume quotidien moyen
Définition de l'ADV, indicateur clé de liquidité. Comprendre son calcul et son rôle dans le days to cover ou le relative volume.
Le volume quotidien moyen — ADV — est l'indicateur le plus utilisé mais rarement défini : il représente le nombre moyen d'actions échangées par jour sur une période donnée. Il constitue le dénominateur du days to cover, la base du relative volume et le test de liquidité de chaque screener. Par conséquent, chacun de ces indicateurs dépend des paramètres de l'ADV : la période choisie, les sessions incluses, et l'unité utilisée (actions ou dollars). Cette page définit précisément cet indicateur, détaille son calcul mathématique et mesure l'impact de chaque paramètre sur les données réelles du marché.
Volume quotidien moyen, mesures
Vingt sessions en horaires réguliers — du 11 juin au 10 juillet 2026 — quatre noms familiers et un nom délibérément peu liquide. Actions, dollars et (pour la suite) la part du volume total de chaque titre échangée hors horaires réguliers :
Le SQL exact derrière chaque chiffre
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS rth_shares,
sumIf(toFloat64(close) * toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS rth_dollars,
sum(toFloat64(volume)) AS all_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MU', 'KO', 'CATO')
AND window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY ticker, et_date
)
SELECT ticker,
round(avg(rth_shares) / 1e6, 2) AS adv_shares_m,
round(avg(rth_dollars) / 1e9, 2) AS adv_dollars_bn,
round(100 * (sum(all_shares) - sum(rth_shares)) / sum(all_shares), 1) AS extended_hours_pct,
count() AS sessions
FROM per_day
GROUP BY ticker
ORDER BY adv_shares_m DESCCe tableau résume l'argumentation de cette page. MU et AAPL échangent presque le même nombre d'actions chaque jour — 42.01M contre 41.47M — mais la colonne en dollars les sépare nettement : 44.49B contre 12.24B par jour. Le nombre d'actions mesure l'activité ; les dollars mesurent les flux financiers. Le classement s'inverse même en tête de liste : SPY domine en volume d'actions (46.01M sur 20 sessions) tandis que MU domine ce tableau en dollars. Enfin, en bas de liste, CATO échange 0.05 millions d'actions par jour — un montant si faible que la colonne des milliards affiche 0 à cette échelle. C'est le type de marché où un seul ordre institutionnel représente le volume de la journée, et où les coûts de transaction appartiennent à un autre univers.
Comment calculer le volume quotidien moyen
Le calcul est simple : additionnez les volumes de titres quotidiens sur la période choisie, puis divisez par le nombre de jours. Voici une semaine complète de cotation de Coca-Cola durant les horaires réguliers (du 6 au 10 juillet 2026), avec le total cumulé et la moyenne calculés dans la même requête :
Le SQL exact derrière chaque chiffre
SELECT session_date,
shares_m,
round(sum(shares_m) OVER (), 1) AS five_day_total_m,
round(avg(shares_m) OVER (), 1) AS adv_m,
round(avg(shares_m) OVER () * 0.01 * 1000, 0) AS one_pct_of_adv_k
FROM (
SELECT formatDateTime(toDate(toTimeZone(window_start, 'America/New_York')), '%Y-%m-%d') AS session_date,
round(sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
AND window_start >= toDateTime('2026-07-06 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY session_date
)
ORDER BY session_dateAdditionnez les cinq jours — 10.7 + 12.1 + 10.7 + 11 + 8.3 millions d'actions — pour obtenir un total de 52.8M. Divisez par cinq : 10.6M d'actions, soit l'ADV de KO sur 5 sessions. Un ADV sur 20 sessions utilise le même calcul sur 20 lignes — comme indiqué dans le premier tableau. Notez ce que la moyenne masque : 2026-07-07 a affiché 12.1M et 2026-07-10 a affiché 8.3M, des variations quotidiennes que l'ADV lisse en une seule valeur. La dernière colonne préfigure le sizing de position : 1 % de l'ADV de KO représente environ 106 mille actions — l'échelle à laquelle un ordre unique commence à représenter une part significative du volume quotidien.
La période de référence est un choix qui détermine la vitesse de l'oubli de l'ADV
La convention habituelle est de vingt sessions (un mois de trading) ; les périodes de dix, trente, soixante-cinq et quatre-vingt-dix jours sont également utilisées. La période de référence détermine la vitesse à laquelle l'ADV s'actualise. MU est l'exemple concret de 2026 — un titre dont la réévaluation sur le tape a été si forte en milieu d'année que son ADV sur un mois et son ADV sur un trimestre présentaient des données divergentes au printemps, comme le démontre son analyse approfondie de juin. Voici ce même titre sur les sept mêmes mois, mesuré simultanément avec les deux périodes :
Le SQL exact derrière chaque chiffre
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS day_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2025-08-01 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_date
),
rolled AS (
SELECT et_date,
avg(day_shares) OVER (ORDER BY et_date ROWS BETWEEN 19 PRECEDING AND CURRENT ROW) AS adv20,
avg(day_shares) OVER (ORDER BY et_date ROWS BETWEEN 89 PRECEDING AND CURRENT ROW) AS adv90,
row_number() OVER (ORDER BY et_date) AS rn,
count() OVER () AS total_rows
FROM daily
)
SELECT formatDateTime(et_date, '%Y-%m-%d') AS date,
round(adv20 / 1e6, 1) AS adv_20_session_m,
round(adv90 / 1e6, 1) AS adv_90_session_m
FROM rolled
WHERE rn > 90 AND (rn % 3 = total_rows % 3)
ORDER BY et_dateEn 2025-12-10, les deux périodes concordaient : 21.3M sur le calcul de 20 sessions et 19.9M sur celui de 90. En 2026-04-14, elles divergeaient avec 45.6M contre 31.9M — deux ADV "officiels" pour un seul titre à une date donnée. Par conséquent, tout screener, tout calcul de days-to-cover ou toute lecture de volume relatif basé sur une période différait de l'outil basé sur l'autre. En 2026-07-10, les deux valeurs avaient convergé à nouveau (42M contre 41.9M) : le niveau de volume réévalué avait fini par être intégré dans la période longue. Lorsque deux sources divergent sur l'ADV d'un titre, la période de référence est le premier suspect ; l'inclusion ou non du volume en extended-hours est le second.
L'évolution de l'ADV après un choc de volume
Le graphique ci-dessus l'indique ; voici la mesure précise. Prenez le choc de volume le plus important de MU en 2026 — la séance ayant le plus dépassé son propre ADV sur 20 jours — et comparez l'ADV affiché par un screener avant ce jour avec celui affiché un mois plus tard :
Le SQL exact derrière chaque chiffre
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS day_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2025-11-01 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_date
),
ranked AS (
SELECT et_date, day_shares,
day_shares / avg(day_shares) OVER (ORDER BY et_date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS shock_ratio,
row_number() OVER (ORDER BY et_date) AS rn
FROM daily
),
biggest AS (
SELECT et_date, day_shares, shock_ratio
FROM ranked
WHERE rn > 20 AND et_date >= toDate('2026-01-01')
ORDER BY shock_ratio DESC, et_date ASC
LIMIT 1
),
before AS (
SELECT avg(day_shares) AS adv FROM (
SELECT day_shares FROM daily WHERE et_date < (SELECT et_date FROM biggest) ORDER BY et_date DESC LIMIT 20
)
),
after AS (
SELECT avg(day_shares) AS adv FROM (
SELECT day_shares FROM daily WHERE et_date >= (SELECT et_date FROM biggest) ORDER BY et_date ASC LIMIT 20
)
)
SELECT formatDateTime((SELECT et_date FROM biggest), '%Y-%m-%d') AS event_date,
round((SELECT day_shares FROM biggest) / 1e6, 1) AS event_day_shares_m,
round((SELECT adv FROM before) / 1e6, 1) AS adv_20_before_m,
round((SELECT shock_ratio FROM biggest), 1) AS event_vs_prior_adv_x,
round((SELECT adv FROM after) / 1e6, 1) AS adv_20_after_m,
round(100 * ((SELECT adv FROM after) / (SELECT adv FROM before) - 1), 0) AS adv_shift_pctLe 2026-03-19, MU a échangé 64.7M actions contre un ADV précédent de 28.7M — soit 2.3x sa propre base de référence. Sur les 20 sessions suivantes, l'ADV glissant s'est établi en moyenne à 45M : une hausse de 57% du dénominateur. Tous les indicateurs dérivés de l'ADV ont évolué en conséquence — les relevés de relative volume ont diminué (la base de référence ayant augmenté) et les days to cover ont diminué (le dénominateur ayant augmenté), sans qu'aucune modification de position réelle ne soit nécessaire. Dans le cas de MU, le niveau élevé de l'activité s'est maintenu — le choc a marqué une réévaluation (re-rating) et non un événement isolé — mais la mécanique reste identique : après une période de forte activité, l'ADV mesure l'événement plutôt que les habitudes du titre pendant exactement une période de référence.
Définition de la liquidité mesurée
L'expression « des millions de dollars par jour » est souvent utilisée de manière imprécise pour désigner la tradabilité. Voici la distribution réelle — tous les symboles cotés aux États-Unis ayant au moins 15 sessions identiques sur les 20 dernières, classés par ADV en dollars :
Le SQL exact derrière chaque chiffre
WITH per_ticker AS (
SELECT ticker, avg(day_dollars) AS adv_dollars
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sumIf(toFloat64(close) * toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS day_dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
AND match(ticker, '^[A-Z]+$')
GROUP BY ticker, et_date
)
GROUP BY ticker
HAVING count() >= 15
)
SELECT count() AS names,
round(quantileDeterministic(0.25)(adv_dollars, cityHash64(ticker)) / 1e6, 2) AS p25_m,
round(quantileDeterministic(0.50)(adv_dollars, cityHash64(ticker)) / 1e6, 1) AS median_m,
round(quantileDeterministic(0.75)(adv_dollars, cityHash64(ticker)) / 1e6, 1) AS p75_m,
round(quantileDeterministic(0.90)(adv_dollars, cityHash64(ticker)) / 1e6, 1) AS p90_m,
round(quantileDeterministic(0.99)(adv_dollars, cityHash64(ticker)) / 1e6, 0) AS p99_m,
countIf(adv_dollars >= 1e6) AS names_above_1m,
countIf(adv_dollars >= 10e6) AS names_above_10m,
countIf(adv_dollars >= 100e6) AS names_above_100m,
countIf(adv_dollars >= 1e9) AS names_above_1bn
FROM per_tickerSur 10864 symboles, la médiane des noms affiche un volume quotidien de 2.2M $ — la moitié du marché américain échange moins que ce montant. Un quart du marché échange moins de 0.33M $. Le 75e percentile s'établit à 20.4M $, le 90e à 113.7M $, et le 99e à 1333M $. En utilisant des seuils arrondis : 6515 titres dépassent 1M $ par jour, 3535 dépassent 10M $, 1166 dépassent 100M $ — et seulement 130 dépassent 1B $. Les titres couverts par la presse financière appartiennent presque exclusivement à ce dernier groupe ; le titre coté médian est un instrument totalement différent.
Quand l'ADV détermine silencieusement d'autres indicateurs
- Days to cover = short interest ÷ ADV. Une hausse du volume réduit le ratio sans changement de la position courte — seul le dénominateur évolue.
- Relative volume = volume du jour ÷ ADV. Même indicateur, rôle opposé : ici, l'ADV sert de référence à dépasser.
- Filtres de liquidité ("uniquement les titres avec un ADV > 1M") — chaque backtest et screener en utilise un, ce qui entraîne un biais de survie : les titres intègrent ces filtres lors de leurs semaines les plus volatiles.
- Position sizing — l'habitude institutionnelle de ne trader que quelques pourcents de l'ADV par jour explique pourquoi les grands fonds ne peuvent pas détenir certains small caps : il faudrait plusieurs semaines de volume total pour construire ou liquider une position.
Le cas du days-to-cover mérite une analyse chiffrée, car même la donnée "officielle" dépend du choix de l'ADV par l'émetteur. La FINRA publie le days-to-cover en utilisant son propre dénominateur de volume (chaque plateforme a sa propre fenêtre de reporting, avec un plancher à 1.0 — voir comment ces données sont collectées) ; le calcul du même ratio avec l'ADV en heures régulières sur 20 sessions de cette page donne un résultat différent :
Le SQL exact derrière chaque chiffre
WITH our_adv AS (
SELECT ticker, avg(day_shares) AS adv
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS day_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'KO')
AND window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY ticker, et_date
)
GROUP BY ticker
),
si AS (
SELECT ticker,
max(short_interest) AS short_interest,
max(avg_daily_volume) AS finra_adv,
max(days_to_cover) AS finra_dtc
FROM global_markets.stocks_short_interest
WHERE settlement_date = '2026-06-30' AND ticker IN ('MU', 'KO')
GROUP BY ticker
)
SELECT si.ticker AS ticker,
round(si.short_interest / 1e6, 1) AS shares_short_m,
round(si.finra_adv / 1e6, 1) AS finra_adv_m,
round(si.finra_dtc, 2) AS finra_days_to_cover,
round(our_adv.adv / 1e6, 1) AS rth_adv_20_session_m,
round(si.short_interest / our_adv.adv, 2) AS days_to_cover_recomputed
FROM si
INNER JOIN our_adv ON si.ticker = our_adv.ticker
ORDER BY tickerMême short interest, deux dénominateurs. Pour KO, la FINRA affiche 2.06 jours sur son volume de 24.1M de shares ; face à l'ADV en heures régulières de 12.4M de cette page, la même position courte de 49.6M de shares correspond à 4 jours — soit presque le double. Pour MU, le chiffre publié est de 1 (le plancher rapporté) ; recalculé, il est de 0.75 jours. Aucun chiffre n'est erroné — ils utilisent simplement des dénominateurs différents. La leçon est générale : tout ratio incluant l'ADV en dénominateur reflète discrètement les choix de fenêtre temporelle et de session d'un tiers.
L'ADV est-il applicable aux options ?
Les traders d'options utilisent le même concept avec une nuance : le volume est comptabilisé en contrats, et chaque contrat standard sur action contrôle 100 actions. On conserve les mêmes 20 sessions et les quatre tapes d'options, en convertissant le nombre de contrats en exposition équivalente en actions :
Le SQL exact derrière chaque chiffre
WITH daily AS (
SELECT multiIf(ticker LIKE 'O:SPY2%', 'SPY', ticker LIKE 'O:AAPL2%', 'AAPL', ticker LIKE 'O:MU2%', 'MU', 'KO') AS underlying,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE (ticker LIKE 'O:SPY2%' OR ticker LIKE 'O:AAPL2%' OR ticker LIKE 'O:MU2%' OR ticker LIKE 'O:KO2%')
AND window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY underlying, et_date
)
SELECT underlying,
round(avg(contracts) / 1e3, 1) AS avg_daily_contracts_k,
round(avg(contracts) * 100 / 1e6, 1) AS share_equivalent_m,
count() AS sessions
FROM daily
GROUP BY underlying
ORDER BY avg_daily_contracts_k DESCLes différences d'échelle sont bien plus importantes que dans le tableau des actions. La tape des options de SPY affichait une moyenne de 12543.2 mille contrats par jour, soit 1254.3M d'actions en exposition équivalente, un multiple important de l'ADV de 46.01M d'actions pour le SPY. Pour KO, la tendance est inverse : 64.6 mille contrats (6.5M d'actions équivalentes), soit moins que son ADV de 12.4M d'actions. La liquidité des options se concentre sur un petit nombre de sous-jacents et se disperse davantage selon les strikes et les expirations. Un chiffre agrégé comme celui-ci surestime le volume réel de chaque contrat individuel ; il est donc nécessaire de vérifier le volume par contrat et l'open interest avant de dimensionner un ordre sur options.
Analyser l'ADV comme un professionnel
Trois habitudes permettent de passer de la simple définition à l'utilisation concrète. Couplez l'ADV avec l'ADV en dollars — le premier tableau montre deux titres avec des volumes de titres presque identiques mais des montants très différents ; c'est la colonne monétaire qui importe réellement pour l'exécution d'un ordre. Méfiez-vous de l'ADV immédiatement après un événement — le panel de choc le démontre : une période de forte volatilité a fait varier le dénominateur de 57% en un mois, ce qui a mécaniquement réduit le relative volume et le days to cover jusqu'à ce que le pic sorte de la fenêtre de calcul. Comparez l'ADV au calendrier — les vendredis d'expiration, les jours de rebalancement et les dates de modification d'indices augmentent le volume de tous les titres simultanément (witching days surtout) ; une forte activité sur l'ensemble du marché ne renseigne donc rien sur le profil spécifique d'un titre.
FAQ sur le volume quotidien moyen
Quel est un bon volume quotidien moyen ?
Mesuré sur 10864 symboles US sur 20 sessions, la médiane de l'ADV en dollars était de 2.2M$. 3535 titres ont dépassé 10M$ par jour et seulement 130 ont dépassé 1B$. Pour les ordres de taille retail, le seuil pertinent est le montant en dollars et non le nombre d'actions — les titres du groupe des 10M$+ s'échangent sans qu'une petite transaction ne fasse varier le prix.
Comment calcule-t-on le volume quotidien moyen ?
Additionnez les volumes d'actions quotidiens sur la période choisie et divisez par le nombre de jours. Les cinq sessions de KO du 6 au 10 juillet 2026 totalisent 52.8M d'actions ; divisé par cinq, l'ADV est de 10.6M. Un ADV sur 20 jours suit le même calcul sur 20 sessions.
Sur quelle période l'ADV est-il mesuré ?
Le plus souvent sur 20 sessions de trading (environ un mois), mais des versions sur 10, 30, 65 et 90 jours existent — et elles divergent réellement après tout choc de volume. Le 2026-04-14, l'ADV de MU sur 20 sessions était de 45.6M alors que son ADV sur 90 sessions était de 31.9M le même jour. Vérifiez la période avant de comparer les sources.
L'ADV inclut-il le volume premarket et after-hours ?
Cela dépend de la source — les chiffres de cette page concernent uniquement les horaires de séance régulière. Mesurées sur les mêmes 20 sessions, les sessions étendues représentaient 18.3% du volume total de SPY, 6.9% de AAPL, et 0.2% du faible volume de CATO — le guide sur les sessions étendues détaille ces sessions.
L'ADV s'exprime-t-il en actions ou en dollars ?
Traditionnellement en actions, mais l'ADV en dollars est une meilleure mesure de la liquidité pour les actions. Sur les mêmes 20 sessions, MU et AAPL ont échangé respectivement 42.01M et 41.47M d'actions par jour — un résultat presque identique — tandis que leurs ADV en dollars étaient de 44.49B$ et 12.24B$. Un nombre d'actions similaire, mais des ordres de grandeur très différents.
Chaque chiffre provient d'une requête enregistrée et versionnée — développez le SQL sous n'importe quel panneau, ou calculez n'importe quelle période pour n'importe quel ticker sur le terminal Strasmore.