Algorithme de contrôle de la CAF : ce que révèle le code open source du DMDE 2026

20/01/2026
Intelligence Artificielle

Quand une administration publie le code de son algorithme de ciblage, ce n'est pas un simple geste de com, c'est une occasion rare de regarder, calmement, ce que dit vraiment le scoring.

Algorithme de contrôle de la CAF : ce que révèle le code open source du DMDE 2026 © BravRez IA

Un algorithme qui fait parler : ce qu'on imagine, ce qu'on voit vraiment

Quand on entend "scoring" et "administration", l'imaginaire collectif s'emballe vite. On pense à une boîte noire qui distribue des notes aux gens, qui déclenche des contrôles automatiquement, et qui finit par pénaliser toujours les mêmes profils. Ce soupçon n'est pas absurde, parce que beaucoup de systèmes de tri restent opaques, même quand ils ont un impact très concret sur la vie quotidienne.

Et puis arrive un objet assez rare : un algorithme public dont la documentation est publique, et dont le code a été mis à disposition. Le DMDE 2026, pour "Datamining Données Entrantes", sert à prioriser des dossiers en fonction d'un risque statistique d'indu. Pas de grand mystère marketing ici, plutôt un modèle classique, assumé, et (surtout) auditable.

La question devient alors beaucoup plus intéressante... que révèle vraiment le code ? Est-ce que la transparence suffit à dissiper les doutes, ou bien est-ce qu'elle permet surtout de poser les bonnes questions, celles qui restaient floues parce qu'on n'avait rien de concret sous les yeux ?

Dans cet article, on regarde DMDE 2026 comme un cas d'étude technique et éthique. Pas pour juger, ni pour faire peur, mais pour comprendre. Et, au passage, pour montrer à quoi ressemble un audit algorithmique propre quand on a enfin de la matière.

Un algorithme qui fait parler : ce qu'on imagine, ce qu'on voit vraiment © BravRez IA

Ce que fait le DMDE 2026 : un indicateur de risque d'indu, pas une décision

Le DMDE 2026 vise un objectif explicite : cibler des dossiers présentant un risque d'avoir un indu d'au moins 600 euros sur au moins 6 mois. En clair, il ne "dit" pas qu'il y a fraude, il estime une probabilité d'indu important, ce qui n'est pas la même chose (et cette nuance compte, vraiment).

Chiffres clés (2024) :

  • 13,8 millions de foyers allocataires
  • 166 000 contrôles issus du DMDE (environ 0,5% des contrôles totaux)
  • 7% des contrôles DMDE mènent à une qualification en fraude
  • 26% des fraudes détectées le sont via le DMDE


Ce cadre permet d'éviter un contresens fréquent : un score élevé n'est pas une preuve, c'est un signal. L'important, ensuite, c'est le processus autour du signal : comment il est utilisé, par qui, avec quelle marge de manœuvre, et avec quel suivi.

Ce que fait le DMDE 2026 : un indicateur de risque d'indu, pas une décision © BravRez IA

Partie technique : sous le capot, deux régressions logistiques et une transition temporelle

Une architecture en 4 programmes : plutôt lisible



Le système est décomposé en quatre programmes distincts. Ce n'est pas juste un choix d'organisation du code, c'est aussi une bonne nouvelle pour l'audit, parce qu'on peut isoler les hypothèses et vérifier chaque bloc.
  • Programme 1 : modèle sans préremplissage (17 variables)
  • Programme 2 : identification des "signalements"
  • Programme 3 : modèle avec préremplissage (11 variables)
  • Programme 4 : pondération temporelle des deux scores pour produire un score final

Pourquoi deux modèles ?



Parce qu'il y a une transition de régime déclaratif, avec le préremplissage des déclarations trimestrielles (et une mise en place qui n'arrive pas partout au même moment). Le DMDE 2026 assume donc une cohabitation temporaire entre un modèle "avant" et un modèle "après".

Au passage, c'est le genre de détail qui change tout : un modèle statistique n'est jamais hors sol. Il dépend des données disponibles, et donc des réformes, des formulaires, des délais de remontée, des outils utilisés. Dit autrement, on n'a pas seulement un modèle, on a un modèle dans un système administratif vivant.

La régression logistique : une formule simple, donc explicable



Le cœur, c'est de la régression logistique. Pas un modèle profond, pas une boîte noire. Et ça se voit dans les éléments publiés : coefficients, intercept, exemple de calcul. On peut lire, traduire, discuter.

La formule :
P(indu >= 600 euros, >= 6 mois) = exp(Z) / (1 + exp(Z))

où Z = intercept + somme(coefficient_i x variable_i)


Intercepts communiqués :
  • Modèle 1 (sans préremplissage) : -1.2357
  • Modèle 2 (avec préremplissage) : -0.8298

Encadré technique : calcul d'un score

# Régression logistique : on calcule un score entre 0 et 1

# Z = intercept + somme(coef_i * var_i)
# score = exp(Z) / (1 + exp(Z))

import math

def logistic_score(intercept, features, coefs):
Z = intercept
for name, value in features.items():
Z += coefs.get(name, 0.0) * value
return math.exp(Z) / (1.0 + math.exp(Z))


Ce choix technique rend aussi possible une lecture en "odd-ratio" (rapport des cotes). C'est souvent le pont le plus simple entre data et décision : on ne parle plus en formules, on parle en effets multiplicatifs sur le risque statistique.

Rapport des cotes (Odd-ratio) : comment lire un coefficient sans se raconter d'histoires



Dans une régression logistique, chaque coefficient se convertit en rapport des cotes avec exp(coefficient). Un rapport des cotes de 2,9 ne veut pas dire "2,9 fois plus de fraude". Il veut dire que, toutes choses égales par ailleurs selon les variables du modèle, les cotes de l'événement cible augmentent d'un facteur 2,9. Et l'événement cible ici, c'est l'indu important, pas une qualification pénale.

La pondération temporelle : une transition progressive sur 24 mois



Le DMDE 2026 n'allume pas et n'éteint pas un modèle d'un coup. Il mélange les deux scores pendant 24 mois avec une pondération prorata temporis.

score_final = (n/24) x score_avec_DRM + (1 - n/24) x score_sans_DRM

où n = nombre de mois depuis le préremplissage


Infos de déploiement mentionnées :
  • CAF pré-séries (06, 10, 34, 64, 85) : préremplissage depuis octobre 2024
  • Autres CAF : depuis mars 2025
  • Disparition complète du modèle 1 annoncée pour mars 2027


Encadré technique : pondération (pseudo-code commenté)
# Transition sur 24 mois :

# n = nombre de mois écoulés depuis l'arrivée du préremplissage
# au début n=0 -> 100% ancien modèle
# à la fin n=24 -> 100% nouveau modèle

def blended_score(score_old, score_new, n_months):
w = max(0.0, min(1.0, n_months / 24.0))
return w * score_new + (1.0 - w) * score_old


Ce mécanisme est assez logique : si les données d'entrée changent (préremplissage, corrections, délais), les patterns changent aussi. La transition progressive limite les à-coups. Après, bien sûr, ça crée une période hybride... et c'est justement là où il faut monitorer, parce que les périodes hybrides sont souvent les plus "bizarres".

Partie technique : sous le capot, deux régressions logistiques et une transition temporelle © BravRez IA

Tableau récapitulatif : quelques facteur de risque relatif (sur les cotes) qui structurent vraiment le score

Voici un extrait des effets les plus marquants, ceux qui, en pratique, tirent le score vers le haut ou vers le bas. Ce tableau ne remplace pas une analyse complète des distributions, mais il dit déjà beaucoup (et il est facile à expliquer à un décideur non-tech).

Facteur Modèle Odd-ratio Lecture rapide
Prestations totales > 1400 euros/mois Modèle 2 2.97 Effet très majorant
Signalements (conditions et seuils) Modèle 2 2.94 Variable critique à auditer
Prime d'activité > 250 euros/mois Modèle 1 2.70 Effet très majorant
Enfant > 19 ans Modèle 2 2.15 Effet majorant fort
Activité non salariée Modèle 1 et 2 1.82 Complexité déclarative probable
RSA > 560 euros/mois Modèle 1 1.83 Effet majorant notable
Revenus > 2 SMIC Modèle 2 0.35 Effet protecteur fort
Tutelle morale Modèle 2 0.26 Effet protecteur très fort


Ce tableau montre déjà une tendance : le modèle est surtout "socio-administratif". Il ne s'appuie pas sur des données comportementales, il s'appuie sur des situations, des montants, des catégories, des signaux déclarés. C'est plus simple à expliquer... et ça rend aussi certains biais indirects plus probables, on y revient.

