Aller au contenu principal

Méthodologie

Transparence totale sur le calcul des scores.
Chaque score est reproductible à partir des sources publiques citées.

Principe fondamental : Ces scores mesurent la cohérence des données publiques. Ils ne constituent ni une accusation, ni un jugement de valeur, ni une imputation de comportement illégal. Un score bas peut résulter de données incomplètes, d'erreurs administratives, ou de délais de publication. Le citoyen tire ses propres conclusions.

1. Score de cohérence patrimoine coherence-v2

Ce qu'il mesure

La complétude des déclarations HATVP et la proximité entre les intérêts financiers déclarés par un élu et les contrats publics attribués dans son département.

Formule

Le score part de 100 et subit des pénalités :

Score = 100 - Σ(pénalités), borné à [0, 100]
PénalitéPointsCondition
Pas de déclaration d'intérêts (DI)-30Aucun document DI trouvé
Pas de déclaration de patrimoine (DP)-30Aucun document DP trouvé
Données XML absentes-20 maxProportionnel au taux de déclarations sans XML
Déclarations anciennes-10Dernière déclaration antérieure à 2025
Matching participations partiel-550 à 80% des participations retrouvées dans SIRENE
Matching participations faible-10Moins de 50% retrouvées dans SIRENE
Participation dans entreprise attributaire-5 par entrepriseL'élu détient des parts dans une entreprise ayant des contrats publics dans son département (max -20)

Matching des participations

Les participations financières extraites du XML HATVP sont rapprochées du répertoire SIRENE par fuzzy matching (bibliothèque rapidfuzz, algorithme token_sort_ratio). Seuls les matchs avec un score ≥ 85/100 sont retenus.

Indice de confiance : Chaque score de cohérence est accompagné d'un indice de confiance (0 à 1) basé sur la qualité moyenne des matchs fuzzy. Un indice de 0.85+ indique un rapprochement fiable. En dessous de 0.5, le score doit être interprété avec précaution — les noms de sociétés n'ont peut-être pas été correctement appariés.

Limites connues :

  • Le matching fuzzy peut produire des faux positifs (deux sociétés au nom proche confondues) ou des faux négatifs (société non retrouvée si le nom HATVP diffère fortement du nom SIRENE).
  • Les déclarations HATVP ont un délai de publication : un élu récemment nommé peut avoir un score bas sans anomalie réelle.
  • Le XML open data n'est pas disponible pour toutes les déclarations — l'absence de XML n'est pas un indicateur de dissimulation.
  • Les participations dans des SCI familiales sont traitées comme toute autre participation, même si elles sont généralement sans rapport avec les marchés publics.

Sources : HATVP Open Data (déclarations CSV + XML participations), API Recherche Entreprises (SIRENE), DECP (marchés publics)

2. Score de concentration marchés concentration-v1

Ce qu'il mesure

La diversité des entreprises qui remportent les contrats publics dans un département. Un score élevé signifie que les contrats sont répartis entre de nombreuses entreprises.

Formule

Utilise l'indice de Herfindahl-Hirschman (HHI), un indicateur standard de concentration de marché utilisé en économie et en droit de la concurrence.

HHI = Σi (part_marchéi)² où part_marchéi = montanti / montant_total Score = (1 - HHI) × 100
ParamètreValeurRôle
Filtre montant max1 milliard €Exclut les erreurs de saisie dans les données DECP
Filtre SIRENnon videExclut les marchés sans attributaire identifié
PérimètredépartementCalculé par département, pas au niveau national

Interprétation

  • 100 = concurrence parfaite, aucune entreprise ne domine
  • 80-100 = bonne diversité
  • 40-80 = quelques entreprises dominent
  • < 40 = concentration inhabituelle — une ou quelques entreprises captent l'essentiel

Fiabilité : Le HHI est un indicateur économique reconnu, utilisé notamment par l'Autorité de la concurrence et le DOJ américain. La confiance dépend directement de la complétude des données DECP : si un département a peu de marchés recensés, le score reflète un échantillon partiel.

Limites connues :

  • Les données DECP sont déclaratives : certaines collectivités publient peu ou pas de marchés.
  • Les groupements d'entreprises apparaissent sous le SIREN du mandataire, ce qui peut masquer une répartition réelle plus large.
  • Le score est calculé au niveau départemental : une concentration locale (commune) peut être noyée dans la moyenne départementale.
  • Les marchés sans montant (montant = 0 ou absent) sont exclus du calcul.

