PER90

Championship · England

West Ham UnitedvCharlton Athletic

London Stadiumlineups not announced

Referee

Andrew Kitchen

58 matches on record

Fouls per game

23.0

-1% vs league

League average

23.2

fouls per match, both teams

Facts with sample sizes, not predictions. The market % beside a line is the books’ median price with margin in, and the over market runs hot.

Value — 4 live calls

Published at the price shown and scored against the closing line whatever happens next — the same rows, with staking context, are on the value board and in the track record.

What these numbers are

Not tips and not prices. Each row is the model's expected count for one player in this match — how many fouls, tackles or shots it thinks he records — plus the full spread of outcomes around it. Nothing here has been compared to a bookmaker.

  1. Step 1

    His own record

    Every completed match in the dataset, as a rate per 90 minutes. The n column is how many matches that rests on.

  2. Step 2

    Pulled toward his position

    A thin record gets pulled hard toward other players in his position, in his league — a goalkeeper toward goalkeepers, not toward the outfielders around him. How hard is fitted per market, not chosen: tackles pull about four times harder than shots on target.

  3. Step 3

    This fixture's conditions

    How much of the stat the opponent concedes, what the referee's matches look like, and home or away. This is where a projection stops being a season average.

  4. Step 4

    Scaled to expected minutes

    A rate becomes a count only once you say how long he plays. 60 minutes carries two-thirds the exposure of 90, and the distribution is built at that exposure.

How to read each column
Model /90
The model's rate for this match with the minutes taken back out — steps 1 to 3 already applied. It moves with the opponent and the referee, so it is not his raw career rate; the builder shows career and model rates side by side.
Exp. mins
Minutes the model expects. Confirmed means the lineup is out; provisional means it is guessing from his start rate, and is the widest of the three.
Projected
The expected count in this match, at those minutes. This is the number a line is set against.
Over 1.5, etc.
Read straight off the distribution beside it, not off how often he has beaten that line before. It answers what the model thinks, not what has happened.
n
Matches behind his own rate. Under 30 it turns amber: the projection is mostly his position group speaking, and §6.3 will not publish an edge on it.
Distribution
The whole spread, not just the average. The dashed amber cut is the line; jade bars beat it. An expected 1.8 fouls made of 2 every week and an expected 1.8 made of a 0 and a 5 are different bets, and this is where you see which one you have.

Counts are modelled as negative binomial rather than Poisson, because fouls and tackles are overdispersed and a Poisson would systematically underprice the tails — which is exactly where over bets live. Every market on this page cleared its calibration gate before it was allowed to produce a projection: when the model says 60%, it lands within a point or so of 60% out of sample.

Fouls v20260816-1555 · Shots v20260816-1555 · Shots on target v20260816-1555 · Fouls won v20260816-1555 · Saves v20260816-1229

Model projections

Fouls54 playersHighest: Conor Coventry, 1.42 expectedshow

What drives it Who referees the match. A strict official lifts every player on the pitch, which is the part most books price off a season average. See what has actually happened.

