{
  "date": "2026-04-14",
  "generated_at": "2026-04-14T07:10:38.248230",
  "artifact_type": "strikeout_edges",
  "market_type": "pitcher_strikeouts",
  "model_version": "strikeout_edges_v1_overlay",
  "projection_model_version": "strikeout_props_v1_nb_overlay",
  "projection_date": "2026-04-14",
  "sportsbook_input_summary": {
    "input_type": "canonical_processed_sportsbook_input",
    "source_count": 1,
    "row_count": 21,
    "matched_count": 16,
    "unmatched_count": 5
  },
  "assumptions": {
    "methodology": "Sportsbook strikeout lines are matched against the saved Mithrandir strikeout props artifact. Model over, under, and push probabilities are derived from the existing matchup-adjusted strikeout distribution. Raw implied probabilities are calculated directly from American odds, and optional no-vig implied probabilities are computed by renormalizing both sides when both odds are present.",
    "distribution": {
      "name": "negative_binomial_style",
      "alpha": 0.0619,
      "whole_line_handling": "Over = P(K >= line + 1), Under = P(K <= line - 1), Push = P(K = line).",
      "half_line_handling": "Over = P(K >= ceil(line)), Under = 1 - Over, Push = 0."
    },
    "recommendation_thresholds": {
      "no_play_edge_threshold": 0.015,
      "lean_edge_threshold": 0.03,
      "strong_edge_threshold": 0.05
    }
  },
  "summary": {
    "raw_row_count": 16,
    "grouped_pitcher_count": 16,
    "sportsbook_count": 1
  },
  "edge_count": 16,
  "edges": [
    {
      "pitcher_name": "Ryan Weathers",
      "pitcher_id": 677960,
      "team_abbr": "NYY",
      "opponent_abbr": "LAA",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 5.5,
      "line_type": "half",
      "over_odds": -136,
      "under_odds": 102,
      "expected_strikeouts": 5.08,
      "baseline_projected_strikeouts": 5.1,
      "adjusted_projected_strikeouts": 5.08,
      "skill_score": 37.4,
      "opportunity_score": 38.6,
      "opponent_weakness_score": 32.7,
      "support_tier": "BALANCED_SUPPORT",
      "support_label": "Balanced Support",
      "support_note": "Support inputs are mixed but still healthy enough to trust contextually.",
      "suppression_score": 55.3,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.3952,
      "model_under_probability": 0.6048,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5763,
      "implied_under_probability_raw": 0.495,
      "implied_over_probability_novig": 0.5379,
      "implied_under_probability_novig": 0.4621,
      "edge_over": -0.1811,
      "edge_under": 0.1098,
      "recommended_side": "Under",
      "recommended_edge": 0.1098,
      "play_tier": "Strong",
      "no_play_reason": null,
      "adjustment_delta": -0.02,
      "adjustment_multiplier": 0.997,
      "aggregate_matchup_score": 43.2,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 11703.0,
      "lineup_expected_strikeouts": 5.13,
      "environment_summary": "hitter-friendly",
      "temperature_f": 73.6,
      "wind_speed_mph": 9.5,
      "wind_direction": "cross",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Robbie Ray",
      "pitcher_id": 592662,
      "team_abbr": "SF",
      "opponent_abbr": "CIN",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 6.5,
      "line_type": "half",
      "over_odds": -106,
      "under_odds": -122,
      "expected_strikeouts": 5.63,
      "baseline_projected_strikeouts": 5.31,
      "adjusted_projected_strikeouts": 5.63,
      "skill_score": 42.3,
      "opportunity_score": 57.9,
      "opponent_weakness_score": 44.9,
      "support_tier": "DUAL_SUPPORT",
      "support_label": "Dual Support",
      "support_note": "Two of the three strikeout support layers align cleanly.",
      "suppression_score": 41.5,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.3414,
      "model_under_probability": 0.6586,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5146,
      "implied_under_probability_raw": 0.5495,
      "implied_over_probability_novig": 0.4836,
      "implied_under_probability_novig": 0.5164,
      "edge_over": -0.1732,
      "edge_under": 0.1091,
      "recommended_side": "Under",
      "recommended_edge": 0.1091,
      "play_tier": "Strong",
      "no_play_reason": null,
      "adjustment_delta": 0.32,
      "adjustment_multiplier": 1.061,
      "aggregate_matchup_score": 57.2,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 17890.0,
      "lineup_expected_strikeouts": 6.14,
      "environment_summary": "hitter-friendly",
      "temperature_f": 75.2,
      "wind_speed_mph": 4.7,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Cole Ragans",
      "pitcher_id": 666142,
      "team_abbr": "KC",
      "opponent_abbr": "DET",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 6.5,
      "line_type": "half",
      "over_odds": -158,
      "under_odds": 116,
      "expected_strikeouts": 6.4,
      "baseline_projected_strikeouts": 6.06,
      "adjusted_projected_strikeouts": 6.4,
      "skill_score": 81.4,
      "opportunity_score": 12.0,
      "opponent_weakness_score": 51.8,
      "support_tier": "DUAL_SUPPORT",
      "support_label": "Dual Support",
      "support_note": "Two of the three strikeout support layers align cleanly.",
      "suppression_score": 100.0,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.4465,
      "model_under_probability": 0.5535,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.6124,
      "implied_under_probability_raw": 0.463,
      "implied_over_probability_novig": 0.5695,
      "implied_under_probability_novig": 0.4305,
      "edge_over": -0.1659,
      "edge_under": 0.0905,
      "recommended_side": "Under",
      "recommended_edge": 0.0905,
      "play_tier": "Strong",
      "no_play_reason": null,
      "adjustment_delta": 0.34,
      "adjustment_multiplier": 1.056,
      "aggregate_matchup_score": 77.5,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 21380.0,
      "lineup_expected_strikeouts": 6.64,
      "environment_summary": "pitcher-friendly",
      "temperature_f": 66.7,
      "wind_speed_mph": 9.2,
      "wind_direction": "in",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Merrill Kelly",
      "pitcher_id": 518876,
      "team_abbr": "AZ",
      "opponent_abbr": "BAL",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 4.5,
      "line_type": "half",
      "over_odds": -174,
      "under_odds": 132,
      "expected_strikeouts": 4.77,
      "baseline_projected_strikeouts": 4.32,
      "adjusted_projected_strikeouts": 4.77,
      "skill_score": 13.8,
      "opportunity_score": 47.5,
      "opponent_weakness_score": 40.9,
      "support_tier": "STRONG_OPPONENT",
      "support_label": "Strong Opponent",
      "support_note": "Opponent strikeout pressure is the clearest support input.",
      "suppression_score": 53.8,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.5001,
      "model_under_probability": 0.4999,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.635,
      "implied_under_probability_raw": 0.431,
      "implied_over_probability_novig": 0.5957,
      "implied_under_probability_novig": 0.4043,
      "edge_over": -0.1349,
      "edge_under": 0.0689,
      "recommended_side": "Under",
      "recommended_edge": 0.0689,
      "play_tier": "Strong",
      "no_play_reason": null,
      "adjustment_delta": 0.45,
      "adjustment_multiplier": 1.104,
      "aggregate_matchup_score": 46.4,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 27142.0,
      "lineup_expected_strikeouts": 5.64,
      "environment_summary": "neutral",
      "temperature_f": 72.7,
      "wind_speed_mph": 1.4,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Mitch Keller",
      "pitcher_id": 656605,
      "team_abbr": "PIT",
      "opponent_abbr": "WSH",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 4.5,
      "line_type": "half",
      "over_odds": 132,
      "under_odds": -178,
      "expected_strikeouts": 4.73,
      "baseline_projected_strikeouts": 4.68,
      "adjusted_projected_strikeouts": 4.73,
      "skill_score": 20.6,
      "opportunity_score": 41.2,
      "opponent_weakness_score": 35.5,
      "support_tier": "WEAK_SUPPORT",
      "support_label": "Weak Support",
      "support_note": "The strikeout support stack is lighter across skill, workload, and opponent context.",
      "suppression_score": 65.8,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.4937,
      "model_under_probability": 0.5063,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.431,
      "implied_under_probability_raw": 0.6403,
      "implied_over_probability_novig": 0.4023,
      "implied_under_probability_novig": 0.5977,
      "edge_over": 0.0627,
      "edge_under": -0.134,
      "recommended_side": "Over",
      "recommended_edge": 0.0627,
      "play_tier": "Strong",
      "no_play_reason": null,
      "adjustment_delta": 0.05,
      "adjustment_multiplier": 1.01,
      "aggregate_matchup_score": 46.7,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 35103.0,
      "lineup_expected_strikeouts": 4.85,
      "environment_summary": "neutral",
      "temperature_f": 69.3,
      "wind_speed_mph": 3.7,
      "wind_direction": "cross",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Jacob Misiorowski",
      "pitcher_id": 694819,
      "team_abbr": "MIL",
      "opponent_abbr": "TOR",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 6.5,
      "line_type": "half",
      "over_odds": -125,
      "under_odds": -106,
      "expected_strikeouts": 6.26,
      "baseline_projected_strikeouts": 6.66,
      "adjusted_projected_strikeouts": 6.26,
      "skill_score": 72.6,
      "opportunity_score": 48.7,
      "opponent_weakness_score": 41.0,
      "support_tier": "DUAL_SUPPORT",
      "support_label": "Dual Support",
      "support_note": "Two of the three strikeout support layers align cleanly.",
      "suppression_score": 56.2,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.4277,
      "model_under_probability": 0.5723,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5556,
      "implied_under_probability_raw": 0.5146,
      "implied_over_probability_novig": 0.5192,
      "implied_under_probability_novig": 0.4808,
      "edge_over": -0.1279,
      "edge_under": 0.0577,
      "recommended_side": "Under",
      "recommended_edge": 0.0577,
      "play_tier": "Strong",
      "no_play_reason": null,
      "adjustment_delta": -0.4,
      "adjustment_multiplier": 0.94,
      "aggregate_matchup_score": 68.6,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 5530.0,
      "lineup_expected_strikeouts": 5.26,
      "environment_summary": "neutral",
      "temperature_f": 53.4,
      "wind_speed_mph": 3.4,
      "wind_direction": "in",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Miles Mikolas",
      "pitcher_id": 571945,
      "team_abbr": "WSH",
      "opponent_abbr": "PIT",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 3.5,
      "line_type": "half",
      "over_odds": -114,
      "under_odds": -114,
      "expected_strikeouts": 3.39,
      "baseline_projected_strikeouts": 3.24,
      "adjusted_projected_strikeouts": 3.39,
      "skill_score": 16.3,
      "opportunity_score": 32.2,
      "opponent_weakness_score": 35.7,
      "support_tier": "WEAK_SUPPORT",
      "support_label": "Weak Support",
      "support_note": "The strikeout support stack is lighter across skill, workload, and opponent context.",
      "suppression_score": 70.9,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.4311,
      "model_under_probability": 0.5689,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5327,
      "implied_under_probability_raw": 0.5327,
      "implied_over_probability_novig": 0.5,
      "implied_under_probability_novig": 0.5,
      "edge_over": -0.1016,
      "edge_under": 0.0362,
      "recommended_side": "Under",
      "recommended_edge": 0.0362,
      "play_tier": "Play",
      "no_play_reason": null,
      "adjustment_delta": 0.15,
      "adjustment_multiplier": 1.048,
      "aggregate_matchup_score": 24.8,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 32803.0,
      "lineup_expected_strikeouts": 3.88,
      "environment_summary": "neutral",
      "temperature_f": 69.3,
      "wind_speed_mph": 3.7,
      "wind_direction": "cross",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Kevin Gausman",
      "pitcher_id": 592332,
      "team_abbr": "TOR",
      "opponent_abbr": "MIL",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 5.5,
      "line_type": "half",
      "over_odds": -146,
      "under_odds": 110,
      "expected_strikeouts": 5.73,
      "baseline_projected_strikeouts": 5.85,
      "adjusted_projected_strikeouts": 5.73,
      "skill_score": 84.0,
      "opportunity_score": 47.8,
      "opponent_weakness_score": 35.2,
      "support_tier": "STRONG_SKILL",
      "support_label": "Strong Skill",
      "support_note": "Underlying strikeout skill is the clearest support input.",
      "suppression_score": 55.4,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.4915,
      "model_under_probability": 0.5085,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5935,
      "implied_under_probability_raw": 0.4762,
      "implied_over_probability_novig": 0.5548,
      "implied_under_probability_novig": 0.4452,
      "edge_over": -0.102,
      "edge_under": 0.0323,
      "recommended_side": "Under",
      "recommended_edge": 0.0323,
      "play_tier": "Play",
      "no_play_reason": null,
      "adjustment_delta": -0.12,
      "adjustment_multiplier": 0.979,
      "aggregate_matchup_score": 55.2,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 35829.0,
      "lineup_expected_strikeouts": 5.43,
      "environment_summary": "neutral",
      "temperature_f": 53.4,
      "wind_speed_mph": 3.4,
      "wind_direction": "in",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Michael McGreevy",
      "pitcher_id": 700241,
      "team_abbr": "STL",
      "opponent_abbr": "CLE",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 3.5,
      "line_type": "half",
      "over_odds": 124,
      "under_odds": -166,
      "expected_strikeouts": 3.5,
      "baseline_projected_strikeouts": 3.54,
      "adjusted_projected_strikeouts": 3.5,
      "skill_score": 2.1,
      "opportunity_score": 42.3,
      "opponent_weakness_score": 29.9,
      "support_tier": "WEAK_SUPPORT",
      "support_label": "Weak Support",
      "support_note": "The strikeout support stack is lighter across skill, workload, and opponent context.",
      "suppression_score": 58.2,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.4526,
      "model_under_probability": 0.5474,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.4464,
      "implied_under_probability_raw": 0.6241,
      "implied_over_probability_novig": 0.417,
      "implied_under_probability_novig": 0.583,
      "edge_over": 0.0062,
      "edge_under": -0.0767,
      "recommended_side": "No Play",
      "recommended_edge": 0.0062,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": -0.04,
      "adjustment_multiplier": 0.998,
      "aggregate_matchup_score": 34.8,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 8017.0,
      "lineup_expected_strikeouts": 3.64,
      "environment_summary": "neutral",
      "temperature_f": 77.0,
      "wind_speed_mph": 14.2,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Sonny Gray",
      "pitcher_id": 543243,
      "team_abbr": "BOS",
      "opponent_abbr": "MIN",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 5.5,
      "line_type": "half",
      "over_odds": -136,
      "under_odds": 102,
      "expected_strikeouts": 5.79,
      "baseline_projected_strikeouts": 5.29,
      "adjusted_projected_strikeouts": 5.79,
      "skill_score": 16.3,
      "opportunity_score": 59.7,
      "opponent_weakness_score": 51.8,
      "support_tier": "DUAL_SUPPORT",
      "support_label": "Dual Support",
      "support_note": "Two of the three strikeout support layers align cleanly.",
      "suppression_score": 36.1,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.5001,
      "model_under_probability": 0.4999,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5763,
      "implied_under_probability_raw": 0.495,
      "implied_over_probability_novig": 0.5379,
      "implied_under_probability_novig": 0.4621,
      "edge_over": -0.0762,
      "edge_under": 0.0049,
      "recommended_side": "No Play",
      "recommended_edge": 0.0049,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": 0.5,
      "adjustment_multiplier": 1.094,
      "aggregate_matchup_score": 70.3,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 31976.0,
      "lineup_expected_strikeouts": 6.45,
      "environment_summary": "neutral",
      "temperature_f": 53.2,
      "wind_speed_mph": 3.9,
      "wind_direction": "cross",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Max Meyer",
      "pitcher_id": 676974,
      "team_abbr": "MIA",
      "opponent_abbr": "ATL",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 4.5,
      "line_type": "half",
      "over_odds": -120,
      "under_odds": -110,
      "expected_strikeouts": 4.6,
      "baseline_projected_strikeouts": 4.56,
      "adjusted_projected_strikeouts": 4.6,
      "skill_score": 22.6,
      "opportunity_score": 30.7,
      "opponent_weakness_score": 31.5,
      "support_tier": "WEAK_SUPPORT",
      "support_label": "Weak Support",
      "support_note": "The strikeout support stack is lighter across skill, workload, and opponent context.",
      "suppression_score": 67.4,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.4726,
      "model_under_probability": 0.5274,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5455,
      "implied_under_probability_raw": 0.5238,
      "implied_over_probability_novig": 0.5101,
      "implied_under_probability_novig": 0.4899,
      "edge_over": -0.0729,
      "edge_under": 0.0036,
      "recommended_side": "No Play",
      "recommended_edge": 0.0036,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": 0.04,
      "adjustment_multiplier": 1.008,
      "aggregate_matchup_score": 30.0,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 9067.0,
      "lineup_expected_strikeouts": 4.88,
      "environment_summary": "neutral",
      "temperature_f": 67.3,
      "wind_speed_mph": 2.1,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Framber Valdez",
      "pitcher_id": 664285,
      "team_abbr": "DET",
      "opponent_abbr": "KC",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 4.5,
      "line_type": "half",
      "over_odds": -144,
      "under_odds": 108,
      "expected_strikeouts": 5.39,
      "baseline_projected_strikeouts": 5.41,
      "adjusted_projected_strikeouts": 5.39,
      "skill_score": 17.0,
      "opportunity_score": 63.4,
      "opponent_weakness_score": 34.5,
      "support_tier": "STRONG_OPPORTUNITY",
      "support_label": "Strong Opportunity",
      "support_note": "Workload and batters-faced path are doing most of the support work.",
      "suppression_score": 30.7,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.5934,
      "model_under_probability": 0.4066,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5902,
      "implied_under_probability_raw": 0.4808,
      "implied_over_probability_novig": 0.5511,
      "implied_under_probability_novig": 0.4489,
      "edge_over": 0.0032,
      "edge_under": -0.0742,
      "recommended_side": "No Play",
      "recommended_edge": 0.0032,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": -0.02,
      "adjustment_multiplier": 0.997,
      "aggregate_matchup_score": 48.1,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 33697.0,
      "lineup_expected_strikeouts": 5.38,
      "environment_summary": "pitcher-friendly",
      "temperature_f": 66.7,
      "wind_speed_mph": 9.2,
      "wind_direction": "in",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Joey Cantillo",
      "pitcher_id": 676282,
      "team_abbr": "CLE",
      "opponent_abbr": "STL",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 5.5,
      "line_type": "half",
      "over_odds": 106,
      "under_odds": -140,
      "expected_strikeouts": 5.27,
      "baseline_projected_strikeouts": 5.35,
      "adjusted_projected_strikeouts": 5.27,
      "skill_score": 59.8,
      "opportunity_score": 36.6,
      "opponent_weakness_score": 37.5,
      "support_tier": "STRONG_SKILL",
      "support_label": "Strong Skill",
      "support_note": "Underlying strikeout skill is the clearest support input.",
      "suppression_score": 76.0,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.424,
      "model_under_probability": 0.576,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.4854,
      "implied_under_probability_raw": 0.5833,
      "implied_over_probability_novig": 0.4542,
      "implied_under_probability_novig": 0.5458,
      "edge_over": -0.0614,
      "edge_under": -0.0073,
      "recommended_side": "No Play",
      "recommended_edge": -0.0073,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": -0.08,
      "adjustment_multiplier": 0.995,
      "aggregate_matchup_score": 56.6,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 8372.0,
      "lineup_expected_strikeouts": 5.2,
      "environment_summary": "neutral",
      "temperature_f": 77.0,
      "wind_speed_mph": 14.2,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Brady Singer",
      "pitcher_id": 663903,
      "team_abbr": "CIN",
      "opponent_abbr": "SF",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 4.5,
      "line_type": "half",
      "over_odds": -146,
      "under_odds": 110,
      "expected_strikeouts": 4.97,
      "baseline_projected_strikeouts": 4.86,
      "adjusted_projected_strikeouts": 4.97,
      "skill_score": 22.8,
      "opportunity_score": 25.1,
      "opponent_weakness_score": 38.8,
      "support_tier": "WEAK_SUPPORT",
      "support_label": "Weak Support",
      "support_note": "The strikeout support stack is lighter across skill, workload, and opponent context.",
      "suppression_score": 83.6,
      "suppression_tier": "HEAVY_SUPPRESSION",
      "suppression_label": "Heavy Suppression",
      "suppression_note": "Leash or workload context materially weakens the strikeout conversion path.",
      "interaction_tier": "SUPPRESSED_ALIGNMENT",
      "interaction_label": "Suppressed Alignment",
      "interaction_note": "Runway drag or weak alignment materially softens the strikeout path.",
      "trust_modifier": "SUPPRESSED",
      "trust_label": "Suppressed",
      "trust_note": "Leash or alignment drag is materially weakening the strikeout trust case.",
      "model_over_probability": 0.5315,
      "model_under_probability": 0.4685,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5935,
      "implied_under_probability_raw": 0.4762,
      "implied_over_probability_novig": 0.5548,
      "implied_under_probability_novig": 0.4452,
      "edge_over": -0.062,
      "edge_under": -0.0077,
      "recommended_side": "No Play",
      "recommended_edge": -0.0077,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": 0.11,
      "adjustment_multiplier": 1.022,
      "aggregate_matchup_score": 52.2,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 33950.0,
      "lineup_expected_strikeouts": 5.14,
      "environment_summary": "hitter-friendly",
      "temperature_f": 75.2,
      "wind_speed_mph": 4.7,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Aaron Nola",
      "pitcher_id": 605400,
      "team_abbr": "PHI",
      "opponent_abbr": "CHC",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 5.5,
      "line_type": "half",
      "over_odds": -118,
      "under_odds": -112,
      "expected_strikeouts": 5.74,
      "baseline_projected_strikeouts": 5.83,
      "adjusted_projected_strikeouts": 5.74,
      "skill_score": 47.8,
      "opportunity_score": 58.9,
      "opponent_weakness_score": 34.1,
      "support_tier": "DUAL_SUPPORT",
      "support_label": "Dual Support",
      "support_note": "Two of the three strikeout support layers align cleanly.",
      "suppression_score": 35.6,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.493,
      "model_under_probability": 0.507,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5413,
      "implied_under_probability_raw": 0.5283,
      "implied_over_probability_novig": 0.5061,
      "implied_under_probability_novig": 0.4939,
      "edge_over": -0.0483,
      "edge_under": -0.0213,
      "recommended_side": "No Play",
      "recommended_edge": -0.0213,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": -0.09,
      "adjustment_multiplier": 0.984,
      "aggregate_matchup_score": 50.6,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 29857.0,
      "lineup_expected_strikeouts": 5.56,
      "environment_summary": "hitter-friendly",
      "temperature_f": 72.9,
      "wind_speed_mph": 8.1,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    },
    {
      "pitcher_name": "Trevor Rogers",
      "pitcher_id": 669432,
      "team_abbr": "BAL",
      "opponent_abbr": "AZ",
      "sportsbook": "FanDuel",
      "source_provider": "fanduel",
      "timestamp": null,
      "line": 4.5,
      "line_type": "half",
      "over_odds": -108,
      "under_odds": -122,
      "expected_strikeouts": 4.6,
      "baseline_projected_strikeouts": 4.84,
      "adjusted_projected_strikeouts": 4.6,
      "skill_score": 36.5,
      "opportunity_score": 59.6,
      "opponent_weakness_score": 25.7,
      "support_tier": "STRONG_OPPORTUNITY",
      "support_label": "Strong Opportunity",
      "support_note": "Workload and batters-faced path are doing most of the support work.",
      "suppression_score": 49.5,
      "suppression_tier": "MILD_SUPPRESSION",
      "suppression_label": "Mild Suppression",
      "suppression_note": "Some workload drag is present, but the strikeout path remains mostly intact.",
      "interaction_tier": "NEUTRAL_ALIGNMENT",
      "interaction_label": "Neutral Alignment",
      "interaction_note": "The signal stack is mixed and better used as context than conviction.",
      "trust_modifier": "NEUTRAL",
      "trust_label": "Neutral",
      "trust_note": "The strikeout trust picture is mixed and better used as context than conviction.",
      "model_over_probability": 0.4726,
      "model_under_probability": 0.5274,
      "model_push_probability": 0.0,
      "implied_over_probability_raw": 0.5192,
      "implied_under_probability_raw": 0.5495,
      "implied_over_probability_novig": 0.4858,
      "implied_under_probability_novig": 0.5142,
      "edge_over": -0.0466,
      "edge_under": -0.0221,
      "recommended_side": "No Play",
      "recommended_edge": -0.0221,
      "play_tier": "No Play",
      "no_play_reason": "Best edge did not clear the minimum play threshold.",
      "adjustment_delta": -0.24,
      "adjustment_multiplier": 0.951,
      "aggregate_matchup_score": 33.0,
      "lineup_confidence": "projected",
      "pitch_mix_sample_size": 18097.0,
      "lineup_expected_strikeouts": 4.34,
      "environment_summary": "neutral",
      "temperature_f": 72.7,
      "wind_speed_mph": 1.4,
      "wind_direction": "out",
      "starter_confidence": "probable",
      "projection_model_version": "negative_binomial_style",
      "source_file": "canonical_all_providers.json"
    }
  ],
  "unmatched_inputs": [
    {
      "pitcher_name": "Mick Abel",
      "team_abbr": null,
      "opponent_abbr": null,
      "sportsbook": "FanDuel",
      "line": 4.5,
      "source_file": "canonical_all_providers.json",
      "reason": "No matching Mithrandir strikeout props row was found."
    },
    {
      "pitcher_name": "Noah Schultz",
      "team_abbr": null,
      "opponent_abbr": null,
      "sportsbook": "FanDuel",
      "line": 4.5,
      "source_file": "canonical_all_providers.json",
      "reason": "No matching Mithrandir strikeout props row was found."
    },
    {
      "pitcher_name": "Reid Detmers",
      "team_abbr": null,
      "opponent_abbr": null,
      "sportsbook": "FanDuel",
      "line": 6.5,
      "source_file": "canonical_all_providers.json",
      "reason": "No matching Mithrandir strikeout props row was found."
    },
    {
      "pitcher_name": "Reynaldo Lopez",
      "team_abbr": null,
      "opponent_abbr": null,
      "sportsbook": "FanDuel",
      "line": 4.5,
      "source_file": "canonical_all_providers.json",
      "reason": "No matching Mithrandir strikeout props row was found."
    },
    {
      "pitcher_name": "Shane McClanahan",
      "team_abbr": null,
      "opponent_abbr": null,
      "sportsbook": "FanDuel",
      "line": 5.5,
      "source_file": "canonical_all_providers.json",
      "reason": "No matching Mithrandir strikeout props row was found."
    }
  ]
}