<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ewan147</title>
    <description>The latest articles on DEV Community by ewan147 (@ewan147).</description>
    <link>https://dev.to/ewan147</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: ewan147</title>
      <link>https://dev.to/ewan147</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ewan147"/>
    <language>en</language>
    <item>
      <title>Mon modèle de paris semblait excellent sur 3 671 prédictions. Il n'a jamais battu le bookmaker.</title>
      <dc:creator>ewan147</dc:creator>
      <pubDate>Mon, 02 Nov 2026 18:02:08 +0000</pubDate>
      <link>https://dev.to/ewan147/mon-modele-de-paris-semblait-excellent-sur-3-671-predictions-il-na-jamais-battu-le-bookmaker-n3e</link>
      <guid>https://dev.to/ewan147/mon-modele-de-paris-semblait-excellent-sur-3-671-predictions-il-na-jamais-battu-le-bookmaker-n3e</guid>
      <description>&lt;p&gt;English version: &lt;a href="https://dev.to/ewan147/my-betting-model-looked-great-for-3671-predictions-it-never-beat-the-bookmaker-504g"&gt;https://dev.to/ewan147/my-betting-model-looked-great-for-3671-predictions-it-never-beat-the-bookmaker-504g&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pendant 16 jours, j'ai noté chaque probabilité annoncée par mon modèle de paris sportifs avant un match, puis ce qui s'est réellement passé : 3 671 prédictions réglées.&lt;/p&gt;

&lt;p&gt;Selon les indicateurs habituels, il avait l'air bon :&lt;/p&gt;

&lt;p&gt;score de Brier 0,1629 (plus bas = mieux) ;&lt;br&gt;
30,8 % meilleur que de toujours prédire le taux de base ;&lt;br&gt;
erreur de calibration (ECE) de 3,0 % : il annonçait 37,8 % en moyenne, il s'est produit 38,2 %.&lt;br&gt;
Je vous aurais dit qu'il marchait. Il ne marchait pas.&lt;/p&gt;

&lt;p&gt;Meilleur que quoi ?&lt;br&gt;
Un score de Brier seul mesure surtout la difficulté des questions. La seule question qui compte pour parier : est-il meilleur que les cotes du bookmaker ?&lt;/p&gt;

&lt;p&gt;Sur les 510 prédictions pour lesquelles j'avais la probabilité du bookmaker (marge retirée) sur la même issue :&lt;/p&gt;

&lt;p&gt;Brier&lt;br&gt;
Mon modèle 0,1874&lt;br&gt;
Le bookmaker    0,1863&lt;br&gt;
L'écart apparié est de +0,00105, avec un intervalle de confiance à 95 % de [−0,00063 ; +0,00276]. Il penche légèrement contre moi, et il est trop petit pour être distingué de zéro. Verdict : indiscernable du marché. Un modèle qui égale le bookmaker ne peut pas gagner contre sa marge.&lt;/p&gt;

&lt;p&gt;Le chiffre qui m'aurait fait gagner des semaines&lt;br&gt;
La mesure la plus utile ne demande aucun résultat de match : l'écart entre mes probabilités et celles du bookmaker.&lt;/p&gt;

&lt;p&gt;écart médian : 1,0 point ;&lt;br&gt;
corrélation : 0,9941.&lt;br&gt;
Mon modèle ne prédisait pas le football : il recopiait les cotes qu'on lui donnait et les déplaçait un peu. Un modèle aussi ancré ne peut pas battre sa référence, par construction. Et c'était mesurable dès le premier jour, avant le moindre match.&lt;/p&gt;

&lt;p&gt;L'outil&lt;br&gt;
J'en ai fait un outil open source, eval-pack : zéro dépendance, du TypeScript simple sous Node ≥ 22.6. Sa règle principale : pas de verdict sans référence. Si vous ne lui dites pas ce que votre système doit battre, il refuse de le noter.&lt;/p&gt;