PlayerTeamModel /90Exp. minsProjectedOver 1.5nDistribution
Conor CoventryMIDCharlton Athletic1.6176provisional1.4241%41
026%
133%
223%
312%
44%
51%
6+0%
Greg DochertyMIDCharlton Athletic1.3678provisional1.2234%39
031%
135%
221%
39%
43%
51%
6+0%
Karoy AndersonMIDCharlton Athletic1.5663provisional1.1933%10
033%
134%
220%
39%
43%
51%
6+0%
Harvey KnibbsMIDCharlton Athletic2.0643provisional1.1833%26
035%
132%
219%
39%
43%
51%
6+0%
Nathaniel ChalobahMIDCharlton Athletic1.7950provisional1.1532%30
035%
134%
219%
38%
43%
51%
6+0%
Lucas PaquetáMIDWest Ham United1.2679provisional1.1331%51
033%
135%
220%
38%
42%
51%
6+0%
Taty CastellanosFWDWest Ham United1.2579provisional1.1331%59
033%
136%
220%
38%
42%
51%
6+0%
Edson ÁlvarezMIDWest Ham United1.5458provisional1.1130%28
035%
134%
219%
38%
43%
51%
6+0%
Kayne RamsayDEFCharlton Athletic1.1983provisional1.1131%37
034%
136%
220%
38%
42%
51%
6+0%
PabloFWDWest Ham United1.4065provisional1.1030%15
035%
135%
219%
38%
42%
51%
6+0%
Crysencio SummervilleFWDWest Ham United1.2471provisional1.0328%50
037%
135%
218%
37%
42%
50%
6+0%
Lloyd JonesDEFCharlton Athletic1.0686provisional1.0327%47
036%
136%
219%
37%
42%
5+0%
Tomáš SoučekMIDWest Ham United1.1073provisional0.9525%70
040%
135%
217%
36%
42%
5+0%
Millenic AlliFWDCharlton Athletic1.3158provisional0.9324%38
043%
133%
216%
36%
42%
50%
6+0%
Matty GoddenFWDCharlton Athletic1.7438provisional0.9023%12
045%
132%
215%
36%
42%
51%
6+0%
Miles LeaburnFWDCharlton Athletic1.5742provisional0.8922%39
044%
134%
215%
35%
42%
50%
6+0%
Luke BerryMIDCharlton Athletic2.2026provisional0.8621%16
048%
131%
213%
35%
42%
51%
6+0%
Reece BurkeDEFCharlton Athletic1.3051provisional0.8521%34
045%
134%
215%
35%
41%
5+0%
Danny McNamaraDEFCharlton Athletic1.3847provisional0.8121%30
049%
130%
213%
35%
42%
50%
6+0%
Macaulay GillespheyDEFCharlton Athletic0.9969provisional0.8020%35
047%
133%
214%
34%
41%
5+0%
Aaron Wan-BissakaDEFWest Ham United0.7386provisional0.7016%61
050%
134%
212%
33%
4+1%
Onel Lázaro Hernández MayeaFWDCharlton Athletic1.3836provisional0.6916%29
053%
131%
211%
34%
41%
5+0%
Tyreece CampbellFWDCharlton Athletic0.9061provisional0.6715%46
053%
132%
211%
33%
41%
5+0%
Amari'i BellDEFCharlton Athletic0.6984provisional0.6514%66
052%
134%
211%
32%
4+0%
El Hadji Malick DioufDEFWest Ham United0.7970provisional0.6414%33
054%
132%
211%
33%
41%
5+0%
Luke ChambersDEFCharlton Athletic0.8461provisional0.6314%18
054%
132%
211%
32%
4+1%
Freddie PottsMIDWest Ham United0.9652provisional0.6314%59
056%
131%
210%
33%
41%
5+0%
Mohamadou KantéMIDWest Ham United1.5328provisional0.6214%12
059%
127%
29%
33%
41%
5+0%
Charlie KelmanFWDCharlton Athletic0.9847provisional0.6013%33
057%
130%
210%
32%
41%
5+0%
Kyle Walker-PetersDEFWest Ham United0.6381provisional0.5812%57
057%
132%
210%
32%
4+0%
Joël VeltmanDEFWest Ham United0.8356provisional0.5712%46
058%
129%
29%
32%
4+1%
Andrew IrvingMIDWest Ham United1.2631provisional0.5412%17
062%
127%
28%
32%
41%
5+0%
Sonny CareyMIDCharlton Athletic0.7065provisional0.5411%47
059%
130%
29%
32%
4+0%
Joe Rankin-CostelloDEFCharlton Athletic1.2430provisional0.5411%53
061%
128%
28%
32%
41%
5+0%
Maximilian KilmanDEFWest Ham United0.6570provisional0.5311%60
061%
129%
28%
32%
4+0%
Soungoutou MagassaMIDWest Ham United1.1034provisional0.5211%22
062%
127%
28%
32%
40%
5+0%
Karlan GrantFWDCharlton Athletic0.7260provisional0.5210%71
061%
129%
28%
32%
4+0%
Jarrod BowenFWDWest Ham United0.5388provisional0.5210%73
060%
131%
28%
31%
4+0%
Maxwel CornetFWD1.3524provisional0.5210%17
061%
129%
28%
32%
4+0%
Konstantinos MavropanosDEFWest Ham United0.5877provisional0.5210%65
060%
130%
28%
32%
4+0%
Ibrahim FullahMIDCharlton Athletic1.1329provisional0.499%11
062%
129%
27%
31%
4+0%
George EarthyMIDWest Ham United1.0731provisional0.499%50
062%
128%
27%
32%
4+0%
Nayef AguerdDEFWest Ham United0.5183provisional0.488%23
062%
129%
27%
31%
4+0%
Jean-Clair TodiboDEFWest Ham United0.4976provisional0.437%50
065%
127%
26%
31%
4+0%
Adama TraoréFWDWest Ham United1.0029provisional0.438%60
067%
125%
26%
31%
4+0%
Oliver ScarlesDEFWest Ham United0.6948provisional0.428%29
067%
126%
26%
31%
4+0%
Joël PiroeFWD0.7838provisional0.397%62
070%
123%
26%
31%
4+0%
James Ward-ProwseMIDWest Ham United0.6843provisional0.387%43
070%
124%
25%
31%
4+0%
Rob ApterFWDCharlton Athletic0.7536provisional0.376%13
071%
123%
25%
31%
4+0%
Manor SolomonFWDWest Ham United0.4356provisional0.304%62
075%
121%
24%
3+0%
Alphonse AreolaGKWest Ham United0.0687provisional0.060%46
094%
16%
2+0%
Thomas KaminskiGKCharlton Athletic0.0389provisional0.0382
097%
1+3%
Will MannionGKCharlton Athletic0.0186provisional0.0110
099%
1+1%
Mads HermansenGKWest Ham United0.0088provisional0.0046
0100%
1+0%

