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: