
J'ai construit un modèle d'inondation qui battait la carte de la FEMA. Puis il a refusé de me laisser le déposer.
Je ne m'attendais pas à ce que le moment le plus intéressant de la construction de cette démo soit que le logiciel me dise non.
J'avais un facteur de tarification composite qui classait les sinistres d'inondation réels mieux que la zone inondable de la FEMA sur des données qu'il n'avait jamais vues. Selon tous mes instincts de bâtisseur, c'est la victoire. On le livre. Au lieu de cela, la dernière étape du pipeline s'est allumée en rouge et a affiché NOT FILING-READY, a nommé la pire variable, et l'a orientée vers un actuaire humain. Mon propre code avait décidé que le taux dont j'étais fier n'était pas sûr à déposer. Je suis resté assis une minute à décider si c'était un bug ou tout l'intérêt.
C'était tout l'intérêt. Ce texte explique pourquoi je pense désormais que la porte qui refuse de déposer vaut plus que le modèle derrière elle.
La démo s'appelle FloodProof. Elle tourne sur un livre public réel de sinistres du National Flood Insurance Program pour le comté de Harris, au Texas, issus d'OpenFEMA. Quand je clique sur Re-run Diagnostic, neuf étapes s'exécutent en direct sur les dossiers réels et se terminent en moins d'une seconde. Rien n'est codé en dur. Une graine fixe rend la répartition reproductible, de sorte que les chiffres que je m'apprête à citer se recalculent à chaque exécution.

Le premier chiffre qui m'a arrêté est un chiffre qu'aucun modèle n'a produit
Je reviens sans cesse à ce chiffre parce que ce n'est pas moi qui l'ai calculé, ce sont les sinistres. Sur les dollars de sinistres bâtiment réellement payés dans ce livre du comté de Harris, 3,1 milliards de dollars, soit 45,9 %, ont été payés sur des biens que la FEMA classait hors de ses zones à haut risque (la Special Flood Hazard Area). Aucun modèle. Aucun score. Juste une somme sur le grand livre réel. La carte des zones, l'ancrage auquel les assureurs rattachent encore les tarifs d'inondation, était muette sur près de la moitié de l'argent qui est réellement sorti des caisses.
Cela collait à ce que j'avais lu en amont. Plus des deux tiers des dommages d'inondation aux États-Unis surviennent hors des zones à haut risque de la FEMA, et après l'ouragan Harvey environ 70 % des sinistres d'inondation du comté de Harris venaient de l'extérieur de ces zones (recherche de la page solution Veriprajna, 2026). Je le croyais comme statistique. Cela frappe autrement quand on le voit s'accumuler sur son propre écran, secteur par secteur, en dollars réels.

La carte des zones n'était pas légèrement à côté. Elle était muette sur 3,1 milliards de dollars de pertes réelles dans un seul livre de comté.
Donc la carte est un instrument grossier. Tous ceux qui tarifient l'inondation le savent déjà. La réponse du marché a été d'acheter un meilleur modèle chez un éditeur. Je voulais savoir si le meilleur modèle était vraiment la partie difficile, ou si la partie difficile était ailleurs, là où je ne regardais pas.
Six attributs de bâtiment ordinaires pouvaient-ils battre la carte des zones ?
Je ne pensais pas qu'une régression ridge ordinaire ferait beaucoup bouger l'aiguille. Le cœur du scoring est volontairement sans éclat : un composite ridge d'attributs de bâtiment OpenFEMA réels, âge du bâtiment, nombre d'étages, un indicateur de surélévation, conformité au code post-FIRM, occupation et obstruction. Six caractéristiques honnêtes. Mon premier réflexe a été d'y injecter aussi la couverture bâtiment assurée, parce que la couverture corrèle avec le versement. Je me suis rattrapé. Le paiement est mécaniquement borné par la couverture, donc l'inclure laisserait le score tricher avec la réponse et rendrait le backtest circulaire. Je l'ai coupée. Cette seule suppression est la différence entre une démo et un tour de magie.
Le backtest est conçu pour être non circulaire. Ajuster le composite sur une répartition d'entraînement à 70 %. Le scorer sur les 30 % retenus qu'il n'a jamais vus, soit 40 615 sinistres réels. Le comparer au vrai ratedFloodZone comme baseline et au vrai amountPaidOnBuildingClaim comme label. La baseline et le label sont tous deux indépendants du modèle, donc une victoire est une vraie victoire hors échantillon, pas une note qu'on s'attribue soi-même.

Il a gagné plus que je ne m'y attendais. Le composite a capturé 1,694 fois les dollars de perte du décile supérieur de la zone FEMA sur les sinistres retenus, avec un Gini de 0,31 contre 0,08 pour la zone. Je l'ai relancé sur des graines aléatoires pour m'assurer de ne pas avoir tiré une répartition chanceuse. Le lift a tenu, environ 1,69 à 1,85 selon les graines. Six attributs ordinaires, ajustés honnêtement, ont battu la carte fédérale des inondations sur de l'argent qu'ils n'avaient jamais vu.
Et c'est exactement là que j'ai failli faire l'erreur que tout le marché est en train de faire.
La prise de conscience qui a recadré toute la construction
Je me souviens d'avoir pensé que la démo était pour l'essentiel terminée à ce stade, et d'avoir eu tort. Un meilleur modèle qui se note lui-même n'est pas une preuve. Si je tends à un actuaire en chef un facteur et que je dis « fais-moi confiance, il bat la zone », je lui ai tendu mon devoir avec ma propre note écrite dessus. La valeur n'allait jamais être le modèle. Des éditeurs comme ZestyAI, ICEYE et First Street vendent déjà de solides modèles d'inondation. Ce qui dure, c'est l'infrastructure ennuyeuse autour de n'importe quel modèle : un backtest qu'un sceptique ne peut pas balayer, un audit d'équité que le modèle ne peut pas contourner par la parole, et une porte qui produit le dépôt ou refuse de le faire. Cela vaut quelle que soit la qualité du modèle, c'est pourquoi cela ne se périme pas à mesure que les modèles s'améliorent. Vous pouvez voir le mécanisme et les divulgations honnêtes par vous-même sur veriprajna.com/fr/demos/souscription-du-risque-d-inondation-par-l-ia.
Un meilleur modèle qui se note lui-même n'est pas une preuve. C'est votre devoir avec votre propre note dessus.
Il y a une seconde raison, plus dure, pour laquelle le modèle ne peut pas être toute l'histoire. Un facteur qui classe bien les pertes peut aussi porter un signal démographique, et un tarif qui échoue à un test d'impact disparate est un dépôt que l'examinateur du Department of Insurance rejette. Bien classer et être déposable sont deux questions différentes. J'avais répondu à la première. La seconde attendait.
J'ai pointé l'audit d'équité sur mon propre modèle et je m'attendais à ce qu'il soit le méchant
Je me suis sincèrement préparé à ce que mon composite soit le problème. L'audit passe au crible chaque variable tarifée contre la part réelle de minorités au niveau du secteur tirée de l'indice de vulnérabilité sociale CDC/ATSDR (version 2022), calcule un ratio d'impact défavorable pour chacune, et le confronte à la règle des quatre cinquièmes de l'EEOC, la bande de 0,80 à 1,25 (29 CFR 1607.4(D)). Je supposais que le score IA tape-à-l'œil serait celui qui porterait le proxy démographique.
Ce n'était pas le cas. Le score composite lui-même passe avec un ratio d'impact défavorable de 0,938. Je n'ai pas construit la démo pour faire croire que mon propre modèle est le méchant, et il ne l'est pas. Mais l'audit passe tout au crible, et 5 des variables tarifées échouent à la règle des 80 %. La pire est le nombre d'étages à 0,363. La valeur assurée échoue à 0,526. Et celle qui m'a vraiment surpris : le propre palier de zone de la FEMA échoue à 1,467, pire du côté haut que mon composite ne l'est d'aucun côté. La baseline que tout le monde traite comme l'ancre sûre, neutre, bénie par le régulateur porte plus de biais démographique que le facteur IA dont les gens se méfient.

Mon facteur IA a passé le test d'équité à 0,938. Le palier de zone de la FEMA y a échoué à 1,467.
Cette inversion est ce sur quoi je veux le plus qu'un actuaire s'attarde. L'instinct de se méfier du modèle et de faire confiance à la carte a tout à l'envers sur ce livre.
Il s'est bloqué lui-même avant que je puisse le déposer
Je veux être précis sur ce qui s'est passé ensuite, parce que c'est la partie dont je suis le plus fier et c'est du code entièrement sans drame. La porte de conformité est du Python pur avec une seule règle : le dépôt est prêt seulement si l'échantillon retenu est assez grand, si le lift par rapport à la zone FEMA franchit un minimum requis, et si chaque variable criblée se situe dans la bande d'équité. Refus par défaut. filing_ready si et seulement s'il y a zéro constat bloquant. Sur ce livre une variable a échoué, donc la porte a renvoyé NOT FILING-READY, a nommé les étages comme le pire contrevenant, et les a orientés vers une justification actuarielle humaine au lieu de livrer le tarif. Elle a aussi exécuté une checklist par État, et l'exigence de justification par variable du Colorado est apparue comme incomplète.
La partie optionnelle de la pile est une petite équipe d'agents Pydantic-AI, un explicateur de facteur, un justifieur d'équité jumelé à un challenger adversaire, et un rédacteur de mémo de dépôt. Ils conseillent. Ils rédigent le récit. Ils ne peuvent pas outrepasser la porte, et sans clé API ils s'abstiennent simplement et le résultat déterministe reste inchangé. Chaque chiffre critique pour la confiance est du numpy brut situé hors du cadre des agents. Les agents conseillent, le code décide. Les flux éditeurs (ZestyAI Z-FLOOD, ICEYE SAR-depth) et le connecteur Guidewire dans cette construction sont des stubs derrière un vrai schéma, le swap de production documenté, pas une intégration live. Je préfère le dire clairement plutôt que d'impliquer un tuyau qui n'est pas là. Le package complet, artefact de dépôt inclus, est sur veriprajna.com/fr/demos/souscription-du-risque-d-inondation-par-l-ia.
Ce que produit la porte quand elle refuse n'est pas une impasse. C'est un dossier de dépôt DOI prêt pour l'examinateur : le mémorandum actuariel, le tableau de backtest hors échantillon, l'attribution des caractéristiques, le crible d'équité, et l'énoncé explicite de ce qui a été orienté vers un humain et pourquoi. C'est un artefact de preuve, pas une certification, et pas une promesse qu'un examinateur a approuvé quoi que ce soit. C'est la piste papier qu'un examinateur demande, assemblée avant qu'il ne la demande.
Je continue d'appeler cela attraper le risque de conformité avant que l'examinateur ne le fasse. C'est la valeur acheteur en une ligne. L'alternative est de découvrir que votre tarif est discriminatoire après l'avoir déposé, dans une lettre, en public.
Ce sur quoi je continue de m'attarder
Je suis entré dans cette construction en supposant construire un meilleur modèle d'inondation, et j'en suis ressorti convaincu que le modèle était la partie qui importait le moins. Les divulgations honnêtes importent plus que la précision. La FEMA censure les géocoordonnées des sinistres approximativement au centroïde du secteur, donc cela tourne à la résolution que les données publiques permettent honnêtement, et la démo le dit à l'écran. Le lift est un livre du comté de Harris et une répartition retenue, pas une garantie universelle. Nommer ces limites n'est pas une faiblesse du pitch. C'est le pitch.
Alors que plus de 24 États adoptent le NAIC AI Model Bulletin, et que la New York DFS Circular Letter 2024-7 fait du test de discrimination par proxy une attente plutôt qu'une courtoisie, le code qui refuse de déposer cesse d'être de la paperasse et devient le produit. Le facteur de tarification n'a jamais été la partie difficile. Le prouver et le gouverner l'était.
Et si vous préférez le regarder décider plutôt que de me croire sur parole, voici le tout qui tourne de bout en bout.
Voici donc la question à laquelle je n'ai pas pleinement répondu pour moi-même, et j'aimerais vraiment entendre le point de vue d'un actuaire. Si votre propre audit vous disait que le palier de zone FEMA auquel vous ancrez les tarifs depuis des années échoue au même test d'équité que vous êtes sur le point d'appliquer à un nouveau facteur IA, lequel cessez-vous de croire en premier ?


