Career
| Season | Div | Team | Pos | GP | 90s | G | A | raw/90 | adj/90 | sched | rank | pct | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025 | D1 | San Francisco |
DEF | 13 | 12.2 | 1 | 0 | 0.102 | 0.099 | 0.98 | 2166 | 17 | |
| 2024 | D1 | San Francisco |
DEF | 17 | 15.3 | 0 | 0 | 0.043 | 0.043 | · | 2680 | 2 | |
| 2023 | D1 | San Francisco |
DEF | 17 | 13.4 | 1 | 0 | 0.095 | 0.093 | 0.95 | 2257 | 15 | |
| Career | D1 | 1 team | 47 | 40.9 | 2 | 0 | 0.078 | 0.076 |
The career row totals only what can be totalled. Schedule, rank and percentile are blank because each one is a position inside a single division-season, so there is no career version of them, and the best season's percentile is not one. The career raw/90 and adj/90 are every season put on the D1 scale and weighted by minutes, which is the only way to total a rate across divisions. The level ladder is measured from 665 players observed in two divisions, in both directions, so it is a within-player comparison rather than a guess. Treat it as a translation, not a projection. The ladder is an average over players who moved, and most of them were mid-table, so applying it to someone far out in his division's tail assumes the gap is the same size up there. The mover sample cannot check that.
2025 · every game by opponent strength
Each circle is one game, placed by how strong the opponent was and how many goal involvements he had. Filled circles are games he scored or assisted in. He drew 0% of his involvements against the weaker half where 62% was expected given the schedule he played (p = 1.000). That is within the normal range.
2025 game log
| Date | Opponent | opp rating | min | G | A | |
|---|---|---|---|---|---|---|
| 2025-08-21 | UC Davis H | -0.25 | weaker half | 90 | 0 | 0 |
| 2025-08-24 | Indiana A | +0.59 | 90 | 0 | 0 | |
| 2025-08-28 | California A | -0.01 | weaker half | 90 | 0 | 0 |
| 2025-09-01 | CSU Bakersfield H | -0.62 | weaker half | 90 | 0 | 0 |
| 2025-09-04 | San Jose St. A | +0.41 | 90 | 1 | 0 | |
| 2025-09-11 | Cal Poly A | +0.26 | 90 | 0 | 0 | |
| 2025-09-15 | Sacramento St. H | -0.79 | weaker half | 83 | 0 | 0 |
| 2025-09-27 | Oregon St. H | +0.60 | 90 | 0 | 0 | |
| 2025-10-04 | San Diego A | +0.74 | 90 | 0 | 0 | |
| 2025-10-10 | Gonzaga H | -0.06 | weaker half | 90 | 0 | 0 |
| 2025-10-15 | Pacific A | -0.69 | weaker half | 90 | 0 | 0 |
| 2025-10-19 | Santa Clara A | +0.12 | 90 | 0 | 0 | |
| 2025-10-22 | Stanford A | +0.70 | 24 | 0 | 0 |
