A fight model fit on scraped season results, and an arena that plays out what it predicts.
Model prediction before the bout. No bias term, so the two sides always sum to 100%.
Name both players, set the ante, then run the fight. Winner takes the pot.
When it claims 80%, does it happen 80% of the time? Bars are what actually happened; the line is what was claimed.
Green means the model called it. Each row was predicted by a model refit from scratch without that fight.
Row beats column, as a win rate shrunk toward 50/50 by sample size. Hover a cell for the raw record.
Mean win probability against the whole field. Falls straight out of the model, so there is no second scoring system to justify.
Standardised logistic weights. Positive means the feature favours the bot that has more of it.
loading...
Read off the from= field of each competitor's infobox, on the same
25 pages as the roster - so this cost zero extra requests. Note what it is and is not: this is
where the teams are, not where the audience is.
loading...
The same 24 scraped bots, emitted as Polymarket market objects priced by our model. This is a listing payload, ready to post. The prices are the model's opinion, not a market's - nobody has traded these and the label says so.
Every source, which Bright Data product fetched it, and what it cost us. The two refusals are listed on purpose - a lineage that only shows what worked is a sales pitch, not a lineage.
Run against the loaded files at boot. A scraper that half-works is worse than one that fails loudly.
Mentions and reach scraped from X, against on-field results. Reach is measured; tone is not - the X Posts dataset returns engagement counts, not sentiment, so guessing a mood score here would be inventing data. The interesting row is a bot talked about a lot that is not winning.