&lt;p&gt;Pour reproduire tous les chiffres de cet article :&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/ewan147/llm-eval-public" rel="noopener noreferrer"&gt;https://github.com/ewan147/llm-eval-public&lt;/a&gt;&lt;br&gt;
cd llm-eval-public/pack&lt;br&gt;
node cli.ts run forecast&lt;br&gt;
Les données sont réelles et anonymisées (aucun nom d'équipe, de joueur, d'opérateur ni de personne, aucun montant).&lt;/p&gt;

&lt;p&gt;Ça marche pareil pour les systèmes à base de LLM : un classifieur, un RAG, un juge, un agent. « Le nouveau modèle est-il meilleur ? » est la même question que « mon modèle bat-il le bookmaker ? » : meilleur que quoi, sur combien de cas appariés, avec quel intervalle de confiance.&lt;/p&gt;

</description>
      <category>data</category>
      <category>datascience</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>My betting model looked great for 3,671 predictions. It never beat the bookmaker.</title>
      <dc:creator>ewan147</dc:creator>
      <pubDate>Mon, 02 Nov 2026 17:59:02 +0000</pubDate>
      <link>https://dev.to/ewan147/my-betting-model-looked-great-for-3671-predictions-it-never-beat-the-bookmaker-504g</link>
      <guid>https://dev.to/ewan147/my-betting-model-looked-great-for-3671-predictions-it-never-beat-the-bookmaker-504g</guid>
      <description>&lt;p&gt;For 16 days I logged every probability my sports-betting model announced before a match, and what actually happened afterwards: 3,671 settled predictions.&lt;/p&gt;

&lt;p&gt;By the usual numbers, it looked good:&lt;/p&gt;

&lt;p&gt;Brier score 0.1629 (lower is better)&lt;br&gt;
30.8 % better than predicting the base rate every time&lt;br&gt;
Calibration error (ECE) of 3.0 %: on average it announced 37.8 %, and 38.2 % happened&lt;br&gt;
I would have told you it worked. It didn't.&lt;/p&gt;

&lt;p&gt;Better than what?&lt;br&gt;
A Brier score on its own mostly measures how hard the questions are. The only question that matters for betting is: is it better than the bookmaker's own odds?&lt;/p&gt;

&lt;p&gt;On the 510 predictions where I had the bookmaker's probability (vig removed) for the very same outcome:&lt;/p&gt;

&lt;p&gt;Brier&lt;br&gt;
My model    0.1874&lt;br&gt;
The bookmaker   0.1863&lt;br&gt;
The paired difference is +0.00105, with a 95 % confidence interval of [−0.00063, +0.00276]. It leans slightly against me, and it is too small to tell apart from zero. Verdict: indistinguishable from the market. A model that only matches the bookmaker cannot make money against the bookmaker's margin.&lt;/p&gt;

&lt;p&gt;The number that would have saved me weeks&lt;br&gt;
The most useful measurement needs no match results at all: how close my probabilities were to the bookmaker's.&lt;/p&gt;

&lt;p&gt;median gap: 1.0 point&lt;br&gt;
correlation: 0.9941&lt;br&gt;
My model wasn't predicting football. It was copying the odds it was fed and nudging them a little. A model anchored this tightly cannot beat its reference, by construction, and that was measurable on day one, before a single match was played.&lt;/p&gt;

&lt;p&gt;The tool&lt;br&gt;
I turned the measurement into an open-source harness, eval-pack. Zero dependencies, plain TypeScript on Node ≥ 22.6. Its main rule: no verdict without a reference. If you don't tell it what your system must beat, it refuses to grade it.&lt;/p&gt;

&lt;p&gt;Reproduce every number in this post:&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/ewan147/llm-eval-public" rel="noopener noreferrer"&gt;https://github.com/ewan147/llm-eval-public&lt;/a&gt;&lt;br&gt;
cd llm-eval-public/pack&lt;br&gt;
node cli.ts run forecast&lt;br&gt;
The data is real and anonymised (no team, player, operator or person names, no amounts).&lt;/p&gt;

&lt;p&gt;It works the same way for LLM systems: a classifier, a RAG pipeline, a judge, an agent. "Is the new model better?" is the same question as "does my model beat the bookmaker?": better than what, on how many paired cases, and with what confidence interval.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>datascience</category>
      <category>typescript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
