- 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
109 lines
2.1 KiB
JSON
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
|
|
}
|
|
}
|
|
} |