PickleBALLER/docs/rating-comparison.json
Split 42d0269e56 Major refactor: Convert from Glicko-2 to pure ELO rating system
- Created new ELO module (src/elo/) with:
  - Simple rating-only system (no RD or volatility tracking)
  - Standard ELO expected score calculation
  - Per-point performance scoring
  - Effective opponent formula for doubles
  - Full test suite (21 tests, all passing)

- Updated main.rs to use ELO calculator:
  - Per-point scoring: performance = points_scored / total_points
  - Effective opponent in doubles: Opp1 + Opp2 - Teammate
  - K-factor = 32 for casual play

- Created analysis tool (src/bin/elo_analysis.rs):
  - Reads match history from database
  - Recalculates all ratings using pure ELO
  - Generates before/after comparison (JSON + Markdown)

- Updated documentation:
  - New LaTeX report (rating-system-v3-elo.tex)
  - Simplified explanations (no volatility/RD complexity)
  - Plain English examples and use cases
  - FAQ section

- All tests passing (21/21 ELO tests)
- Code compiles without errors
- Release build successful
2026-02-26 11:35:07 -05:00

109 lines
2.1 KiB
JSON

{
"metadata": {
"timestamp": "2026-02-26T11:33:29.969922-05:00",
"total_matches": 29,
"total_players": 6
},
"players": [
{
"doubles": {
"difference": 290.9,
"elo": 1500.0,
"glicko2": 1209.1
},
"id": 1,
"matches_played": 0,
"name": "Dane Sabo",
"singles": {
"difference": 129.5,
"elo": 1500.0,
"glicko2": 1370.5
}
},
{
"doubles": {
"difference": -218.2,
"elo": 1500.0,
"glicko2": 1718.2
},
"id": 2,
"matches_played": 0,
"name": "Andrew Stricklin",
"singles": {
"difference": -82.9,
"elo": 1500.0,
"glicko2": 1582.9
}
},
{
"doubles": {
"difference": 173.1,
"elo": 1500.0,
"glicko2": 1326.9
},
"id": 4,
"matches_played": 0,
"name": "Krzysztof Radziszeski ",
"singles": {
"difference": -119.3,
"elo": 1500.0,
"glicko2": 1619.3
}
},
{
"doubles": {
"difference": -161.5,
"elo": 1500.0,
"glicko2": 1661.5
},
"id": 3,
"matches_played": 0,
"name": "David Pabst",
"singles": {
"difference": 37.8,
"elo": 1500.0,
"glicko2": 1462.2
}
},
{
"doubles": {
"difference": -114.9,
"elo": 1500.0,
"glicko2": 1614.9
},
"id": 6,
"matches_played": 0,
"name": "Jacklyn Wyszynski",
"singles": {
"difference": 0.0,
"elo": 1500.0,
"glicko2": 1500.0
}
},
{
"doubles": {
"difference": -5.8,
"elo": 1500.0,
"glicko2": 1505.8
},
"id": 5,
"matches_played": 0,
"name": "Eliana Crew",
"singles": {
"difference": 34.9,
"elo": 1500.0,
"glicko2": 1465.1
}
}
],
"summary": {
"doubles": {
"avg_elo": 1500.0,
"avg_glicko2": 1506.060606060606
},
"singles": {
"avg_elo": 1500.0,
"avg_glicko2": 1500.0
}
}
}