Tableau récapitulatif : quelques odd-ratios qui structurent vraiment le score © BravRez IA

Un exemple de calcul : pourquoi c'est important de pouvoir refaire les maths

Le rapport fournit un exemple de calcul complet sur un profil type : bénéficiaire RSA isolé avec enfant étudiant. C'est un bon exercice, parce qu'on peut suivre les contributions, coefficient par coefficient, sans interprétation magique.

Résumé de l'exemple :

  • Z = -1.236 + 0.398 + 0.382 + 0.401 + 0.606 + 0.007 = 0.558
  • Score = exp(0.558) / (1 + exp(0.558)) = 0.636, soit 63,6%

Le chiffre n'est pas une sentence, encore une fois. Mais le fait de pouvoir reproduire le calcul, c'est un vrai marqueur de transparence. Et c'est aussi ce qui permet de discuter proprement des choix de variables, des seuils, et des effets de bord.

Un exemple de calcul : pourquoi c'est important de pouvoir refaire les maths © BravRez IA

Analyse des biais : des exclusions nettes, mais des effets indirects inévitables

Variables exclues : un signal plutôt positif


Le rapport met en avant l'exclusion de variables sensibles ou à fort potentiel discriminant : nationalité, genre, adresse, données comportementales, historique de contrôles. C'est important, parce que ça ferme la porte à certains usages "faciles" (et discutables) des données.

Mais attention... exclure une variable ne supprime pas tous les biais. Les biais indirects existent, parce que d'autres variables peuvent jouer le rôle de proxy (indicateur indirect). C'est la réalité des données, pas un complot, et c'est pour ça qu'on audite.

Le modèle cible-t-il les plus précaires ?


Réponse du rapport : oui, partiellement, et c'est statistiquement justifié par la complexité déclarative. Les variables RSA et prime d'activité augmentent le score, tandis que des revenus élevés ont un effet protecteur. Autre nuance intéressante : les foyers sans aucune ressource ne sont pas forcément les plus ciblés, le coefficient est plutôt neutre dans ce cas.

Dit autrement, on peut avoir un biais de concentration des contrôles sur certains publics, non pas parce qu'on "vise" moralement ces publics, mais parce que le système optimise un signal (l'indu) qui apparaît plus souvent là où la règle est complexe, et là où les déclarations sont fréquentes.

La recommandation pragmatique est donc simple : monitorer la surreprésentation des bénéficiaires RSA et prime d'activité dans les contrôles effectifs, pas seulement dans les scores. Un modèle peut être statistiquement cohérent et socialement déséquilibrant, les deux peuvent coexister.

Focus : la variable "signalements", le point le plus délicat


C'est probablement la zone la plus sensible du DMDE 2026. La variable "signalements" a un odd-ratio très élevé (2.94 dans le modèle avec préremplissage), et elle vise un comportement très précis : des corrections à la baisse répétées des ressources préremplies, non vérifiées par une cellule experte.

Conditions de déclenchement / flag (résumé technique) :
freq_ecart_tot_12_drm_bin = 1 si :

- écart moyen signalement vs DRM < -150 euros (sous-déclaration)
- et au moins 2 DTR avec signalement
- et signalement non vérifié par la cellule experte


Ce qui est "bien pensé" : le seuil de 150 euros évite de capturer des micro-corrections, le minimum de 2 DTR évite une erreur ponctuelle, et l'exclusion des cas vérifiés limite les faux positifs évidents.

Ce qui est plus inquiétant (disons, à surveiller de très près) : la capture uniquement des corrections à la baisse. Or une correction à la baisse peut être légitime, par exemple en cas de perte d'emploi, de fin de contrat, ou de décalage temporaire de données entre sources. Et dans ce cas, le modèle peut pénaliser un comportement pourtant normal, simplement parce qu'il ressemble à un pattern statistique associé à des indus.

La recommandation proposée est assez concrète : exclure les corrections à la baisse lorsqu'elles sont cohérentes avec un changement de situation déclaré. Ça ressemble à du bon sens métier, mais il faut le traduire en règles vérifiables, sinon ça reste une intention.

Corrélation vs causalité : la nuance qui évite les contresens


Dire "RSA augmente le score" ne veut pas dire "RSA cause la fraude". Ça veut dire "RSA est associé au risque statistique d'indu dans ce cadre". Pour aller plus loin, il faut regarder les délais de remontée des revenus, la fréquence des changements de situation, la complexité des droits, et la qualité du préremplissage. Bref, des causes administratives autant que des causes individuelles.