All 54 players shown, ranked by projection. Show fewer ↥

Shots54 playersHighest: Taty Castellanos, 3.33 expectedshow

What drives it The player’s own shot rate, shrunk toward others in his position, then adjusted for how many shots the opponent concedes. See what has actually happened.

PlayerTeamModel /90Exp. minsProjectedOver 1.5nDistribution
Taty CastellanosFWDWest Ham United3.7279provisional3.3381%59
05%
114%
219%
320%
416%
511%
6+14%
Jarrod BowenFWDWest Ham United2.6288provisional2.5771%73
09%
120%
224%
320%
413%
57%
6+6%
Crysencio SummervilleFWDWest Ham United2.4471provisional2.0056%50
018%
126%
224%
316%
49%
54%
6+3%
Joël PiroeFWD3.9438provisional1.8645%62
029%
127%
216%
310%
47%
55%
6+6%
PabloFWDWest Ham United2.0865provisional1.5946%15
024%
130%
223%
313%
46%
52%
6+1%
Lucas PaquetáMIDWest Ham United1.7779provisional1.5846%51
023%
131%
224%
313%
46%
52%
6+1%
Manor SolomonFWDWest Ham United2.0856provisional1.3938%62
032%
130%
220%
311%
45%
52%
6+1%
Tomáš SoučekMIDWest Ham United1.5973provisional1.3338%70
030%
133%
221%
310%
44%
51%
6+1%
Karlan GrantFWDCharlton Athletic1.7560provisional1.2334%71
034%
132%
219%
39%
44%
51%
6+1%
Sonny CareyMIDCharlton Athletic1.5665provisional1.1833%47
035%
133%
219%
39%
43%
51%
6+0%

10 of 54 players shown, ranked by projection. Show all 54 →

Shots on target54 playersHighest: Taty Castellanos, 1.38 expectedshow

What drives it Shot volume first, conversion second — literally: the projection is the shots model thinned by the player’s own on-target rate, so a high-volume low-accuracy shooter and a sniper price differently at the same shot count. See what has actually happened.