Source : DECP (data.gouv.fr) — Données Essentielles de la Commande Publique

3. Score réseau network-v1

Ce qu'il mesure

La densité des liens détectés entre un élu et les entreprises présentes dans les contrats publics de son département. Plus les liens sont nombreux, plus le score est bas.

Formule

Utilise une décroissance exponentielle du degré (nombre de connexions) :

Score = 100 × e(-degré / 50)
DegréScoreInterprétation
0100Aucun lien détecté
590Quelques liens (normal pour un élu actif)
1574Liens modérés
3550Réseau dense — seuil d'alerte
5037Très dense
100+< 14Extrêmement connecté

Types de liens comptés

  • Participations financières déclarées (HATVP → SIRENE)
  • Marchés publics dans le département (DECP)
  • Relations détectées par le croisement multi-sources

Facteurs rapportés : Nombre d'entités connectées, densité du sous-graphe (0-1), nombre de marchés liés, nombre d'entreprises liées. Ces facteurs permettent de comprendre la composition du score.

Limites connues :

  • Un élu avec un portefeuille d'investissements diversifié (fonds, SCPI, etc.) peut avoir un score bas sans aucune proximité réelle avec les marchés publics.
  • Le graphe ne distingue pas la nature des liens : un mandat dans une association locale et une participation dans un attributaire de marchés ont le même poids.
  • La fonction exponentielle pénalise fortement les départements où les données DECP sont très complètes (plus de marchés = plus de connexions potentielles).
  • Le paramètre d'échelle (50) est fixé empiriquement, pas calibré statistiquement.

Sources : Croisement HATVP + DECP + SIRENE

4. Score de transparence transparence-v1

Ce qu'il mesure

Le niveau de transparence globale d'un élu : présence et fraîcheur de ses déclarations, disponibilité des données ouvertes, traçabilité dans les sources officielles.

Formule

Système à points (accumulation de bonus) :

Score = Σ(points), borné à [0, 100]
CritèrePointsCondition
Déclarations complètes (DI + DP)+40Les deux types de déclarations sont présents
Déclarations partielles+20Un seul type présent (DI ou DP)
Déclarations récentes+20Publication ≥ 2025
Déclarations relativement récentes+10Publication ≥ 2023 (si pas récent)
Données XML ouvertes+15 maxProportionnel au taux de déclarations avec XML
Présence au Journal Officiel+15Nomination tracée dans le JO
Lien avec le registre des lobbys+10Mention directe dans le registre HATVP des lobbys

Maximum théorique : 40 + 20 + 15 + 15 + 10 = 100

Limites connues :

  • Le score récompense la quantité de données disponibles, pas leur qualité. Un élu peut publier des déclarations incomplètes et obtenir un bon score.
  • La présence au JO dépend du type de mandat : certains élus locaux n'ont aucune nomination publiée au JO par nature.
  • Le registre des lobbys ne concerne que les élus nationaux qui intéressent des lobbyistes — l'absence de lien lobby n'est pas négative en soi.
  • Les seuils de fraîcheur (2025, 2023) sont arbitraires et devront être mis à jour chaque année.

Sources : HATVP, Journal Officiel (DILA), Registre des représentants d'intérêts

5. Score composite composite-v2

Ce qu'il mesure

Synthèse des quatre dimensions en un score unique.

Formule

Composite = 0.30 × Cohérence + 0.30 × Concentration + 0.25 × Réseau + 0.15 × Transparence
DimensionPoids (v2)Justification
Cohérence patrimoine30%Signal le plus direct d'intérêts croisés
Concentration marchés30%Indicateur structurel de la commande publique
Réseau25%Proxy de proximité intérêts privés / publics
Transparence15%Complémentaire — mesure la disponibilité des données

Seuils d'alerte

Un facteur d'alerte est ajouté au score quand une dimension est en dessous de son seuil :

DimensionSeuil
Cohérence< 60
Concentration< 40
Réseau< 50
Transparence< 50

Rétrocompatibilité

Si le score de transparence n'est pas disponible pour un élu, le composite retombe sur les poids v1 : Cohérence 35%, Concentration 35%, Réseau 30%. Les poids sont renormalisés dynamiquement.