Analyse des biais : des exclusions nettes, mais des effets indirects inévitables © BravRez IA

Mise en perspective : transparence, auditabilité, et suivi dans la durée

Un niveau de transparence rare, et donc utile


Dans le privé, des scores existent partout : crédit, assurance, fraude bancaire. La différence, dans le public, c'est l'exigence de redevabilité. Ici, plusieurs éléments vont dans le bon sens : modèle explicable (régression logistique), documentation, glossaire, seuils explicites, et une démarche éthique formalisée avec un comité d'éthique consulté à chaque étape de construction.

Qualité du code : un point souvent oublié, mais décisif


Le rapport souligne une bonne lisibilité, une documentation solide, une reproductibilité correcte (paramètres explicites, seuils documentés), et une stack technique (environnement technique) moderne type PySpark / Databricks pour traiter les volumes de données. Ce genre de détail paraît secondaire... et pourtant, en audit, c'est un accélérateur ou un frein énorme. Un modèle bien documenté se contrôle, un modèle bricolé ne se contrôle pas, même s'il est mathématiquement simple.

Ce qui doit être suivi, sinon la transparence reste symbolique


Le rapport liste plusieurs recommandations qui ressemblent à une feuille de route d'audit post-déploiement. Et c'est là où ça devient sérieux, parce que l'état d'un modèle ne se juge pas seulement à t0 (au lancement).

  • Monitorer la surreprésentation des bénéficiaires RSA et prime d'activité dans les contrôles effectifs
  • Revoir la variable "signalements" pour distinguer corrections légitimes et sous-déclarations
  • Indexer le seuil de 600 euros sur l'inflation (le seuil n'est pas ajusté depuis 2018)
  • Publier des statistiques annuelles de répartition des contrôles par profil socio-économique


Ce dernier point, la publication annuelle, est probablement celui qui rendrait le débat le plus rationnel. Parce qu'on sortirait des impressions, on entrerait dans les chiffres. Et oui, ça demande du travail, mais c'est le prix d'une gouvernance sereine.

Mise en perspective : transparence, auditabilité, et suivi dans la durée © BravRez IA

Conclusion : saluer la transparence, et demander des preuves dans la durée

Le DMDE 2026 est un cas rare, utile, et, au fond, assez pédagogique. Il montre qu'on peut publier un algorithme de scoring public, documenter ses variables, expliquer sa formule, et proposer une démarche éthique sans tomber dans le flou total. Rien n'est parfait, bien sûr, et certains points méritent une vigilance réelle, notamment la variable "signalements" et la concentration potentielle des contrôles sur les publics les plus précaires.

Mais l'important, ici, c'est que la discussion devient possible, parce qu'on a le code, les seuils, et les coefficients. On peut auditer. On peut comparer. On peut corriger. Et ça, honnêtement, ce n'est déjà pas si fréquent.

Conclusion : saluer la transparence, et demander des preuves dans la durée © BravRez IA

Le mot de la fin

Vous utilisez (ou vous achetez) des systèmes de scoring, de tri, de priorisation, ou de détection d'anomalies ? Chez BravRez, nous réalisons des audits algorithmiques concrets, à la fois techniques et orientés gouvernance (variables, proxies, biais indirects, explication, monitoring post-déploiement). Écrivez-nous pour un premier cadrage, on vous dira ce qui est auditable vite, et ce qui demande plus de travail... sans jargon inutile.

En savoir plus

https://www.caf.fr/professionnels/etudes-et-international/donnees-et-outils/modele-de-datamining-donnees-entrantes

Questions fréquentes

Le DMDE 2026 est un algorithme de ciblage qui évalue le risque d'indu de plus de 600 euros sur 6 mois, sans confirmer la fraude.

Il utilise deux régressions logistiques pour analyser des données et produit un score de risque basé sur divers facteurs.

Des facteurs comme les prestations totales et les signalements ont un impact significatif sur le score, augmentant la probabilité d'indu.

La transparence permet d'auditer l'algorithme et de poser des questions critiques sur son utilisation et ses biais potentiels.

Bien que certaines variables discriminantes soient exclues, des biais indirects peuvent persister, influençant la concentration des contrôles.

  • Tags:
  • audit algorithme
  • scoring social
  • transparence
  • regression logistique
  • biais
  • pyspark
  • gouvernance IA
  • controle
BravRez Logo