{
  "verifiedAt": "2026-10-19",
  "statusSource": "https://www.mlb.com/news/baseball-s-next-free-agent-classes",
  "statusLabel": "Potential free agent after 2026; not yet a signed 2027 contract",
  "trackerConsulted": "https://www.fangraphs.com/roster-resource/free-agent-tracker?sign=unsigned",
  "method": {
    "name": "Role-comparable budgeting envelope",
    "formula": "For a declared comp set, low = minimum guaranteed AAV, high = maximum guaranteed AAV, default = arithmetic midpoint. AAV = guaranteed dollars / guaranteed years.",
    "meaning": "Editable budget anchors, not a market forecast, reported demand, or confidence interval. No inflation, injury, age, WAR, qualifying-offer or scarcity adjustment is estimated.",
    "salaryModel": "Use a flat annual salary assumption for the hypothetical new contract. Real signed deals may have bonuses, deferrals or uneven salaries. Comp AAV is not claimed to equal the comp's first-year cash payroll.",
    "years": "Term is a separate editorial planning assumption. A candidate's term is not inferred by multiplying the AAV envelope. User must be able to edit it independently.",
    "warning": "Candidate selection is a bounded illustrative menu, not a complete market or evidence of Rangers interest. Recheck status before signing period."
  },
  "comparables": [
    {
      "id": "bassitt-2022",
      "name": "Chris Bassitt",
      "years": 3,
      "total": 63000000,
      "aav": 21000000,
      "date": "2022-12-16",
      "url": "https://www.mlb.com/bluejays/press-release/press-release-chris-bassitt-signs-with-blue-jays"
    },
    {
      "id": "taillon-2022",
      "name": "Jameson Taillon",
      "years": 4,
      "total": 68000000,
      "aav": 17000000,
      "date": "2022-12-19",
      "url": "https://www.mlb.com/amp/news/jameson-taillon-cubs-deal.html"
    },
    {
      "id": "eovaldi-2024",
      "name": "Nathan Eovaldi",
      "years": 3,
      "total": 75000000,
      "aav": 25000000,
      "date": "2024-12-12",
      "url": "https://www.mlb.com/news/nathan-eovaldi-rangers-contract"
    },
    {
      "id": "mahle-2026",
      "name": "Tyler Mahle",
      "years": 1,
      "total": 10000000,
      "aav": 10000000,
      "date": "2026-01",
      "url": "https://www.mlb.com/giants/news/tyler-mahle-giants-contract"
    },
    {
      "id": "haniger-2022",
      "name": "Mitch Haniger",
      "years": 3,
      "total": 43500000,
      "aav": 14500000,
      "date": "2022-12",
      "url": "https://www.mlb.com/press-release/giants-agree-to-three-year-contract-with-outfielder-mitch-haniger"
    },
    {
      "id": "conforto-2023",
      "name": "Michael Conforto",
      "years": 2,
      "total": 36000000,
      "aav": 18000000,
      "date": "2023-01-06",
      "url": "https://www.mlb.com/news/michael-conforto-giants-deal"
    },
    {
      "id": "bader-2026",
      "name": "Harrison Bader",
      "years": 2,
      "total": 20500000,
      "aav": 10250000,
      "date": "2026-01-30",
      "url": "https://www.mlb.com/giants/news/harrison-bader-giants-free-agent-contract"
    },
    {
      "id": "grisham-2026",
      "name": "Trent Grisham",
      "years": 1,
      "total": 22025000,
      "aav": 22025000,
      "date": "2025-11-18",
      "url": "https://www.mlb.com/news/yankees-trent-grisham-qualifying-offer-decision",
      "caveat": "Accepted qualifying offer; constrained mechanism, not an open-market multiyear signing."
    },
    {
      "id": "jansen-2024",
      "name": "Danny Jansen",
      "years": 1,
      "total": 8500000,
      "aav": 8500000,
      "date": "2024-12-12",
      "url": "https://www.mlb.com/rays/news/danny-jansen-deal-with-rays",
      "caveat": "Guarantee includes option buyout; not just first-year salary."
    },
    {
      "id": "realmuto-2026",
      "name": "J.T. Realmuto",
      "years": 3,
      "total": 45000000,
      "aav": 15000000,
      "date": "2026-01-20",
      "url": "https://www.mlb.com/news/j-t-realmuto-deal-with-phillies"
    },
    {
      "id": "kenley-2025",
      "name": "Kenley Jansen",
      "years": 1,
      "total": 10000000,
      "aav": 10000000,
      "date": "2025-02-15",
      "url": "https://www.mlb.com/angels/news/kenley-jansen-angels-contract"
    },
    {
      "id": "robertson-2024",
      "name": "David Robertson",
      "years": 1,
      "total": 11500000,
      "aav": 11500000,
      "date": "2024-01-26",
      "url": "https://www.mlb.com/amp/news/david-robertson-rangers-deal.html"
    },
    {
      "id": "chapman-2024",
      "name": "Aroldis Chapman",
      "years": 1,
      "total": 10500000,
      "aav": 10500000,
      "date": "2024-01-31",
      "url": "https://www.mlb.com/news/aroldis-chapman-pirates-deal"
    }
  ],
  "candidates": [
    {
      "name": "Zac Gallen",
      "position": "SP",
      "compIds": [
        "taillon-2022",
        "bassitt-2022",
        "eovaldi-2024"
      ],
      "low": 17000000,
      "high": 25000000,
      "defaultAnnual": 21000000,
      "defaultYears": 3,
      "yearsRange": [
        3,
        4
      ],
      "reason": "Established rotation-spending envelope; not an age/health/performance match or a claim about Gallen's asking price."
    },
    {
      "name": "Chris Bassitt",
      "position": "SP",
      "compIds": [
        "mahle-2026",
        "bassitt-2022"
      ],
      "low": 10000000,
      "high": 21000000,
      "defaultAnnual": 15500000,
      "defaultYears": 1,
      "yearsRange": [
        1,
        2
      ],
      "reason": "Shorter-term veteran rotation budget. His older contract is an upper anchor, not evidence his current value is unchanged."
    },
    {
      "name": "Taylor Ward",
      "position": "OF",
      "compIds": [
        "haniger-2022",
        "conforto-2023"
      ],
      "low": 14500000,
      "high": 18000000,
      "defaultAnnual": 16250000,
      "defaultYears": 3,
      "yearsRange": [
        2,
        3
      ],
      "reason": "Corner-outfield multiyear spending anchors. Old-market and player-quality differences remain unmodeled."
    },
    {
      "name": "Trent Grisham",
      "position": "CF",
      "compIds": [
        "bader-2026",
        "grisham-2026"
      ],
      "low": 10250000,
      "high": 22025000,
      "defaultAnnual": 16137500,
      "defaultYears": 2,
      "yearsRange": [
        2,
        3
      ],
      "reason": "CF budget bracket from a market signing and Grisham's accepted qualifying offer. QO mechanism is not a free-market comp; unusually wide range intentionally exposes that limitation."
    },
    {
      "name": "Ryan Jeffers",
      "position": "C",
      "compIds": [
        "jansen-2024",
        "realmuto-2026"
      ],
      "low": 8500000,
      "high": 15000000,
      "defaultAnnual": 11750000,
      "defaultYears": 3,
      "yearsRange": [
        2,
        3
      ],
      "reason": "Catcher budget bracket; age, playing time and defensive value differ. Not a claim of equivalent players."
    },
    {
      "name": "Raisel Iglesias",
      "position": "RP",
      "compIds": [
        "kenley-2025",
        "robertson-2024"
      ],
      "low": 10000000,
      "high": 11500000,
      "defaultAnnual": 10750000,
      "defaultYears": 1,
      "yearsRange": [
        1,
        2
      ],
      "reason": "Veteran late-inning relief budget. Current health and performance can put a real offer outside this narrow historical bracket."
    }
  ],
  "historicalCheck": {
    "description": "Retrospective sanity check, NOT a blinded backtest. Three known signings are excluded from their comp envelopes; each comp predates the tested signing. Hand-selected roles and tiny sample prevent any predictive-accuracy claim. Do not advertise 67% accuracy.",
    "cases": [
      {
        "name": "Michael Wacha",
        "signed": "2024-11-03",
        "actualYears": 3,
        "actualTotal": 51000000,
        "actualAav": 17000000,
        "compIds": [
          "taillon-2022",
          "bassitt-2022"
        ],
        "low": 17000000,
        "high": 21000000,
        "midpoint": 19000000,
        "actualMinusMidpoint": -2000000,
        "inside": true,
        "url": "https://www.mlb.com/amp/news/michael-wacha-royals-3-year-contract.html",
        "note": "Extension/restructured deal, not an unrestricted bidding outcome."
      },
      {
        "name": "Jurickson Profar",
        "signed": "2025-01-23",
        "actualYears": 3,
        "actualTotal": 42000000,
        "actualAav": 14000000,
        "compIds": [
          "haniger-2022",
          "conforto-2023"
        ],
        "low": 14500000,
        "high": 18000000,
        "midpoint": 16250000,
        "actualMinusMidpoint": -2250000,
        "inside": false,
        "url": "https://www.mlb.com/braves/press-release/press-release-braves-sign-jurickson-profar"
      },
      {
        "name": "Jeff Hoffman",
        "signed": "2025-01-10",
        "actualYears": 3,
        "actualTotal": 33000000,
        "actualAav": 11000000,
        "compIds": [
          "chapman-2024",
          "robertson-2024"
        ],
        "low": 10500000,
        "high": 11500000,
        "midpoint": 11000000,
        "actualMinusMidpoint": 0,
        "inside": true,
        "url": "https://www.mlb.com/bluejays/news/jeff-hoffman-contract-with-blue-jays"
      }
    ],
    "result": "Two inside, one below; absolute midpoint errors $2M, $2.25M, $0; mean absolute error $1.4167M/year. Descriptive only."
  }
}
