Télécharger les données short quotidiennes de FINRA
Téléchargez avec curl les données short quotidiennes de FINRA, lisez les colonnes du fichier Reg SHO et calculez le ratio short d’un ticker avec awk.
Pour télécharger les données quotidiennes de FINRA sur les volumes short, récupérez un fichier texte brut par séance sur le serveur de contenu public de FINRA. Aucun identifiant ni aucune clé API ne sont nécessaires. Le fichier est le rapport quotidien de FINRA sur les ventes à découvert au titre de la Regulation SHO. Il contient une ligne séparée par des caractères « | » pour chaque ticker. Chaque ligne indique le volume short et le volume total du jour, ainsi que le sous-ensemble short exempt, pour les transactions déclarées hors marché auprès d’une infrastructure de FINRA. Ce guide prend comme date historique le 12 juin 2026 et détaille la procédure dans un conteneur Ubuntu fraîchement créé : installer curl, télécharger le fichier, lire les colonnes, puis calculer avec awk le ratio de volume short pour un ticker. Chaque commande s’exécute telle quelle, aujourd’hui comme dans un an.
Où FINRA publie-t-elle le fichier quotidien du short volume ?
Le fichier consolidé de chaque séance se trouve à une adresse prévisible :
https://cdn.finra.org/equity/regsho/daily/CNMSshvolYYYYMMDD.txt
Remplacez YYYYMMDD par la date de la séance. CNMS correspond au fichier consolidé NMS (National Market System, l’univers des titres cotés en Bourse) : toutes les actions cotées, agrégées sur l’ensemble des trade reporting facilities (TRF) de FINRA. FINRA publie le fichier de chaque séance au plus tard à 18 h, heure de l’Est, le jour même. Il s’agit pratiquement des données publiques sur les ventes à découvert disponibles le plus rapidement. La contrepartie est le périmètre couvert. Le fichier ne comptabilise que les transactions déclarées auprès d’une infrastructure de FINRA. En pratique, cela correspond aux exécutions réalisées hors marché, notamment aux ordres exécutés par les wholesalers pour le compte des particuliers et aux dark pools. Les transactions exécutées directement sur les Bourses n’y figurent pas. La colonne du volume total est donc toujours inférieure au volume de la séance affiché sur un graphique de cours.
Les fichiers n’existent que pour les séances de Bourse. Si vous demandez une date de week-end ou un jour férié boursier, le serveur renvoie l’erreur 403 Forbidden plutôt qu’un fichier vide. Un script qui parcourt un calendrier doit donc ignorer ces dates ou gérer cette erreur.
Étape 1 : un conteneur Ubuntu vierge avec curl
Commencez avec un conteneur vierge et installez curl. L’image de base Ubuntu inclut déjà awk (sous la forme de mawk), aucune autre installation n’est donc nécessaire :
docker run --rm -it ubuntu:24.04 bash
apt-get update && apt-get install -y curl
Étape 2 : télécharger le fichier quotidien FINRA du volume short pour une date fixe
Fixez la date. Une commande construite autour de « today » échoue les week-ends et les jours fériés, ainsi que chaque matin avant la mise en ligne du fichier par la FINRA. Le 12 juin 2026 était un vendredi avec une séance normale, et son fichier reste disponible sur le serveur :
curl -fsSLO https://cdn.finra.org/equity/regsho/daily/CNMSshvol20260612.txt
Les options : -f demande à curl d’échouer en cas d’erreur HTTP au lieu d’enregistrer la page d’erreur comme données, -s désactive l’indicateur de progression, -S affiche tout de même une véritable erreur, -L suit une redirection et -O enregistre le fichier sous son nom distant. Inspectez les deux extrémités du fichier reçu :
head -3 CNMSshvol20260612.txt
tail -1 CNMSshvol20260612.txt
La première ligne est l’en-tête, Date|Symbol|ShortVolume|ShortExemptVolume|TotalVolume|Market. La dernière ligne est un trailer : un entier seul correspondant au nombre d’enregistrements de données du fichier. Tout parser doit supprimer ces deux lignes. Vérifiez maintenant la règle du week-end en demandant le jour calendaire suivant, le samedi 13 juin :
curl -fsSLO https://cdn.finra.org/equity/regsho/daily/CNMSshvol20260613.txt
Curl affiche une erreur et se termine avec le code 22 : le serveur a renvoyé une erreur 403 et -f l’a refusée. Il en va de même pour le 19 juin 2026, jour férié de Juneteenth. Une copie conservée de la même série montre directement la structure du calendrier, avec une ligne par séance et aucune ligne intermédiaire :
| Date de négociation | Jour de la semaine | Libellé de séance | Symboles publiés | Libellé des symboles |
|---|---|---|---|---|
| 2026-06-01 | Monday | June 1 | 15118 | 15.12 thousand |
| 2026-06-02 | Tuesday | June 2 | 14907 | 14.91 thousand |
| 2026-06-03 | Wednesday | June 3 | 14839 | 14.84 thousand |
| 2026-06-04 | Thursday | June 4 | 5136 | 5.14 thousand |
| 2026-06-05 | Friday | June 5 | 14740 | 14.74 thousand |
| 2026-06-08 | Monday | June 8 | 14815 | 14.81 thousand |
| 2026-06-09 | Tuesday | June 9 | 14751 | 14.75 thousand |
| 2026-06-10 | Wednesday | June 10 | 5694 | 5.69 thousand |
| 2026-06-11 | Thursday | June 11 | 14687 | 14.69 thousand |
| 2026-06-12 | Friday | June 12 | 14734 | 14.73 thousand |
| 2026-06-15 | Monday | June 15 | 14948 | 14.95 thousand |
| 2026-06-16 | Tuesday | June 16 | 5631 | 5.63 thousand |
| 2026-06-17 | Wednesday | June 17 | 14611 | 14.61 thousand |
| 2026-06-18 | Thursday | June 18 | 14700 | 14.70 thousand |
| 2026-06-22 | Monday | June 22 | 14922 | 14.92 thousand |
| 2026-06-23 | Tuesday | June 23 | 5767 | 5.77 thousand |
| 2026-06-24 | Wednesday | June 24 | 14743 | 14.74 thousand |
| 2026-06-25 | Thursday | June 25 | 14716 | 14.72 thousand |
| 2026-06-26 | Friday | June 26 | 15052 | 15.05 thousand |
| 2026-06-29 | Monday | June 29 | 5489 | 5.49 thousand |
Le SQL exact derrière chaque chiffre
SELECT
toString(date) AS trade_date,
formatDateTime(date, '%W') AS weekday,
concat(monthName(date), ' ', toString(toDayOfMonth(date))) AS session_label,
count(DISTINCT ticker) AS symbols_reported,
formatReadableQuantity(count(DISTINCT ticker)) AS symbols_label
FROM global_markets.stocks_short_volume
WHERE date >= '2026-06-01'
AND date < '2026-07-01'
GROUP BY date
ORDER BY dateLe mois de juin 2026 a produit 21 fichiers datés. Le premier, June 1, un fichier Monday, contenait 15.12 thousand symboles. Chaque ligne du panel correspond à un jour ouvré, et il n’y a pas de ligne pour le 19 juin.
Que signifient les colonnes du fichier de volume short de la FINRA ?
Chaque ligne de données comporte six champs séparés par des barres verticales.
Datecorrespond à la date de transaction au format AAAAMMJJ.Symbolcorrespond au ticker, limité à 14 caractères.ShortVolumecorrespond au nombre d’actions vendues short ce jour-là dans les transactions déclarées à la FINRA, y compris les transactions short exempt.ShortExemptVolumecorrespond au sous-ensemble marqué short exempt : les ventes indiquées comme exemptées du price test de la Rule 201 de la Reg SHO, le coupe-circuit qui limite les ventes short après une baisse de 10 % de l’action par rapport à sa clôture précédente.TotalVolumecorrespond à l’ensemble des actions déclarées pour le symbole ce jour-là, ventes short et ventes long confondues.Marketcorrespond à la plateforme de déclaration :Npour le NYSE TRF,Qpour le Nasdaq TRF de Carteret,Bpour le Nasdaq TRF de Chicago etDpour l’Alternative Display Facility (ADF).
Dans le fichier consolidé, le champ Market répertorie, séparés par des virgules, tous les marchés qui ont déclaré des transactions sur le symbole. Une ligne se termine donc par une valeur du type B,Q,N. Ces virgules expliquent pourquoi le fichier utilise des barres verticales comme séparateur.
Il faut tenir compte d’une modification récente : depuis le 23 février 2026, les trois champs de volume peuvent contenir des fractions d’actions avec six décimales. Une valeur comportant six chiffres après la virgule est donc normale. Les fichiers antérieurs à cette date ne contiennent que des nombres entiers. Un parseur qui convertit la valeur en entier tronquera silencieusement les fichiers plus récents.
Comment calculer le short volume ratio avec awk ?
Le short volume ratio correspond au volume vendu à découvert divisé par le volume total, exprimé en pourcentage. Une seule ligne awk suffit pour le calculer sur un ticker :
awk -F'|' '$2 == "AAPL" { printf "%s %s short=%s total=%s ratio=%.1f\n", $1, $2, $3, $5, 100 * $3 / $5 }' CNMSshvol20260612.txt
-F'|' définit la barre verticale comme séparateur de champs, $2 == "AAPL" conserve uniquement la ligne AAPL (l’en-tête et la ligne de fin ne correspondent jamais), et la commande printf divise le champ 3 par le champ 5. Remplacez AAPL par le ticker de votre choix. Le tableau ci-dessous reprend la même date pour six grandes valeurs connues à partir de la série FINRA stockée, avec un arrondi au million d’actions, afin que vous puissiez comparer le résultat de la commande que vous venez d’exécuter :
| ticker | Volume short (millions) | Volume total (millions) | Pourcentage short |
|---|---|---|---|
| AAPL | 6.66 | 13.16 | 50.6 |
| AMZN | 5.88 | 21.76 | 27 |
| KO | 2.06 | 3.65 | 56.3 |
| MSFT | 3.73 | 14.24 | 26.2 |
| NVDA | 15.19 | 45.34 | 33.5 |
| SPY | 7.48 | 15.48 | 48.3 |
Le SQL exact derrière chaque chiffre
SELECT
ticker,
round(toFloat64(max(short_volume)) / 1e6, 2) AS short_volume_millions,
round(toFloat64(max(total_volume)) / 1e6, 2) AS total_volume_millions,
round(100 * toFloat64(max(short_volume)) / toFloat64(max(total_volume)), 1) AS short_pct
FROM global_markets.stocks_short_volume
WHERE ticker IN ('AAPL', 'AMZN', 'KO', 'MSFT', 'NVDA', 'SPY')
AND date = '2026-06-12'
GROUP BY ticker
HAVING max(total_volume) > 0
ORDER BY tickerPour AAPL, le 12 juin 2026, le fichier recense 6.66 millions d’actions vendues à découvert, contre 13.16 millions d’actions au total, soit un short volume ratio de 50.6%. Les cinq autres valeurs se situent dans la même zone, ce qui correspond au fonctionnement habituel de ce fichier. Une section ultérieure explique pourquoi un ratio proche de la moitié n’est pas le signal d’alerte qu’il peut sembler être.
Une seule séance ne fournit qu’un instantané, et le ratio varie d’une séance à l’autre. Téléchargez un fichier par date pour constituer votre série sur un mois.
Quelle est la différence entre le fichier CNMS et les fichiers par plateforme ?
CNMS est un total. La FINRA publie également un fichier pour chaque plateforme déclarante, selon le même calendrier et avec la même structure et la même date, mais avec un préfixe différent : FNSQshvol pour le Nasdaq TRF de Carteret (Market Q), FNQCshvol pour le Nasdaq TRF de Chicago (B), FNYXshvol pour le NYSE TRF (N) et FNRAshvol pour l’ADF (D). Un cinquième fichier, FORFshvol, couvre l’OTC Reporting Facility, qui traite les actions OTC non cotées et ne fait pas partie de CNMS. Téléchargez le fichier de Carteret correspondant à la date indiquée et recherchez le même ticker :
curl -fsSLO https://cdn.finra.org/equity/regsho/daily/FNSQshvol20260612.txt
awk -F'|' '$2 == "AAPL"' FNSQshvol20260612.txt
Exécutez les mêmes deux lignes avec FNQCshvol20260612.txt et FNYXshvol20260612.txt. Les trois champs ShortVolume correspondent alors au chiffre CNMS, au dernier chiffre après la virgule près. Le fichier ADF de cette date ne contient qu’un en-tête et une ligne de fin à 0, ce qui est fréquent. Voici la ventilation pour AAPL :
| Place de négociation | Volume short (millions) | Part du volume consolidé (%) |
|---|---|---|
| Consolidated (CNMS) | 6.659 | 100 |
| Nasdaq TRF Carteret (Q) | 6.412 | 96.3 |
| NYSE TRF (N) | 0.194 | 2.9 |
| Nasdaq TRF Chicago (B) | 0.053 | 0.8 |
| ADF (D) | 0 | 0 |
Le SQL exact derrière chaque chiffre
SELECT
tupleElement(v, 1) AS venue,
round(tupleElement(v, 2) / 1e6, 3) AS short_volume_millions,
round(100 * tupleElement(v, 2) / consolidated, 1) AS share_of_consolidated_pct
FROM
(
SELECT
consolidated,
arrayJoin([
('Consolidated (CNMS)', consolidated),
('Nasdaq TRF Carteret (Q)', carteret),
('Nasdaq TRF Chicago (B)', chicago),
('NYSE TRF (N)', nyse),
('ADF (D)', adf)
]) AS v
FROM
(
SELECT
toFloat64(ifNull(max(short_volume), 0)) AS consolidated,
toFloat64(ifNull(max(nasdaq_carteret_short_volume), 0)) AS carteret,
toFloat64(ifNull(max(nasdaq_chicago_short_volume), 0)) AS chicago,
toFloat64(ifNull(max(nyse_short_volume), 0)) AS nyse,
toFloat64(ifNull(max(adf_short_volume), 0)) AS adf
FROM global_markets.stocks_short_volume
WHERE ticker = 'AAPL'
AND date = '2026-06-12'
)
)
ORDER BY tupleElement(v, 2) DESCNasdaq TRF Carteret (Q) représentait 96.3% du short volume hors marché d’AAPL ce jour-là. Le Nasdaq TRF de Carteret traite la majeure partie du reporting des transactions hors marché, et cette ventilation le confirme. Les fichiers par plateforme sont utiles pour identifier la plateforme par laquelle un print est passé. Pour tout le reste, utilisez le fichier consolidé.
Pourquoi le short volume de la FINRA n’est-il pas le short interest ?
Le short volume est un flux : il correspond aux actions vendues à découvert au cours d’une séance, uniquement dans le cadre de transactions exécutées hors marché. Le short interest est un encours : il désigne le nombre d’actions toujours détenues à découvert à une date de règlement. La FINRA le collecte deux fois par mois et le publie environ deux semaines plus tard. Les deux séries ne concordent pas. Un ratio élevé de short volume ne signifie donc pas qu’une position vendeuse importante est ouverte. Lorsqu’un market maker exécute l’ordre d’achat d’un client avec des titres qu’il ne détient pas en inventaire, il vend à découvert et la transaction est enregistrée comme une vente à découvert. S’il couvre cette position une heure plus tard, le fichier conserve la vente à découvert sans aucune trace de l’achat. Les jours ordinaires, le ratio des valeurs liquides se situe autour de la moitié, comme le montre le panel de six titres ci-dessus. Ce mécanisme de market making constitue l’explication habituelle. Short interest et short volume détaille cette notion, tandis que ce qu’est le short interest traite de l’aspect lié aux positions. Cet article se concentre sur l’obtention du fichier. Pour la série des positions elle-même, commencez par les données de short interest de la FINRA, puis consultez la date de publication du short interest et pourquoi le short interest accuse un retard de deux semaines pour comprendre le décalage de publication.
Particularités connues du fichier de volume short de la FINRA
Quelques caractéristiques surprennent les utilisateurs qui découvrent ce fichier. Les places boursières font passer des ticker de test dans leurs systèmes de production, notamment la famille ZVZZT du Nasdaq. Les lignes correspondantes peuvent apparaître dans les fichiers avec des volumes qui semblent réels. Écartez tout ticker que vous ne pouvez pas rattacher à une valeur cotée avant de tracer un graphique.
Dans de rares cas, la FINRA republie le fichier d’une séance avec des chiffres corrigés. La mention « Updated » apparaît alors sur sa page de catalogue. Un chiffre récupéré le soir de la date de négociation peut donc différer du même fichier téléchargé une semaine plus tard. Téléchargez de nouveau le fichier avant de le citer.
La ligne de fin contient uniquement un nombre, sans séparateurs verticaux. Un parseur rudimentaire qui suppose la présence de six champs sur chaque ligne échouera à sa lecture.
Les volumes sont fractionnaires à partir du 23 février 2026 et entiers avant cette date. Seules les transactions réalisées pendant les heures normales sont prises en compte. Il s’agit uniquement des transactions déclarées hors marché auprès d’une infrastructure de la FINRA. La colonne du volume total ne correspond donc jamais au consolidated tape.
Ces caractéristiques relèvent du format du fichier, et non de défauts. Un parseur qui les intègre renvoie des chiffres propres.
FAQ
Où puis-je télécharger gratuitement les données quotidiennes de FINRA sur le short volume ?
Sur le serveur public de contenu de FINRA, à l’adresse cdn.finra.org/equity/regsho/daily/. Un fichier est disponible pour chaque séance, sous le nom CNMSshvolYYYYMMDD.txt pour le fichier NMS consolidé. Aucun compte n’est nécessaire : une simple commande curl suffit. Le site de FINRA propose également une vue interactive avec export CSV, pour sept jours au maximum par requête.
Pourquoi n’existe-t-il pas de fichier FINRA sur le short volume pour un week-end ou un jour férié ?
Les fichiers sont produits uniquement pour les dates de séance. Une requête portant sur un week-end ou un jour férié boursier renvoie une erreur HTTP 403, et non un fichier vide. Un script qui parcourt le calendrier doit donc ignorer les jours sans séance ou gérer cette erreur.
Le short volume quotidien de FINRA correspond-il au short interest ?
Non. Le short volume comptabilise les actions vendues à découvert au cours d’une journée dans le cadre de transactions hors marché, y compris les ventes à découvert des market makers couvertes en quelques minutes. Le short interest mesure les positions toujours détenues à découvert à une date de règlement. Ces données sont collectées deux fois par mois. Un short volume ratio proche de 50 % est courant pour une action liquide et ne renseigne pas sur le montant d’une éventuelle position à découvert ouverte.
Pourquoi le fichier FINRA sur le short volume contient-il des décimales ?
Depuis le 23 février 2026, FINRA publie les quantités fractionnaires d’actions des titres NMS avec six décimales dans les trois champs de volume. Les fichiers antérieurs à cette date ne contiennent que des actions entières. Un parser qui convertit les valeurs en nombres entiers tronquera donc les nouveaux fichiers.
Que signifie la colonne Market dans le fichier FINRA sur le short volume ?
Elle identifie la plateforme de FINRA qui a reçu le compte rendu de transaction : N pour le TRF du NYSE, Q pour le TRF du Nasdaq à Carteret, B pour le TRF du Nasdaq à Chicago et D pour l’ADF. Le fichier CNMS consolidé répertorie, séparées par des virgules, toutes les plateformes ayant déclaré le ticker.
Chaque panneau ci-dessus est accompagné de sa requête SQL ; développez-en un pour voir comment le chiffre a été calculé. Pour obtenir l’historique du short volume d’un ticker sans télécharger le moindre fichier, formulez votre demande en anglais courant sur le terminal Strasmore.