Limites connues :

  • Les pondérations sont fixées manuellement sur la base d'une analyse qualitative, pas d'une calibration statistique.
  • Le score composite mélange des dimensions de nature différente : la concentration est un indicateur départemental (identique pour tous les élus d'un même département), tandis que la cohérence est individuelle.
  • Un score composite moyen peut masquer une dimension très basse compensée par d'autres.

5b. Classification des participations & score de suspicion classifier-v1

La table participations agrège toutes les déclarations HATVP des élus (mandats sociaux, parts détenues, fonctions). En brut, elle contient ~36 000 lignes, dont la majorité sont du bruit légitime : mandats ès qualités dans des organismes parapublics (CCAS, SEM, FRAC, bailleurs sociaux...), actions cotées banales (CAC40 / SBF120), fonds standardisés (SCPI, OPCI...).

Pour rendre la donnée exploitable par les journalistes / ONG, VigiCité classe automatiquement chaque ligne en 5 catégories et calcule un score de suspicion 0−100.

Les 5 catégories

CatégorieDéfinitionAction
parapublic SEM, SPL, CCAS, SDIS, syndicats publics, FRAC, bailleurs sociaux, régies publiques, mission locale, BGE, agences d'urbanisme, services publics locaux (Gaz/Eau/Transports de Ville), Conseils Départementaux / Régionaux comme entité, etc. Mandat légal d'élu — écarté
cotee Société cotée CAC40 / SBF120, par SIREN whitelist + regex fallback de noms Action banale — écartée
fonds Fonds standardisé (SCPI, OPCI, FCPI, FCPR, SICAV, ETF...) Placement financier banal — écarté
engagement Association loi 1901 sans dimension de marchés publics (amicale, club sportif, comité des fêtes) Engagement personnel — écarté
qualified PME / SARL / SAS / EURL / SCI / SCEA / GAEC privée ne tombant dans aucune catégorie ci-dessus Signal à investiguer

Score de suspicion (0−100)

Calculé uniquement pour les lignes qualified. Combine 5 facteurs :

FacteurPoints maxFormule
Catégorie40qualified : 40, engagement : 10, parapublic/cotee/fonds : 2−5
Densité marchés locaux25min(nb_marches_locaux / 10, 1) × 25
Montant total local15min(montant / 5 M€, 1) × 15
Type de mandat10dirigeant : 10, fonctions : 8, financiere : 3
Territorialité1010 si marchés dans le département de l'élu

Lecture du score :

  • 80−100 : très qualifié. ~10 cas en France au 2026-05-12.
  • 60−79 : qualifié. ~150 cas.
  • 40−59 : à vérifier (entité privée sans marchés locaux détectés).
  • < 40 : pas un signal.

Endpoints

L'accès aux cas qualifiés est public :

Limites de la classification

  • Faux positifs possibles : une entité nommée ambiguëment peut être mal classée (ex. "ALPHA SERVICES" est une SAS mais le nom ne le dit pas).
  • Faux négatifs : un mandat déguisé sous un nom d'association masque le caractère commercial réel.
  • Le score est une heuristique méthodologique, pas un jugement. Aucun seuil n'est juridiquement contraignant.
  • Tous les chiffres sont sourcés URL : HATVP pour la participation, DECP pour les marchés publics. Le citoyen vérifie.

6. Intervalles de confiance

Chaque score est déterministe : pour les mêmes données en entrée, le résultat est toujours identique. L'incertitude ne vient pas du calcul mais de la qualité des données sources.

Sources d'incertitude

SourceType d'incertitudeImpact
Matching fuzzy (SIRENE) Faux positifs / négatifs dans l'appariement des noms de sociétés Cohérence ± 5-15 pts
Complétude DECP Certains départements publient peu de marchés Concentration et Réseau biaisés vers le haut
Délai publication HATVP Déclarations récentes pas encore publiées Transparence et Cohérence temporairement bas
Erreurs de saisie DECP Montants aberrants, SIREN incorrects Concentration faussée localement
Homonymie Deux élus ou entreprises au même nom Relations erronées dans le graphe

Indice de confiance du score de cohérence

Le score de cohérence est le seul à disposer d'un indice de confiance quantifié (0 à 1), basé sur la qualité moyenne des appariements fuzzy entre les noms de sociétés déclarées et le répertoire SIRENE.

  • ≥ 0.85 — Appariement fiable (noms quasi identiques)
  • 0.5 – 0.85 — Appariement probable, vérification manuelle recommandée
  • < 0.5 — Appariement incertain — le score doit être interprété avec réserve

Estimation de la marge pour les autres dimensions

En l'absence d'indice quantifié, nous estimons qualitativement les marges d'incertitude :

DimensionMarge estiméeCondition pour une bonne fiabilité
Cohérence± 5-15 ptsConfiance ≥ 0.85
Concentration± 2-5 pts≥ 50 marchés dans le département
Réseau± 5-10 ptsDonnées DECP complètes pour le département
Transparence± 0-5 ptsDonnées généralement complètes (faible incertitude)
Composite± 3-10 ptsMoyenne pondérée des marges individuelles

7. Limites générales du système

Ce que VigiCité ne fait PAS :

  • Pas de prédiction. Les scores mesurent l'état actuel des données publiques, pas une probabilité de comportement futur.
  • Pas de jugement. Un score bas peut résulter de données manquantes, de délais administratifs, ou de situations tout à fait légitimes.
  • Pas d'exhaustivité. Les données publiques françaises sont inégales : certains départements sont mieux couverts que d'autres.
  • Pas de causalité. Un croisement entre participations et marchés ne prouve rien : une entreprise peut légitimement remporter un contrat.

Biais systémiques identifiés

  • Biais de couverture DECP : Les grandes collectivités publient davantage de marchés. Les départements ruraux peuvent sembler plus “concentrés” simplement parce que moins de marchés sont recensés.
  • Biais de mandat : Les élus nationaux (députés, sénateurs) ont davantage de données disponibles (JO, lobbys) et tendent à avoir de meilleurs scores de transparence.
  • Biais temporel : Les élus récemment nommés ont moins de données et donc des scores tendanciellement plus bas.
  • Biais de taille : Plus une entreprise a d'activités, plus elle a de chances d'apparaître dans les croisements, indépendamment de tout lien réel avec un élu.

Ce que nous faisons pour atténuer ces biais

  • Facteurs expliqués : chaque score est accompagné de la liste des facteurs qui l'ont influencé
  • Sources citées : chaque donnée est traçable jusqu'à sa source publique
  • Versionnage : chaque méthodologie est versionnée pour permettre la comparaison dans le temps
  • Seuils centralisés : tous les paramètres sont dans un fichier unique (thresholds.py), modifiable et auditable
  • Code ouvert : tout le code source est publié sous licence AGPL-3.0

8. Sources de données

SourceDonnéesFormatLicence
HATVP Déclarations patrimoine, intérêts, participations CSV + XML Etalab / Licence Ouverte
DECP Marchés publics (commande publique) JSON / XML Licence Ouverte 2.0
SIRENE Répertoire national des entreprises API JSON Licence Ouverte
Journal Officiel (DILA) Nominations, décrets XML Données publiques
Registre des lobbys (HATVP) Représentants d'intérêts, activités JSON / CSV Etalab
RNA Répertoire National des Associations CSV Licence Ouverte
CNCCFP Comptes de campagne, financement partis CSV Données publiques
OFGL Budgets des collectivités locales CSV / API Licence Ouverte

Toutes ces sources sont en accès libre et anonyme. Aucune API nécessitant une identification n'est utilisée. Les données sont collectées, stockées et croisées localement.

9. Export reproductible

Pour permettre la vérification indépendante et la recherche, VigiCité met à disposition un export anonymisé du dataset complet.

Formats disponibles

  • CSV scores — tous les élus avec leurs 5 scores et métadonnées : /api/export/csv
  • JSON détaillé — un élu avec scores, facteurs, déclarations, participations, relations : /api/export/json?elu_id=1
  • Dataset anonymisé — scores + statistiques sans noms, pour analyse statistique : /api/export/dataset

Contenu du dataset anonymisé

Le dataset anonymisé contient pour chaque élu :

  • Un identifiant aléatoire (pas l'ID réel)
  • Département, type de mandat (mais pas le nom)
  • Les 5 scores avec leur version de méthodologie
  • Nombre de déclarations, participations, relations
  • Indice de confiance du matching (quand disponible)

Ce dataset permet de reproduire les analyses statistiques (distributions, corrélations entre dimensions, biais) sans identifier les élus individuellement.

Méthodologie v2 — Avril 2026. Code source disponible sous licence AGPL-3.0. Tous les paramètres et seuils sont centralisés dans src/scoring/thresholds.py. Pour signaler une erreur méthodologique, utilisez le droit de réponse.
Ces données sont issues exclusivement de sources publiques. Les scores mesurent la cohérence des données, pas l'intégrité des personnes. Le citoyen tire ses conclusions.