Short positions still disclosed in France
Every French issuer carrying a net short position that is still published by the AMF, aggregated per issuer. Each observation is dated on the day the regulator PUBLISHED it — never on the day the position was taken.
70
issuers
with a disclosure still published
2026-08-28
as of
latest publication date, not today
40,445
published disclosures read
since 1 November 2012
30
days before we call it stale
a convention we expose so you can reject it
Source : Autorité des marchés financiers (AMF), via data.gouv.fr — mise à jour du 2026-08-31. Republished under the French Open Licence 2.0. This page is not official and is not endorsed by the AMF.
The data
Who is shorted, and by how many
One row per issuer. The total is the sum of the positions STILL disclosed at that date — a disclosure the AMF has stopped publishing is removed, because the regulator itself says when it stops being public.
“No longer published” is not “closed”: disclosure is required above a threshold, and a position can survive below it. That is why the age of the oldest disclosure still counted is a column, not a footnote.
| Issuer | Short disclosed | Holders | Concentration | 5-day change | Oldest still counted |
|---|---|---|---|---|---|
| UBISOFT ENTERTAINMENTFR0000054470 | 13.86 % | 12 | 0.098 | +0.17 % | 149 j(4) |
| VALEOFR0013176526 | 11.34 % | 9 | 0.141 | +0.41 % | 85 j(2) |
| TELEPERFORMANCEFR0000051807 | 8.18 % | 7 | 0.179 | -0.10 % | 449 j(1) |
| RENAULTFR0000131906 | 7.11 % | 7 | 0.181 | +0.91 % | 63 j(1) |
| FDJ UNITEDFR0013451333 | 6.58 % | 4 | 0.445 | -0.09 % | 44 j(1) |
| VIRIDIENFR001400PVN6 | 6.50 % | 8 | 0.146 | +0.21 % | 574 j(2) |
| ABIVAXFR0012333284 | 5.03 % | 5 | 0.220 | 0.00 % | 30 j |
| REMY COINTREAUFR0000130395 | 4.76 % | 4 | 0.367 | 0.00 % | 84 j(3) |
| ALSTOMFR0010220475 | 4.68 % | 5 | 0.224 | +0.03 % | 73 j(1) |
| VUSIONGROUPFR0010282822 | 3.99 % | 6 | 0.179 | -0.21 % | 175 j(3) |
| FORVIAFR0000121147 | 3.96 % | 4 | 0.329 | 0.00 % | 2775 j(2) |
| SPIE SAFR0012757854 | 3.77 % | 4 | 0.276 | +0.02 % | 16 j |
| SOPRA STERIA GROUPFR0000050809 | 3.50 % | 4 | 0.303 | +0.70 % | 60 j(1) |
| WORLDLINEFR0011981968 | 3.42 % | 3 | 0.361 | 0.00 % | 170 j(3) |
| DBV TECHNOLOGIESFR0010417345 | 3.39 % | 3 | 0.428 | +0.07 % | 9 j |
| PUBLICIS GROUPE SAFR0000130577 | 3.38 % | 4 | 0.260 | 0.00 % | 2355 j(1) |
| NEXITYFR0010112524 | 2.91 % | 4 | 0.253 | +0.04 % | 99 j(1) |
| SODEXOFR0000121220 | 2.86 % | 4 | 0.259 | 0.00 % | 28 j |
| EXAIL TECHNOLOGIESFR0000062671 | 2.77 % | 4 | 0.275 | 0.00 % | 31 j(1) |
| WORLDLINEFR00140182K6 | 2.75 % | 3 | 0.395 | -0.12 % | 17 j |
Sum of the rows shown: 104.74 %. ⛔ Never compare this to the AMF's aggregated series: those are a different population, with different reporting thresholds. The gap is not an error.
50 more issuers are not shown here.
To be clear: the underlying data is public, under the French Open Licence 2.0. You can download the same file without us — data.gouv.fr. Your address buys convenience here, not access. What it does not buy is the publication-dated aggregation above — that part is ours.
Total in the file: 70 issuers.
The mechanism
Why the date is the whole product
A disclosure has two dates: when the position was taken, and when the public could learn it. Dating an observation on the first hands you one to three days of look-ahead — a backtest that looks excellent for a reason you cannot see in the data.
Publication minus position date — 40,423 disclosures, measured 2026-08-31
Écart entre la date de PUBLICATION et la date de POSITION. 77 % des lignes sont publiées à J+1. Dater une observation sur la date de position donnerait 1 à 3 jours d'avance sur le marché — un backtest excellent pour une raison entièrement fausse, et rien dans les données ne permettrait de s'en apercevoir.
Timestamp semantics, as shipped
Chaque observation est datée sur `knowable_at` — la date à laquelle le régulateur a PUBLIÉ l'information. La date de prise de position (`position_date`) est livrée séparément, à titre descriptif, et ne doit JAMAIS servir à dater une observation : l'écart mesuré sur 40 423 lignes AMF est de J+1 pour 77 % des lignes et J+3 pour 19 %. Les lignes dont la source ne publie pas de date de publication portent `knowable_at = NULL` et sont EXCLUES de tout agrégat daté — jamais repliées sur la date du fait. Il n'existe pas de valeur `inferred`.
The mechanism
From a traded instrument to a legal entity
Market data speaks ISIN. Public registries speak national company number. The bridge between them is free to build and nobody sells it — here is how much of it survives each hop, measured rather than assumed.
- L0ISIN sous position courte déclarée (AMF)267100.0 %
- L1résolus en LEI émetteur (ESMA FIRDS)18870.4 %
- L2LEI connu de GLEIF18870.4 %
- L3GLEIF publie un numéro de registre national18870.4 %
Le pont ISIN → LEI → numéro de registre national ne perd rien de L1 à L3. La perte est ENTIÈRE en L0→L1 : 79 ISIN de l'univers AMF ne sont pas des actions admises couvertes par le fichier FIRDS lu. Beyond the issuers themselves, GLEIF declares 2,437 direct subsidiaries, of which 2,363 carry a national registry number — the ones a public procurement or registry feed can actually be queried for.
Provenance
Every source, and what its licence actually says
Each licence below was read at the primary source, not taken from a portal's metadata field. One of them forbids us to publish anything — it is listed here anyway, with the clause. A catalogue that shows only its permitted sources lets you believe it never hit a wall.
Creative Commons Zero 1.0
Reproduction autorisée des informations ESMA — attribution obligatoire
Licence Ouverte / Open Licence 2.0 (Etalab) — attribution obligatoire
Réutilisation des données TED (UE) — attribution obligatoire
Réutilisation des documents CORDIS (UE) — CC BY 4.0 — attribution obligatoire
FCA — Legal terms (conditions 3.2 à 3.5) interdit la redistribution — se limiter au lien et à une citation courte
Quality controls that ran on this extract
- ·aucune ligne d'entrée avec `knowable_at > as_of` n'a été lue (contrôle par requête)
- ·aucun `knowable_source = 'inferred'` — la valeur n'existe pas dans le modèle
- ·`short_ratio_total_pct` est une SOMME de déclarations individuelles : elle ne doit jamais être comparée à `short_position_aggregates`, qui est une autre POPULATION
- ·une déclaration dont `published_to <= as_of` est EXCLUE : le régulateur dit lui-même quand elle cesse d'être publique
- ·les émetteurs sans aucune déclaration connue à `as_of` sont ABSENTS de l'extrait — pas présents avec un total de 0, qui se lirait comme « position soldée »