PlayerTeamModel /90Exp. minsProjectedOver 0.5nDistribution
Taty CastellanosFWDWest Ham United1.5479provisional1.3873%59
027%
133%
223%
311%
44%
51%
6+1%
Jarrod BowenFWDWest Ham United0.9888provisional0.9761%73
039%
136%
217%
36%
42%
5+0%
Joël PiroeFWD1.5538provisional0.7345%62
055%
127%
211%
34%
42%
51%
6+0%
Crysencio SummervilleFWDWest Ham United0.7571provisional0.6144%50
056%
131%
210%
32%
4+1%
PabloFWDWest Ham United0.7465provisional0.5642%15
058%
130%
29%
32%
4+0%
Karlan GrantFWDCharlton Athletic0.6860provisional0.4836%71
064%
127%
27%
32%
4+0%
Lucas PaquetáMIDWest Ham United0.5279provisional0.4737%51
063%
128%
27%
31%
4+0%
Tomáš SoučekMIDWest Ham United0.5573provisional0.4636%70
064%
128%
27%
31%
4+0%
Manor SolomonFWDWest Ham United0.6856provisional0.4535%62
065%
126%
27%
31%
4+0%
Charlie KelmanFWDCharlton Athletic0.6947provisional0.4031%33
069%
124%
26%
31%
4+0%

10 of 54 players shown, ranked by projection. Show all 54 →

Fouls won54 playersHighest: Crysencio Summerville, 1.83 expectedshow

What drives it How much a player runs at defenders. Dribble volume drives this far more than the referee does. See what has actually happened.

PlayerTeamModel /90Exp. minsProjectedOver 1.5nDistribution
Crysencio SummervilleFWDWest Ham United2.2571provisional1.8352%50
020%
128%
224%
315%
48%
54%
6+2%
Lucas PaquetáMIDWest Ham United1.8379provisional1.6347%51
022%
131%
224%
314%
46%
52%
6+1%
Taty CastellanosFWDWest Ham United1.5379provisional1.3639%59
027%
134%
223%
311%
44%
51%
6+0%
Jarrod BowenFWDWest Ham United1.3188provisional1.2836%73
029%
135%
222%
310%
43%
51%
6+0%
Kyle Walker-PetersDEFWest Ham United1.3781provisional1.2435%57
031%
134%
221%
39%
43%
51%
6+0%
Amari'i BellDEFCharlton Athletic1.3184provisional1.2335%66
030%
135%
221%
39%
43%
51%
6+0%
Joël VeltmanDEFWest Ham United1.7156provisional1.1230%46
039%
131%
217%
38%
43%
51%
6+0%
Manor SolomonFWDWest Ham United1.4956provisional0.9826%62
042%
132%
216%
37%
42%
51%
6+0%
Millenic AlliFWDCharlton Athletic1.4158provisional0.9525%38
043%
132%
216%
36%
42%
51%
6+0%
Karlan GrantFWDCharlton Athletic1.1160provisional0.7719%71
049%
132%
213%
34%
41%
5+0%

10 of 54 players shown, ranked by projection. Show all 54 →

Saves4 playersHighest: Thomas Kaminski, 3.01 expectedshow

What drives it Opponent shot volume. A keeper’s own record carries so little that this market shrinks harder than any other on the board. See what has actually happened.

PlayerTeamModel /90Exp. minsProjectedOver 2.5nDistribution
Thomas KaminskiGKCharlton Athletic3.0589provisional3.0156%82
07%
116%
221%
320%
415%
510%
6+11%
Will MannionGKCharlton Athletic3.0686provisional2.9554%10
07%
117%
222%
320%
415%
59%
6+10%
Alphonse AreolaGKWest Ham United2.8087provisional2.7350%46
09%
119%
223%
320%
414%
58%
6+8%
Mads HermansenGKWest Ham United2.5988provisional2.5445%46
010%
121%
224%
320%
413%
57%
6+6%

2 of 7 markets have no projection for this fixture.