FINRA daily short volume data downloaden
Download FINRA daily short volume data met curl, lees de Reg SHO-kolommen en bereken met awk een symboolratio. Vastgepinde datum, reproduceerbaar.
Om FINRA-daggegevens over short volume te downloaden, haalt u voor elke handelsdag één tekstbestand op van de openbare contentserver van FINRA. Hiervoor zijn geen login en geen API-sleutel nodig. Het bestand is het Regulation SHO Daily Short Sale Volume-bestand. Het bevat één pipe-delimited regel per symbool met het short volume en het totale volume van die dag, plus het short-exempt-deel, voor transacties buiten de beurs die aan een FINRA-facility zijn gerapporteerd.
Deze handleiding gebruikt één historische datum, 12 juni 2026, en werkt in een nieuwe Ubuntu-container. U installeert curl, haalt het bestand op, leest de kolommen uit en berekent met awk een short volume ratio voor één symbool. Elk commando werkt ongewijzigd, zowel vandaag als over een jaar.
Waar publiceert FINRA het dagelijkse bestand met short volume?
Het geconsolideerde bestand voor een handelsdag staat op een voorspelbaar adres:
https://cdn.finra.org/equity/regsho/daily/CNMSshvolYYYYMMDD.txt
Vervang YYYYMMDD door de handelsdatum. CNMS is het geconsolideerde NMS-bestand (National Market System, het universum van aan een beurs genoteerde effecten): alle genoteerde aandelen, opgeteld over alle trade reporting facilities (TRFs) van FINRA. FINRA publiceert het bestand van elke dag uiterlijk om 18.00 uur ET op de handelsdag zelf. Publieke gegevens over short selling verschijnen daarmee ongeveer zo snel als mogelijk is. Daar staat een beperktere reikwijdte tegenover. Het bestand telt alleen transacties die aan een FINRA-faciliteit zijn gemeld. In de praktijk gaat het dus om transacties buiten de beurs, zoals wholesaler-transacties waarbij retailorders worden uitgevoerd en transacties in dark pools. Transacties die op de beurzen zelf worden gematcht, staan er niet in. Daarom is de kolom met het totale volume altijd lager dan het dagvolume in een price chart.
Bestanden bestaan alleen voor handelsdagen. Vraagt u een datum in het weekend of een beursfeestdag op, dan antwoordt de server met 403 Forbidden in plaats van met een leeg bestand. Een script dat een kalender doorloopt, moet die datums dus overslaan of de fout tolereren.
Stap 1: een nieuwe Ubuntu-container met curl
Begin met een schone container en installeer curl. De Ubuntu-basisimage bevat awk al als mawk, dus verder is niets nodig:
docker run --rm -it ubuntu:24.04 bash
apt-get update && apt-get install -y curl
Stap 2: download het dagelijkse FINRA-bestand met short volume voor een vaste datum
Leg de datum vast. Een opdracht die rond ‘today’ is opgebouwd, werkt niet in weekends en op feestdagen. Ook elke ochtend vóór FINRA het bestand publiceert, gaat het mis. 12 juni 2026 was een vrijdag met een normale sessie. Het bestand blijft op de server staan:
curl -fsSLO https://cdn.finra.org/equity/regsho/daily/CNMSshvol20260612.txt
De flags: -f zorgt dat curl faalt bij een HTTP-fout, in plaats van de foutpagina als data op te slaan. -s onderdrukt de voortgangsmeter. -S toont nog steeds een echte fout. -L volgt een redirect. -O slaat het bestand op onder de naam van het bestand op afstand. Controleer beide uiteinden van wat is binnengehaald:
head -3 CNMSshvol20260612.txt
tail -1 CNMSshvol20260612.txt
De eerste regel is de header, Date|Symbol|ShortVolume|ShortExemptVolume|TotalVolume|Market. De laatste regel is een trailer: een losstaand geheel getal met het aantal datarecords in het bestand. Elke parser moet beide verwijderen. Toon nu aan dat de weekendregel geldt door de volgende kalenderdag op te vragen: zaterdag 13 juni:
curl -fsSLO https://cdn.finra.org/equity/regsho/daily/CNMSshvol20260613.txt
Curl toont een foutmelding en eindigt met code 22: de server gaf 403 terug en -f weigerde de fout. Hetzelfde gebeurt voor 19 juni 2026, de feestdag Juneteenth. Een opgeslagen kopie van dezelfde reeks laat de kalenderstructuur direct zien: één regel per sessie en niets daartussen:
| handelsdatum | weekdag | sessielabel | gerapporteerde symbolen | symboolnaam |
|---|---|---|---|---|
| 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 |
De exacte SQL achter elk getal
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 dateIn juni 2026 waren er 21 bestanden met een datum. Het eerste, June 1, een Monday, bevatte 15.12 thousand symbolen. Elke regel in het panel betreft een weekdag. Voor 19 juni staat er geen regel.
Wat betekenen de kolommen in het FINRA-bestand met short volume?
Elke gegevensregel bevat zes velden, gescheiden door pipes.
Dateis de handelsdatum in de notatie YYYYMMDD.Symbolis de ticker, met maximaal 14 tekens.ShortVolumeis het aantal aandelen dat die dag short is verkocht in transacties die aan FINRA zijn gerapporteerd, inclusief short-exempt transacties.ShortExemptVolumeis het deel dat als short exempt is gemarkeerd: verkopen die zijn aangemerkt als vrijgesteld van de prijstest van Rule 201 van Reg SHO. Die circuit breaker beperkt short selling nadat een aandeel 10% onder de vorige slotkoers is gedaald.TotalVolumeomvat alle gerapporteerde aandelen voor het symbool die dag, short en long samen.Marketis de rapportagefaciliteit:Nvoor de NYSE TRF,Qvoor de Nasdaq TRF in Carteret,Bvoor de Nasdaq TRF in Chicago enDvoor de Alternative Display Facility (ADF).
In het geconsolideerde bestand vermeldt het veld Market elke faciliteit die het symbool heeft gerapporteerd, gescheiden door komma’s. Een regel eindigt daardoor bijvoorbeeld op B,Q,N. Daarom gebruikt het bestand pipes als scheidingsteken. Houd rekening met een recente wijziging: sinds 23 februari 2026 bevatten de drie volumewelden fractionele aandelen tot zes decimalen. Een waarde met zes cijfers achter de komma is dus normaal. Bestanden van vóór die datum bevatten alleen gehele aantallen. Een parser die de waarden naar integers converteert, kapt de nieuwe waarden stilzwijgend af.
Hoe bereken ik de short volume ratio met awk?
De short volume ratio is het short volume gedeeld door het totale volume, uitgedrukt als percentage. Met één awk-regel berekent u dit voor één symbool:
awk -F'|' '$2 == "AAPL" { printf "%s %s short=%s total=%s ratio=%.1f\n", $1, $2, $3, $5, 100 * $3 / $5 }' CNMSshvol20260612.txt
-F'|' stelt de pipe in als veldscheidingsteken, $2 == "AAPL" behoudt alleen de regel voor AAPL (de header en trailer matchen nooit), en printf deelt veld 3 door veld 5. Vervang AAPL door een ander symbool. Het onderstaande overzicht leest voor dezelfde datum de opgeslagen FINRA-serie voor zes bekende namen uit. De waarden zijn afgerond op miljoenen aandelen, zodat u de zojuist uitgevoerde regel ermee kunt vergelijken:
| ticker | shortvolume in miljoenen | totaalvolume in miljoenen | shortpercentage |
|---|---|---|---|
| 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 |
De exacte SQL achter elk getal
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 tickerVoor AAPL registreert het bestand op 12 juni 2026 6.66 miljoen short verkochte aandelen tegenover 13.16 miljoen aandelen in totaal gerapporteerd volume. Dat komt neer op een short volume ratio van 50.6%. De andere vijf namen komen in dezelfde buurt uit. Dat is de normale situatie in dit bestand. In een later gedeelte wordt uitgelegd waarom een ratio rond de helft minder alarmerend is dan deze op het eerste gezicht lijkt.
Eén handelsdag is slechts een momentopname en de ratio verandert van sessie tot sessie. Download voor elke datum één bestand en bouw daarmee uw maandreeks op.
Wat is het verschil tussen het CNMS-bestand en de bestanden per faciliteit?
CNMS is een totaal. FINRA publiceert volgens hetzelfde schema ook één bestand per rapportagefaciliteit. De bestanden hebben dezelfde indeling en datumstempel, maar een andere prefix: FNSQshvol voor de Nasdaq TRF Carteret (Market Q), FNQCshvol voor de Nasdaq TRF Chicago (B), FNYXshvol voor de NYSE TRF (N) en FNRAshvol voor de ADF (D). Een vijfde bestand, FORFshvol, betreft de OTC Reporting Facility. Die verwerkt niet-beursgenoteerde OTC-aandelen en maakt geen deel uit van CNMS. Haal het bestand voor Carteret voor de vastgezette datum op en zoek hetzelfde symbool:
curl -fsSLO https://cdn.finra.org/equity/regsho/daily/FNSQshvol20260612.txt
awk -F'|' '$2 == "AAPL"' FNSQshvol20260612.txt
Voer dezelfde twee regels uit voor FNQCshvol20260612.txt en FNYXshvol20260612.txt. De drie ShortVolume-velden tellen op tot het CNMS-cijfer, tot op het laatste decimaal. Het ADF-bestand voor die datum bevat alleen een header en een trailer met 0. Dat komt vaak voor. Dit is de uitsplitsing voor AAPL:
| handelsplatform | shortvolume in miljoenen | aandeel van geconsolideerd totaal |
|---|---|---|
| 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 |
De exacte SQL achter elk getal
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) vertegenwoordigde die dag 96.3% van het off-exchange short volume in AAPL. De Nasdaq TRF in Carteret verwerkt het grootste deel van de off-exchange trade reporting in de markt. Deze uitsplitsing laat dat zien. De bestanden per faciliteit zijn relevant als u wilt weten via welke venue een print tot stand kwam. Voor alle overige doeleinden gebruikt u het geconsolideerde bestand.
Waarom is FINRA short volume niet hetzelfde als short interest?
Short volume is een flow: het aantal aandelen dat tijdens één sessie short is verkocht, uitsluitend in off-exchange-transacties. Short interest is een voorraadgrootheid: het aantal aandelen dat op een settlement date nog short wordt aangehouden. FINRA verzamelt deze gegevens twee keer per maand en publiceert ze ongeveer twee weken later. De twee reeksen sluiten niet op elkaar aan. Een hoge short-volume-ratio betekent niet dat er sprake is van een grote shortpositie. Een market maker die een kooporder van een klant uitvoert met aandelen uit de voorraad die hij niet aanhoudt, verkoopt short en registreert een short sale. Als hij de positie een uur later afdekt, toont het bestand de short sale, maar is er geen spoor van de aankoop. Op normale dagen ligt de ratio voor liquide namen rond de helft, zoals het bovenstaande panel met zes namen laat zien. Die market-makingmechaniek is daarvoor de standaardverklaring. Short interest versus short volume licht het concept verder toe. wat short interest is behandelt de positiecomponent. Dit bericht richt zich op het ophalen van het bestand. Voor de positieserie zelf kunt u beginnen met FINRA-gegevens over short interest. Lees daarna wanneer short interest wordt gepubliceerd en waarom short interest twee weken oud is voor meer informatie over de publicatievertraging.
Bekende eigenaardigheden van het FINRA-bestand met short volume
Een aantal kenmerken valt vooral op bij nieuwe gebruikers. Beurzen voeren testsymbolen door hun productiesystemen. De ZVZZT-familie van Nasdaq is daarvan het bekendste voorbeeld. Regels voor deze symbolen kunnen in de bestanden voorkomen met volumes die er echt uitzien. Verwijder elk symbool dat u niet aan een genoteerd effect kunt koppelen voordat u de gegevens in een grafiek weergeeft.
In zeldzame gevallen plaatst FINRA het bestand van een handelsdag opnieuw met gecorrigeerde cijfers. Op de cataloguspagina staat dan het label ‘Updated’. Daardoor kan een cijfer dat u op de avond van de handelsdatum ophaalt, afwijken van hetzelfde bestand dat u een week later downloadt. Haal het bestand opnieuw op voordat u het citeert.
De trailerregel bevat alleen een aantal en geen pipes. Een eenvoudige parser die op elke regel zes velden verwacht, loopt daarop vast.
Vanaf 23 februari 2026 zijn de volumes fractioneel. Daarvoor waren het hele getallen. Alleen trades tijdens reguliere handelsuren tellen mee. Het gaat bovendien uitsluitend om trades die buiten de beurs om aan een FINRA-faciliteit zijn gerapporteerd. Daarom komt de kolom met het totale volume nooit overeen met de consolidated tape.
Dit zijn kenmerken van het bestand en geen gebreken. Een parser die hiermee rekening houdt, levert schone cijfers op.
FAQ
Waar kan ik de dagelijkse short-volumegegevens van FINRA gratis downloaden?
Via de openbare contentserver van FINRA op cdn.finra.org/equity/regsho/daily/. Per handelsdag is er één bestand met de naam CNMSshvolYYYYMMDD.txt voor het geconsolideerde NMS-bestand. Een account is niet nodig; u kunt het bestand met één curl-opdracht ophalen. De website van FINRA biedt ook een interactieve weergave met CSV-export voor maximaal zeven dagen tegelijk.
Waarom is er geen FINRA-bestand met short volume voor een weekend of feestdag?
Bestanden worden alleen voor handelsdata aangemaakt. Een verzoek voor een weekenddatum of beursfeestdag levert HTTP 403 op en geen leeg bestand. Een script dat de kalender doorloopt, moet niet-handelsdagen daarom overslaan of deze fout kunnen verwerken.
Is het dagelijkse short volume van FINRA hetzelfde als short interest?
Nee. Short volume telt de aandelen die gedurende één dag short zijn verkocht in off-exchange-transacties. Daaronder vallen ook shortposities van market makers die binnen enkele minuten worden afgedekt. Short interest telt de aandelen die op een settlement date nog short worden gehouden. Deze gegevens worden twee keer per maand verzameld. Een short-volume ratio rond 50% is normaal voor een liquide aandeel en zegt niets over de omvang van een open shortpositie.
Waarom bevat het FINRA-bestand met short volume decimalen?
Sinds 23 februari 2026 rapporteert FINRA voor NMS-aandelen fractionele aantallen tot zes decimalen in alle drie de volumevelden. Bestanden van vóór die datum bevatten alleen hele aandelen. Een parser die waarden naar integers omzet, kapt de nieuwere bestanden daarom af.
Wat betekent de kolom Market in het FINRA-bestand met short volume?
Deze kolom identificeert de FINRA-faciliteit die het trade report heeft ontvangen: N voor de NYSE TRF, Q voor de Nasdaq TRF in Carteret, B voor de Nasdaq TRF in Chicago en D voor de ADF. Het geconsolideerde CNMS-bestand vermeldt elke faciliteit die de ticker heeft gerapporteerd, gescheiden door komma's.
Onder elk paneel hierboven staat de bijbehorende SQL. Klap een paneel uit om te zien hoe een getal is berekend. Wilt u de short-volumehistorie van een ticker ophalen zonder een bestand te downloaden, vraag er dan in gewone taal naar op de Strasmore-terminal.