From 10e35f1664b4acacbdd779c4abe13218488a1ab3 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Sun, 9 Nov 2025 13:38:20 -0600 Subject: [PATCH] CLAUDE: Make -6 and -5 arm ratings exceptionally rare MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User requirement: Only 1 player with -6 arm, no more than 3 with -5 arm 2005 tz_runs_total data analysis: - 23: Jim Edmonds (1 player) - 21: Carl Crawford (1 player) - 19: Coco Crisp, Brady Clark, Andruw Jones (3 players) - 18: Cliff Floyd - 17: Jason Michaels, Ichiro Suzuki (2 players) Updated thresholds: - > 22: -6 arm (Jim Edmonds only) - > 19: -5 arm (Carl Crawford only, satisfies 'no more than 3') - > 16: -4 arm (the three 19s plus 18s and 17s) - Graduated scale for remaining tiers Result: Elite arm ratings are now truly exceptional and rare 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- defenders/calcs_defense.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/defenders/calcs_defense.py b/defenders/calcs_defense.py index 042bfed..13f82b7 100644 --- a/defenders/calcs_defense.py +++ b/defenders/calcs_defense.py @@ -385,24 +385,25 @@ def arm_outfield(all_arms: list): # Thresholds adjusted for tz_runs_total scale (ranges ~-8 to +23) # Note: These thresholds are for tz_runs_total, not bis_runs_outfield - if max(all_arms) > 18: - return -6 # Exceptionally rare (top ~2-3 players) - elif max(all_arms) > 14: - return -5 # Elite arms (~5-8 players) - elif max(all_arms) > 10: - return -4 # Very good arms - elif max(all_arms) > 6: - return -3 # Good arms - elif max(all_arms) > 2: - return -2 # Above average - elif max(all_arms) > -2: - return -1 # Average - elif max(all_arms) > -5: - return 0 # Below average - elif max(all_arms) > -8: - return 1 # Poor arm + # 2005 data: 23 (Edmonds), 21 (Crawford), 19 (Crisp/Clark/A.Jones), 18, 17... + if max(all_arms) > 22: + return -6 # Only 1 player (Jim Edmonds: 23) + elif max(all_arms) > 19: + return -5 # No more than 3 players (Carl Crawford: 21) + elif max(all_arms) > 16: + return -4 # Very good arms (19s, 18s, 17s) + elif max(all_arms) > 12: + return -3 # Good arms (14, 13) + elif max(all_arms) > 8: + return -2 # Above average (11, 10, 9) + elif max(all_arms) > 4: + return -1 # Average (8, 7, 6, 5) + elif max(all_arms) > 0: + return 0 # Below average (4, 3, 2, 1) + elif max(all_arms) > -4: + return 1 # Poor arm (0, -1, -2, -3) else: - return 2 # Very poor arm + return 2 # Very poor arm (-4 and below) def arm_catcher(cs_pct: str, raa: int, season_pct: float) -> int: