{
 "schema": "theclaudetrader.research_packet.v1",
 "generated_at": "2026-10-31T18:13:01+00:00",
 "snapshot_date": "2026-10-31",
 "about": {
  "site": "The Claude Trader",
  "what_this_is": "Evidence-first research record built from SEC XBRL, SEC Form 4 and exchange prices. Deterministic rule scores with every input linked to its source. No recommendations. fair_value_model is a labelled model estimate from SEC filings, not a price target or recommendation (method: /fair-value).",
  "publishes": "Facts and their provenance only; no holdings, targets, estimates or recommendations.",
  "how_to_answer": [
   "State the snapshot date and each score's data_as_of.",
   "Quote scores with their status: ok = complete; partial / insufficient = a test was excluded because an input was absent or older than 550 days. Repeat each warning beside the number it affects; a 'stale' warning means the input was used but is older than 120 days (price: 7 days).",
   "Cite the source URL for any number you repeat.",
   "Say what is missing; never present holdings or targets as this site's (it has none).",
   "If asked for a shortlist or portfolio: build it from the user's horizon, risk, benchmark, exclusions and limits; cite inputs, explain inclusion and thesis risks; label weights as your synthesis, distinct from these deterministic scores; no promised outperformance or invented expected returns."
  ]
 },
 "company": {
  "ticker": "WST",
  "name": "West Pharmaceutical Services Inc",
  "legal_name": "WEST PHARMACEUTICAL SERVICES INC",
  "cik": "0000105770",
  "exchange": "NYSE",
  "industry": "Surgical & Medical Instruments & Apparatus",
  "sic": "3841",
  "fiscal_year_end": "1231",
  "is_financial": false,
  "is_utility": false
 },
 "price": {
  "value": 412.62,
  "as_of": "2026-10-30",
  "source": "Alpaca Market Data (consolidated SIP daily bar)",
  "url": "https://docs.alpaca.markets/docs/historical-stock-data-1"
 },
 "market_cap": {
  "value": 28743536674.32,
  "as_of": "2026-10-30",
  "unit": "USD",
  "meaning": "price on the price date x latest reported point-in-time shares (see inputs.share_count_as_of)",
  "warning": null,
  "unavailable_reason": null,
  "inputs": {
   "traded_price": {
    "value": 412.62,
    "as_of": "2026-10-30",
    "unit": "USD per traded unit (share or ADS)",
    "source": "Alpaca Market Data (consolidated SIP daily bar)",
    "url": "https://docs.alpaca.markets/docs/historical-stock-data-1"
   },
   "sec_shares_outstanding": {
    "value": 69661036.0,
    "unit": "underlying shares",
    "concept": "SEC cover page 10-Q 0000105770-26-000121 (69,661,036 shares (single class on cover)); filing document https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/wst-20260930.htm",
    "period_end": "2026-10-21",
    "accession": "0000105770-26-000121",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/R1.htm"
   },
   "depositary_ratio": {
    "value": 1.0,
    "unit": "underlying shares per traded unit",
    "status": "domestic",
    "source": "10-K filer; SEC shares are the traded units",
    "evidence_url": null,
    "evidence_form": null,
    "evidence_filed": null,
    "body_snippet": null
   },
   "formula": "market_value = traded_price (price date) / depositary_ratio x latest point-in-time SEC shares outstanding (share-count date shown; from the filing cover page, summed across share classes only where the issuer filing verifies the classes are economically equivalent (rule + evidence URL in the source text), else withheld; priced at the primary listed class, so where other classes trade at a different price the value is an approximation; restated only for issuer-verified splits after the count date); weighted-average share counts are never used",
   "split_adjustment": null,
   "share_count_as_of": "2026-10-21",
   "share_count_age_days_at_price_date": 9,
   "warning": null,
   "computed": "412.62 (price 2026-10-30) / 1 x 69,661,036 (shares at 2026-10-21) = 28,743,536,674"
  }
 },
 "scores": {
  "graham": {
   "score": 75.0,
   "status": "ok",
   "complete": true,
   "passes_all": false,
   "summary": "Graham Defensive: 75 of 100 (ok). Adequate size: 3.07 revenue $B \u2192 5.0/5; Current ratio: 2.82 \u2192 15.0/15; Long-term debt vs working capital: 0.17 LTD / WC \u2192 15.0/15; Positive earnings each of 10 years: 10 of 10 \u2192 15.0/15; Dividends every year for 20 years: 20 of 20 \u2192 15.0/15; EPS growth, 3-yr avg now vs 10 yrs ago: 1.65 -> 7.12 (+331%) \u2192 10.0/10; P/E on 3-year average EPS: 58.0 \u2192 0.0/15; P/B <= 1.5, or P/E x P/B <= 22.5: P/B 9.61, product 557.1 \u2192 0.0/10",
   "data_as_of": "2025-12-31",
   "history": [
    "2013",
    "2025"
   ],
   "price_as_of": "2026-10-30",
   "coverage": null,
   "verification": {
    "verified": 14,
    "mismatch": 0,
    "unverified": 21,
    "not_cross_checked": 2
   },
   "warnings": [
    "stale (warning, input still used): current-period inputs older than 120 days: Revenue, current_assets, current_liabilities, lt_debt, equity; inputs older than 550 days are excluded and make the test insufficient"
   ],
   "components": [
    {
     "test": "1",
     "name": "Adequate size",
     "value": 3.07,
     "unit": "revenue $B",
     "threshold": ">= 1",
     "points": 5.0,
     "max": 5
    },
    {
     "test": "2a",
     "name": "Current ratio",
     "value": 2.82,
     "threshold": ">= 2.0",
     "points": 15.0,
     "max": 15
    },
    {
     "test": "2b",
     "name": "Long-term debt vs working capital",
     "value": 0.17,
     "unit": "LTD / WC",
     "threshold": "<= 1.0",
     "points": 15.0,
     "max": 15,
     "note": null
    },
    {
     "test": "3",
     "name": "Positive earnings each of 10 years",
     "value": "10 of 10",
     "threshold": "10 of 10",
     "points": 15.0,
     "max": 15
    },
    {
     "test": "4",
     "name": "Dividends every year for 20 years",
     "value": "20 of 20",
     "threshold": "20 of 20",
     "points": 15.0,
     "max": 15,
     "missing_years": [],
     "cross_check": {
      "verified_years": [
       2013,
       2014,
       2015,
       2016,
       2017,
       2018,
       2019,
       2020,
       2021,
       2022,
       2023,
       2024,
       2025
      ],
      "mismatch_years": [],
      "unverified_years": [
       2006,
       2007,
       2008,
       2009,
       2010,
       2011,
       2012
      ]
     },
     "note": null
    },
    {
     "test": "5",
     "name": "EPS growth, 3-yr avg now vs 10 yrs ago",
     "value": "1.65 -> 7.12 (+331%)",
     "threshold": ">= +33%",
     "points": 10.0,
     "max": 10
    },
    {
     "test": "6",
     "name": "P/E on 3-year average EPS",
     "value": 58.0,
     "threshold": "<= 15",
     "points": 0.0,
     "max": 15,
     "note": null
    },
    {
     "test": "7",
     "name": "P/B <= 1.5, or P/E x P/B <= 22.5",
     "value": "P/B 9.61, product 557.1",
     "threshold": "<= 1.5 or <= 22.5",
     "points": 0.0,
     "max": 10
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/graham"
  },
  "magic_formula": {
   "score": 13.5,
   "status": "ok",
   "complete": true,
   "passes_all": null,
   "summary": "Magic Formula: 14 of 100 (ok). Earnings yield (EBIT/EV): 2.39 % (rank 168); Return on capital (EBIT/(NWC+PPE)): 23.85 % (rank 149); Combined rank: 317 of 200",
   "data_as_of": "2026-03-31",
   "history": [
    null,
    null
   ],
   "price_as_of": "2026-10-30",
   "coverage": null,
   "verification": null,
   "warnings": [
    "stale (warning, input still used): current-period inputs older than 120 days: operating_income_q, operating_income_q, current_assets, current_liabilities, cash, ppe_net, debt_incl_current; inputs older than 550 days are excluded and make the test insufficient"
   ],
   "components": [
    {
     "name": "Earnings yield (EBIT/EV)",
     "value": 2.39,
     "unit": "%",
     "rank": 168,
     "note": "EBIT trailing twelve months; EV = market cap + debt (202,900,000) - cash"
    },
    {
     "name": "Return on capital (EBIT/(NWC+PPE))",
     "value": 23.85,
     "unit": "%",
     "rank": 149,
     "note": "net working capital 1,167,000,000 used as reported"
    },
    {
     "name": "Combined rank",
     "value": 317,
     "of": 200
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/magic_formula"
  },
  "momentum": {
   "score": 85.5,
   "status": "ok",
   "complete": true,
   "passes_all": null,
   "summary": "Momentum: 86 of 100 (ok). 12-1 month return: 33.5 % \u2192 40.1/50; 6 month return: 38.7 % \u2192 18.4/20; Price / 52-week high: 0.99 \u2192 14.9/15; Volatility penalty (60d annualised): 20.5 % \u2192 12.1/15",
   "data_as_of": "2026-10-30",
   "history": [
    null,
    null
   ],
   "price_as_of": "2026-10-30",
   "coverage": null,
   "verification": null,
   "warnings": [],
   "components": [
    {
     "name": "12-1 month return",
     "value": 33.5,
     "unit": "%",
     "percentile": 80.3,
     "points": 40.1,
     "max": 50
    },
    {
     "name": "6 month return",
     "value": 38.7,
     "unit": "%",
     "percentile": 92.2,
     "points": 18.4,
     "max": 20
    },
    {
     "name": "Price / 52-week high",
     "value": 0.99,
     "points": 14.9,
     "max": 15
    },
    {
     "name": "Volatility penalty (60d annualised)",
     "value": 20.5,
     "unit": "%",
     "points": 12.1,
     "max": 15
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/momentum"
  },
  "insider": {
   "score": 0.0,
   "status": "ok",
   "complete": true,
   "passes_all": null,
   "summary": "Insider: 0 of 100 (ok). Open-market buy value / market cap (percentile among buyers): 0.0 bp \u2192 0.0/35; Distinct buyers: 0 \u2192 0.0/25; Buyer seniority: 0.0 \u2192 0.0/20; Recency (half-life 30d): 0.0 \u2192 0.0/10; Sales penalty (excludes 10b5-1 plan sales): 0.96 bp \u2192 -7.3/0",
   "data_as_of": "2026-10-30",
   "history": [
    null,
    null
   ],
   "price_as_of": null,
   "coverage": {
    "window_start": "2026-08-02",
    "through": "2026-10-30",
    "missing_days": 1,
    "note": "Form 4 data loaded through 2026-10-30"
   },
   "verification": null,
   "warnings": [],
   "components": [
    {
     "name": "Open-market buy value / market cap (percentile among buyers)",
     "value": 0.0,
     "unit": "bp",
     "points": 0.0,
     "max": 35
    },
    {
     "name": "Distinct buyers",
     "value": 0,
     "points": 0.0,
     "max": 25
    },
    {
     "name": "Buyer seniority",
     "value": 0.0,
     "points": 0.0,
     "max": 20
    },
    {
     "name": "Recency (half-life 30d)",
     "value": 0.0,
     "points": 0.0,
     "max": 10
    },
    {
     "name": "Sales penalty (excludes 10b5-1 plan sales)",
     "value": 0.96,
     "unit": "bp",
     "points": -7.3,
     "max": 0
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/insider"
  },
  "buffett": {
   "score": 78.7,
   "status": "ok",
   "complete": true,
   "passes_all": false,
   "summary": "Buffett Quality: 79 of 100 (ok). Average return on equity (net income / year-end equity): 19.2% over 8 yrs \u2192 25.0/25; Profitable every year: 10 of 10 \u2192 15.0/15; Net income growth, 3-yr average now vs start of window: +17.8% a year \u2192 10.0/10; Borrowings / 3-yr average earnings (years to repay): 0.4 years \u2192 15.0/15; Operating margin, 5-yr average: 22.7% \u2192 10.0/10; Free cash flow / net income, 5-yr (operating cash flow minus capex): 0.68 \u2192 3.7/10; Owner-earnings yield (3-yr avg free cash flow / market cap): 1.3% \u2192 0.0/15",
   "data_as_of": "2026-06-30",
   "history": [
    "2016",
    "2025"
   ],
   "price_as_of": "2026-10-30",
   "coverage": null,
   "verification": {
    "verified": 0,
    "mismatch": 0,
    "unverified": 47,
    "not_cross_checked": 2
   },
   "warnings": [
    "stale (warning, input still used): current-period inputs older than 120 days: debt_incl_current; inputs older than 550 days are excluded and make the test insufficient"
   ],
   "components": [
    {
     "test": "1",
     "name": "Average return on equity (net income / year-end equity)",
     "value": "19.2% over 8 yrs",
     "threshold": ">= 15%",
     "points": 25.0,
     "max": 25
    },
    {
     "test": "2",
     "name": "Profitable every year",
     "value": "10 of 10",
     "threshold": "all years",
     "points": 15.0,
     "max": 15
    },
    {
     "test": "3",
     "name": "Net income growth, 3-yr average now vs start of window",
     "value": "+17.8% a year",
     "threshold": ">= +10%",
     "points": 10.0,
     "max": 10
    },
    {
     "test": "4",
     "name": "Borrowings / 3-yr average earnings (years to repay)",
     "value": 0.4,
     "threshold": "<= 4",
     "points": 15.0,
     "max": 15,
     "unit": "years",
     "note": "LongTermDebt (incl. current maturities)"
    },
    {
     "test": "5",
     "name": "Operating margin, 5-yr average",
     "value": "22.7%",
     "threshold": ">= 20%",
     "points": 10.0,
     "max": 10
    },
    {
     "test": "6",
     "name": "Free cash flow / net income, 5-yr (operating cash flow minus capex)",
     "value": "0.68",
     "threshold": ">= 1.0",
     "points": 3.7,
     "max": 10
    },
    {
     "test": "7",
     "name": "Owner-earnings yield (3-yr avg free cash flow / market cap)",
     "value": "1.3%",
     "threshold": ">= 7%",
     "points": 0.0,
     "max": 15
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/buffett"
  },
  "lynch": {
   "score": 45.1,
   "status": "ok",
   "complete": true,
   "passes_all": false,
   "summary": "Lynch GARP: 45 of 100 (ok). PEG: P/E divided by 5-yr EPS growth (in % points): 7.37 \u2192 0.0/30; EPS growth, 5-yr compound rate: +8.2% a year \u2192 13.7/20; P/E on latest annual EPS: 60.8 \u2192 0.0/10; Borrowings / equity: 0.07 \u2192 15.0/15; Years of the last 5 in which EPS rose: 3 of 5 \u2192 9.0/15; Net cash (cash minus borrowings) / market cap: +0.8% \u2192 7.4/10",
   "data_as_of": "2026-06-30",
   "history": [
    "2020",
    "2025"
   ],
   "price_as_of": "2026-10-30",
   "coverage": null,
   "verification": {
    "verified": 0,
    "mismatch": 0,
    "unverified": 5,
    "not_cross_checked": 1
   },
   "warnings": [
    "stale (warning, input still used): current-period inputs older than 120 days: debt_incl_current, equity, cash; inputs older than 550 days are excluded and make the test insufficient"
   ],
   "components": [
    {
     "test": "1",
     "name": "PEG: P/E divided by 5-yr EPS growth (in % points)",
     "value": 7.37,
     "threshold": "<= 1.0",
     "points": 0.0,
     "max": 30
    },
    {
     "test": "2",
     "name": "EPS growth, 5-yr compound rate",
     "value": "+8.2% a year",
     "threshold": "12% to 35% a year",
     "points": 13.7,
     "max": 20
    },
    {
     "test": "3",
     "name": "P/E on latest annual EPS",
     "value": 60.8,
     "threshold": "<= 25",
     "points": 0.0,
     "max": 10
    },
    {
     "test": "4",
     "name": "Borrowings / equity",
     "value": 0.07,
     "threshold": "<= 0.5",
     "points": 15.0,
     "max": 15,
     "note": "LongTermDebt (incl. current maturities)"
    },
    {
     "test": "5",
     "name": "Years of the last 5 in which EPS rose",
     "value": "3 of 5",
     "threshold": "5 of 5",
     "points": 9.0,
     "max": 15
    },
    {
     "test": "6",
     "name": "Net cash (cash minus borrowings) / market cap",
     "value": "+0.8%",
     "threshold": ">= +10%",
     "points": 7.4,
     "max": 10
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/lynch"
  },
  "graham_enterprising": {
   "score": 65.0,
   "status": "ok",
   "complete": true,
   "passes_all": false,
   "summary": "Graham Enterprising: 65 of 100 (ok). Current ratio: 2.82 \u2192 15.0/15; Borrowings vs working capital: 0.17 x \u2192 15.0/15; No earnings deficit in the last 5 years: 5 of 5 profitable \u2192 15.0/15; Pays a current dividend: yes \u2192 10.0/10; EPS higher than five years earlier: 4.57 -> 6.79 \u2192 10.0/10; Price / book value per share: 9.61 \u2192 0.0/20; Price / net current asset value per share (current assets minus all liabilities): 39.85 \u2192 0.0/15",
   "data_as_of": "2026-06-30",
   "history": [
    "2020",
    "2025"
   ],
   "price_as_of": "2026-10-30",
   "coverage": null,
   "verification": {
    "verified": 0,
    "mismatch": 0,
    "unverified": 12,
    "not_cross_checked": 3
   },
   "warnings": [
    "stale (warning, input still used): current-period inputs older than 120 days: current_assets, current_liabilities, debt_incl_current, equity, liabilities; inputs older than 550 days are excluded and make the test insufficient"
   ],
   "components": [
    {
     "test": "1",
     "name": "Current ratio",
     "value": 2.82,
     "threshold": ">= 1.5",
     "points": 15.0,
     "max": 15
    },
    {
     "test": "2",
     "name": "Borrowings vs working capital",
     "value": 0.17,
     "threshold": "<= 1.1x",
     "points": 15.0,
     "max": 15,
     "unit": "x",
     "note": "LongTermDebt (incl. current maturities)"
    },
    {
     "test": "3",
     "name": "No earnings deficit in the last 5 years",
     "value": "5 of 5 profitable",
     "threshold": "5 of 5",
     "points": 15.0,
     "max": 15
    },
    {
     "test": "4",
     "name": "Pays a current dividend",
     "value": "yes",
     "threshold": "yes",
     "points": 10.0,
     "max": 10
    },
    {
     "test": "5",
     "name": "EPS higher than five years earlier",
     "value": "4.57 -> 6.79",
     "threshold": "higher",
     "points": 10.0,
     "max": 10
    },
    {
     "test": "6",
     "name": "Price / book value per share",
     "value": 9.61,
     "threshold": "<= 1.2",
     "points": 0.0,
     "max": 20,
     "note": "book value used because intangibles are not separated in the dataset (Graham uses net tangible assets)"
    },
    {
     "test": "7",
     "name": "Price / net current asset value per share (current assets minus all liabilities)",
     "value": 39.85,
     "threshold": "<= 0.67",
     "points": 0.0,
     "max": 15
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/graham_enterprising"
  },
  "piotroski": {
   "score": 66.7,
   "status": "ok",
   "complete": true,
   "passes_all": false,
   "summary": "Piotroski F-Score: 67 of 100 (ok). Return on assets is positive: 11.6% \u2192 11.11111111111111/11.11111111111111; Operating cash flow is positive: 755M \u2192 11.11111111111111/11.11111111111111; Return on assets improved on the prior year: 13.5% -> 11.6% \u2192 0.0/11.11111111111111; Operating cash flow exceeds net income (accruals): 755M vs 494M \u2192 11.11111111111111/11.11111111111111; Long-term debt / assets fell: 5.6% -> 4.7% \u2192 11.11111111111111/11.11111111111111; Current ratio improved: 2.79 -> 3.02 \u2192 11.11111111111111/11.11111111111111; No new shares issued (share count did not rise): 72M -> 70M \u2192 11.11111111111111/11.11111111111111; Operating margin improved (stand-in for gross margin, which the dataset does not carry): 19.7% -> 19.0% \u2192 0.0/11.11111111111111; Asset turnover (revenue / assets) improved: 0.79 -> 0.72 \u2192 0.0/11.11111111111111",
   "data_as_of": null,
   "history": [
    "2024",
    "2026"
   ],
   "price_as_of": null,
   "coverage": null,
   "verification": {
    "verified": 0,
    "mismatch": 0,
    "unverified": 27,
    "not_cross_checked": 0
   },
   "warnings": [],
   "components": [
    {
     "test": "1",
     "name": "Return on assets is positive",
     "value": "11.6%",
     "threshold": "pass = 1",
     "points": 11.11111111111111,
     "max": 11.11111111111111
    },
    {
     "test": "2",
     "name": "Operating cash flow is positive",
     "value": "755M",
     "threshold": "pass = 1",
     "points": 11.11111111111111,
     "max": 11.11111111111111
    },
    {
     "test": "3",
     "name": "Return on assets improved on the prior year",
     "value": "13.5% -> 11.6%",
     "threshold": "pass = 1",
     "points": 0.0,
     "max": 11.11111111111111
    },
    {
     "test": "4",
     "name": "Operating cash flow exceeds net income (accruals)",
     "value": "755M vs 494M",
     "threshold": "pass = 1",
     "points": 11.11111111111111,
     "max": 11.11111111111111
    },
    {
     "test": "5",
     "name": "Long-term debt / assets fell",
     "value": "5.6% -> 4.7%",
     "threshold": "pass = 1",
     "points": 11.11111111111111,
     "max": 11.11111111111111
    },
    {
     "test": "6",
     "name": "Current ratio improved",
     "value": "2.79 -> 3.02",
     "threshold": "pass = 1",
     "points": 11.11111111111111,
     "max": 11.11111111111111
    },
    {
     "test": "7",
     "name": "No new shares issued (share count did not rise)",
     "value": "72M -> 70M",
     "threshold": "pass = 1",
     "points": 11.11111111111111,
     "max": 11.11111111111111
    },
    {
     "test": "8",
     "name": "Operating margin improved (stand-in for gross margin, which the dataset does not carry)",
     "value": "19.7% -> 19.0%",
     "threshold": "pass = 1",
     "points": 0.0,
     "max": 11.11111111111111
    },
    {
     "test": "9",
     "name": "Asset turnover (revenue / assets) improved",
     "value": "0.79 -> 0.72",
     "threshold": "pass = 1",
     "points": 0.0,
     "max": 11.11111111111111
    }
   ],
   "rules_url": "https://theclaudetrader.com/p/piotroski"
  }
 },
 "inputs_by_philosophy": {
  "graham": [
   {
    "name": "Price (close, per traded unit)",
    "value": 412.62,
    "kind": "price",
    "source": "Alpaca Market Data (consolidated SIP daily bar)",
    "url": "https://docs.alpaca.markets/docs/historical-stock-data-1",
    "period": "2026-10-30",
    "age_days": 1,
    "stale": false
   },
   {
    "name": "Revenue",
    "value": 3074100000.0,
    "kind": "current",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25857940,
    "verified": "unverified",
    "age_days": 304,
    "stale": true
   },
   {
    "name": "current_assets",
    "value": 1807500000.0,
    "kind": "current",
    "source": "SEC XBRL AssetsCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25908115,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "current_liabilities",
    "value": 640500000.0,
    "kind": "current",
    "source": "SEC XBRL LiabilitiesCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25935331,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "lt_debt",
    "value": 202900000.0,
    "kind": "current",
    "source": "SEC XBRL LongTermDebtNoncurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25986625,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "equity",
    "value": 2990200000.0,
    "kind": "current",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26069811,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "Net income FY2016",
    "value": 143600000.0,
    "kind": "history",
    "source": "SEC XBRL ProfitLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "period": "2016-12-31",
    "accession": "0000105770-19-000012",
    "fact_id": 20692380,
    "verified": "unverified",
    "age_days": 3591
   },
   {
    "name": "Net income FY2017",
    "value": 150700000.0,
    "kind": "history",
    "source": "SEC XBRL ProfitLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577020000015/",
    "period": "2017-12-31",
    "accession": "0000105770-20-000015",
    "fact_id": 20698955,
    "verified": "unverified",
    "age_days": 3226
   },
   {
    "name": "Net income FY2018",
    "value": 206900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "period": "2018-12-31",
    "accession": "0000105770-21-000008",
    "fact_id": 20699751,
    "verified": "unverified",
    "age_days": 2861
   },
   {
    "name": "Net income FY2019",
    "value": 241700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "period": "2019-12-31",
    "accession": "0001628280-22-003342",
    "fact_id": 20706178,
    "verified": "unverified",
    "age_days": 2496
   },
   {
    "name": "Net income FY2020",
    "value": 346200000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2020-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20712675,
    "verified": "unverified",
    "age_days": 2130
   },
   {
    "name": "Net income FY2021",
    "value": 661800000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20719358,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Net income FY2022",
    "value": 585900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20726528,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Net income FY2023",
    "value": 593400000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20733573,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Net income FY2024",
    "value": 492700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20740180,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Net income FY2025",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Dividend years (Yahoo)",
    "value": [
     2002,
     2003,
     2004,
     2005,
     2006,
     2007,
     2008,
     2009,
     2010,
     2011,
     2012,
     2013,
     2014,
     2015,
     2016,
     2017,
     2018,
     2019,
     2020,
     2021,
     2022,
     2023,
     2024,
     2025,
     2026
    ],
    "kind": "history",
    "source": "Yahoo Finance dividend history",
    "url": "https://finance.yahoo.com/quote/WST/history?filter=div",
    "period": null,
    "verified": "verified (partly: XBRL covers 13 of 20 years)",
    "note": "XBRL dividends-per-share facts cover 13 of the 20 years"
   },
   {
    "name": "Dividends per share FY2013 (XBRL)",
    "value": 0.39,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577016000060/",
    "period": "2013-12-31",
    "accession": "0000105770-16-000060",
    "fact_id": 20886074,
    "verified": "verified",
    "age_days": 4687
   },
   {
    "name": "Dividends per share FY2014 (XBRL)",
    "value": 0.41,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577017000011/",
    "period": "2014-12-31",
    "accession": "0000105770-17-000011",
    "fact_id": 20887918,
    "verified": "verified",
    "age_days": 4322
   },
   {
    "name": "Dividends per share FY2015 (XBRL)",
    "value": 0.46,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577018000006/",
    "period": "2015-12-31",
    "accession": "0000105770-18-000006",
    "fact_id": 20889764,
    "verified": "verified",
    "age_days": 3957
   },
   {
    "name": "Dividends per share FY2016 (XBRL)",
    "value": 0.5,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "period": "2016-12-31",
    "accession": "0000105770-19-000012",
    "fact_id": 20891580,
    "verified": "verified",
    "age_days": 3591
   },
   {
    "name": "Dividends per share FY2017 (XBRL)",
    "value": 0.54,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577020000015/",
    "period": "2017-12-31",
    "accession": "0000105770-20-000015",
    "fact_id": 20893359,
    "verified": "verified",
    "age_days": 3226
   },
   {
    "name": "Dividends per share FY2018 (XBRL)",
    "value": 0.58,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "period": "2018-12-31",
    "accession": "0000105770-21-000008",
    "fact_id": 20895122,
    "verified": "verified",
    "age_days": 2861
   },
   {
    "name": "Dividends per share FY2019 (XBRL)",
    "value": 0.62,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "period": "2019-12-31",
    "accession": "0001628280-22-003342",
    "fact_id": 20896830,
    "verified": "verified",
    "age_days": 2496
   },
   {
    "name": "Dividends per share FY2020 (XBRL)",
    "value": 0.66,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2020-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20898481,
    "verified": "verified",
    "age_days": 2130
   },
   {
    "name": "Dividends per share FY2021 (XBRL)",
    "value": 0.7,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20900088,
    "verified": "verified",
    "age_days": 1765
   },
   {
    "name": "Dividends per share FY2022 (XBRL)",
    "value": 0.74,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20901674,
    "verified": "verified",
    "age_days": 1400
   },
   {
    "name": "Dividends per share FY2023 (XBRL)",
    "value": 0.78,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20903325,
    "verified": "verified",
    "age_days": 1035
   },
   {
    "name": "Dividends per share FY2024 (XBRL)",
    "value": 0.82,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20904975,
    "verified": "verified",
    "age_days": 669
   },
   {
    "name": "Dividends per share FY2025 (XBRL)",
    "value": 0.86,
    "kind": "history",
    "source": "SEC XBRL CommonStockDividendsPerShareDeclared",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25876854,
    "verified": "verified",
    "age_days": 304
   },
   {
    "name": "EPS diluted FY2014",
    "value": 1.75,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577017000011/",
    "period": "2014-12-31",
    "accession": "0000105770-17-000011",
    "fact_id": 20757355,
    "verified": "unverified",
    "age_days": 4322
   },
   {
    "name": "EPS diluted FY2015",
    "value": 1.3,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577018000006/",
    "period": "2015-12-31",
    "accession": "0000105770-18-000006",
    "fact_id": 20761776,
    "verified": "unverified",
    "age_days": 3957
   },
   {
    "name": "EPS diluted FY2016",
    "value": 1.91,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "period": "2016-12-31",
    "accession": "0000105770-19-000012",
    "fact_id": 20765954,
    "verified": "unverified",
    "age_days": 3591
   },
   {
    "name": "EPS diluted FY2023",
    "value": 7.88,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20798464,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "EPS diluted FY2024",
    "value": 6.69,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20804377,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "EPS diluted FY2025",
    "value": 6.79,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25866659,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Shares outstanding",
    "value": 69661036.0,
    "kind": "current",
    "source": "SEC cover page 10-Q 0000105770-26-000121 (69,661,036 shares (single class on cover)); filing document https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/wst-20260930.htm",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/R1.htm",
    "period": "2026-10-21",
    "accession": "0000105770-26-000121",
    "fact_id": 26171027,
    "age_days": 10,
    "stale": false
   }
  ],
  "magic_formula": [
   {
    "name": "operating_income",
    "value": 584900000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25872098,
    "age_days": 304
   },
   {
    "name": "operating_income_q",
    "value": 177100000.0,
    "kind": "current",
    "source": "SEC XBRL OperatingIncomeLoss (quarter CY2026Q1)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000049/",
    "period": "2026-03-31",
    "accession": "0000105770-26-000049",
    "fact_id": 23917980,
    "age_days": 214,
    "stale": true
   },
   {
    "name": "operating_income_q",
    "value": 107000000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss (quarter CY2025Q1)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000049/",
    "period": "2025-03-31",
    "accession": "0000105770-26-000049",
    "fact_id": 23931210,
    "age_days": 579
   },
   {
    "name": "operating_income_q",
    "value": 179100000.0,
    "kind": "current",
    "source": "SEC XBRL OperatingIncomeLoss (quarter CY2026Q2)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 23914000,
    "age_days": 123,
    "stale": true
   },
   {
    "name": "operating_income_q",
    "value": 153700000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss (quarter CY2025Q2)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 23926926,
    "age_days": 488
   },
   {
    "name": "current_assets",
    "value": 1807500000.0,
    "kind": "current",
    "source": "SEC XBRL AssetsCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25908115,
    "age_days": 123,
    "stale": true
   },
   {
    "name": "current_liabilities",
    "value": 640500000.0,
    "kind": "current",
    "source": "SEC XBRL LiabilitiesCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25935331,
    "age_days": 123,
    "stale": true
   },
   {
    "name": "cash",
    "value": 435800000.0,
    "kind": "current",
    "source": "SEC XBRL CashAndCashEquivalentsAtCarryingValue",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26104003,
    "age_days": 123,
    "stale": true
   },
   {
    "name": "ppe_net",
    "value": 1686300000.0,
    "kind": "current",
    "source": "SEC XBRL PropertyPlantAndEquipmentNet",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26130629,
    "age_days": 123,
    "stale": true
   },
   {
    "name": "debt_incl_current",
    "value": 202900000.0,
    "kind": "current",
    "source": "SEC XBRL LongTermDebt",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25998090,
    "age_days": 123,
    "stale": true
   },
   {
    "name": "shares_out",
    "value": 69661036.0,
    "kind": "current",
    "source": "SEC cover page 10-Q 0000105770-26-000121 (69,661,036 shares (single class on cover)); filing document https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/wst-20260930.htm",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/R1.htm",
    "period": "2026-10-21",
    "accession": "0000105770-26-000121",
    "fact_id": 26171027,
    "age_days": 10,
    "stale": false
   },
   {
    "name": "Price (close)",
    "value": 412.62,
    "kind": "price",
    "source": "Yahoo Finance / Alpaca Market Data",
    "url": null,
    "period": "2026-10-30",
    "age_days": 1,
    "stale": false
   },
   {
    "name": "note",
    "value": "debt = LongTermDebt (incl. current maturities)"
   }
  ],
  "momentum": [
   {
    "name": "Adjusted close series (14 months)",
    "value": 412.62,
    "kind": "price",
    "source": "Yahoo Finance / Alpaca Market Data daily history",
    "url": null,
    "period": "2026-10-30",
    "age_days": 1,
    "stale": false
   }
  ],
  "insider": [
   {
    "name": "Form 4 S Favorite Annette F 2026-09-08",
    "value": 960061.77,
    "shares": 2817.0,
    "price": 340.81,
    "role": "officer",
    "period": "2026-09-08",
    "source": "SEC Form 4 (insider transactions data set)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000108/"
   },
   {
    "name": "Form 4 S Favorite Annette F 2026-09-08",
    "value": 852025.0,
    "shares": 2500.0,
    "price": 340.81,
    "role": "officer",
    "period": "2026-09-08",
    "source": "SEC Form 4 (insider transactions data set)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000108/"
   },
   {
    "name": "Form 4 S Favorite Annette F 2026-09-08",
    "value": 960402.58,
    "shares": 2818.0,
    "price": 340.81,
    "role": "officer",
    "period": "2026-09-08",
    "source": "SEC Form 4 (insider transactions data set)",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000108/"
   },
   {
    "name": "excluded 2026-09-15 S",
    "value": "10b5-1 plan",
    "source": "rule"
   },
   {
    "name": "excluded 2026-09-14 S",
    "value": "10b5-1 plan",
    "source": "rule"
   },
   {
    "name": "excluded 2026-09-11 S",
    "value": "10b5-1 plan",
    "source": "rule"
   }
  ],
  "buffett": [
   {
    "name": "Price (close, per traded unit)",
    "value": 412.62,
    "kind": "price",
    "source": "Alpaca Market Data (consolidated SIP daily bar)",
    "url": "https://docs.alpaca.markets/docs/historical-stock-data-1",
    "period": "2026-10-30",
    "age_days": 1,
    "stale": false
   },
   {
    "name": "Net income FY2018",
    "value": 206900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "period": "2018-12-31",
    "accession": "0000105770-21-000008",
    "fact_id": 20699751,
    "verified": "unverified",
    "age_days": 2861
   },
   {
    "name": "Equity at FY2018 end",
    "value": 1396300000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "period": "2018-12-31",
    "accession": "0001628280-22-003342",
    "fact_id": 22760826,
    "verified": "unverified",
    "age_days": 2861
   },
   {
    "name": "Net income FY2019",
    "value": 241700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "period": "2019-12-31",
    "accession": "0001628280-22-003342",
    "fact_id": 20706178,
    "verified": "unverified",
    "age_days": 2496
   },
   {
    "name": "Equity at FY2019 end",
    "value": 1573200000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2019-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 22785907,
    "verified": "unverified",
    "age_days": 2496
   },
   {
    "name": "Net income FY2020",
    "value": 346200000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2020-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20712675,
    "verified": "unverified",
    "age_days": 2130
   },
   {
    "name": "Equity at FY2020 end",
    "value": 1854500000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2020-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 22810666,
    "verified": "unverified",
    "age_days": 2130
   },
   {
    "name": "Net income FY2021",
    "value": 661800000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20719358,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Equity at FY2021 end",
    "value": 2335400000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2021-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 22836674,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Net income FY2022",
    "value": 585900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20726528,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Equity at FY2022 end",
    "value": 2684900000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2022-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 22864885,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Net income FY2023",
    "value": 593400000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20733573,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Equity at FY2023 end",
    "value": 2881000000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 22892617,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Net income FY2024",
    "value": 492700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20740180,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Equity at FY2024 end",
    "value": 2682300000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 22918300,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Net income FY2025",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Equity at FY2025 end",
    "value": 3176000000.0,
    "kind": "history",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 26045811,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Net income FY2016",
    "value": 143600000.0,
    "kind": "history",
    "source": "SEC XBRL ProfitLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "period": "2016-12-31",
    "accession": "0000105770-19-000012",
    "fact_id": 20692380,
    "verified": "unverified",
    "age_days": 3591
   },
   {
    "name": "Net income FY2017",
    "value": 150700000.0,
    "kind": "history",
    "source": "SEC XBRL ProfitLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577020000015/",
    "period": "2017-12-31",
    "accession": "0000105770-20-000015",
    "fact_id": 20698955,
    "verified": "unverified",
    "age_days": 3226
   },
   {
    "name": "Net income FY2018",
    "value": 206900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "period": "2018-12-31",
    "accession": "0000105770-21-000008",
    "fact_id": 20699751,
    "verified": "unverified",
    "age_days": 2861
   },
   {
    "name": "Net income FY2019",
    "value": 241700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "period": "2019-12-31",
    "accession": "0001628280-22-003342",
    "fact_id": 20706178,
    "verified": "unverified",
    "age_days": 2496
   },
   {
    "name": "Net income FY2020",
    "value": 346200000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2020-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20712675,
    "verified": "unverified",
    "age_days": 2130
   },
   {
    "name": "Net income FY2021",
    "value": 661800000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20719358,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Net income FY2022",
    "value": 585900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20726528,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Net income FY2023",
    "value": 593400000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20733573,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Net income FY2024",
    "value": 492700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20740180,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Net income FY2025",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "debt_incl_current",
    "value": 202900000.0,
    "kind": "current",
    "source": "SEC XBRL LongTermDebt",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25998090,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "Operating income FY2021",
    "value": 752300000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20859367,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Revenue FY2021",
    "value": 2831600000.0,
    "kind": "history",
    "source": "SEC XBRL Revenues",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2021-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20639022,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Operating income FY2022",
    "value": 734000000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20865205,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Revenue FY2022",
    "value": 2886900000.0,
    "kind": "history",
    "source": "SEC XBRL Revenues",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2022-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20644217,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Operating income FY2023",
    "value": 676000000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20870939,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Revenue FY2023",
    "value": 2949800000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20652068,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Operating income FY2024",
    "value": 569900000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20876275,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Revenue FY2024",
    "value": 2893200000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20656922,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Operating income FY2025",
    "value": 584900000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25872098,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Revenue FY2025",
    "value": 3074100000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25857940,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Operating cash flow FY2021",
    "value": 584000000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20956129,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Capital expenditure FY2021",
    "value": 253400000.0,
    "kind": "history",
    "source": "SEC XBRL PaymentsToAcquirePropertyPlantAndEquipment",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 21024598,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Operating cash flow FY2022",
    "value": 724000000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20963175,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Capital expenditure FY2022",
    "value": 284600000.0,
    "kind": "history",
    "source": "SEC XBRL PaymentsToAcquirePropertyPlantAndEquipment",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 21029065,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Operating cash flow FY2023",
    "value": 776500000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20970122,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Capital expenditure FY2023",
    "value": 362000000.0,
    "kind": "history",
    "source": "SEC XBRL PaymentsToAcquirePropertyPlantAndEquipment",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21033464,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Operating cash flow FY2024",
    "value": 653400000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20976626,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Capital expenditure FY2024",
    "value": 377000000.0,
    "kind": "history",
    "source": "SEC XBRL PaymentsToAcquirePropertyPlantAndEquipment",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21037652,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Operating cash flow FY2025",
    "value": 754800000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25878637,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Capital expenditure FY2025",
    "value": 285900000.0,
    "kind": "history",
    "source": "SEC XBRL PaymentsToAcquirePropertyPlantAndEquipment",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25884557,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Shares outstanding",
    "value": 69661036.0,
    "kind": "current",
    "source": "SEC cover page 10-Q 0000105770-26-000121 (69,661,036 shares (single class on cover)); filing document https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/wst-20260930.htm",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/R1.htm",
    "period": "2026-10-21",
    "accession": "0000105770-26-000121",
    "fact_id": 26171027,
    "age_days": 10,
    "stale": false
   }
  ],
  "lynch": [
   {
    "name": "Price (close, per traded unit)",
    "value": 412.62,
    "kind": "price",
    "source": "Alpaca Market Data (consolidated SIP daily bar)",
    "url": "https://docs.alpaca.markets/docs/historical-stock-data-1",
    "period": "2026-10-30",
    "age_days": 1,
    "stale": false
   },
   {
    "name": "EPS diluted FY2025",
    "value": 6.79,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25866659,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "EPS diluted FY2020",
    "value": 4.57,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2020-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20781669,
    "verified": "unverified",
    "age_days": 2130
   },
   {
    "name": "debt_incl_current",
    "value": 202900000.0,
    "kind": "current",
    "source": "SEC XBRL LongTermDebt",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25998090,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "equity",
    "value": 2990200000.0,
    "kind": "current",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26069811,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "cash",
    "value": 435800000.0,
    "kind": "current",
    "source": "SEC XBRL CashAndCashEquivalentsAtCarryingValue",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26104003,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   }
  ],
  "graham_enterprising": [
   {
    "name": "Price (close, per traded unit)",
    "value": 412.62,
    "kind": "price",
    "source": "Alpaca Market Data (consolidated SIP daily bar)",
    "url": "https://docs.alpaca.markets/docs/historical-stock-data-1",
    "period": "2026-10-30",
    "age_days": 1,
    "stale": false
   },
   {
    "name": "current_assets",
    "value": 1807500000.0,
    "kind": "current",
    "source": "SEC XBRL AssetsCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25908115,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "current_liabilities",
    "value": 640500000.0,
    "kind": "current",
    "source": "SEC XBRL LiabilitiesCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25935331,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "debt_incl_current",
    "value": 202900000.0,
    "kind": "current",
    "source": "SEC XBRL LongTermDebt",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 25998090,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "Net income FY2021",
    "value": 661800000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "period": "2021-12-31",
    "accession": "0000105770-24-000015",
    "fact_id": 20719358,
    "verified": "unverified",
    "age_days": 1765
   },
   {
    "name": "Net income FY2022",
    "value": 585900000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "period": "2022-12-31",
    "accession": "0000105770-25-000013",
    "fact_id": 20726528,
    "verified": "unverified",
    "age_days": 1400
   },
   {
    "name": "Net income FY2023",
    "value": 593400000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2023-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20733573,
    "verified": "unverified",
    "age_days": 1035
   },
   {
    "name": "Net income FY2024",
    "value": 492700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20740180,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "Net income FY2025",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "Dividend years (Yahoo)",
    "value": [
     2019,
     2020,
     2021,
     2022,
     2023,
     2024,
     2025,
     2026
    ],
    "kind": "history",
    "source": "Yahoo Finance dividend history",
    "url": "https://finance.yahoo.com/quote/WST/history?filter=div",
    "period": null
   },
   {
    "name": "EPS diluted FY2025",
    "value": 6.79,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25866659,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "EPS diluted FY2020",
    "value": 4.57,
    "kind": "history",
    "source": "SEC XBRL EarningsPerShareDiluted",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "period": "2020-12-31",
    "accession": "0000105770-23-000012",
    "fact_id": 20781669,
    "verified": "unverified",
    "age_days": 2130
   },
   {
    "name": "equity",
    "value": 2990200000.0,
    "kind": "current",
    "source": "SEC XBRL StockholdersEquity",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26069811,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   },
   {
    "name": "Shares outstanding",
    "value": 69661036.0,
    "kind": "current",
    "source": "SEC cover page 10-Q 0000105770-26-000121 (69,661,036 shares (single class on cover)); filing document https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/wst-20260930.htm",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/R1.htm",
    "period": "2026-10-21",
    "accession": "0000105770-26-000121",
    "fact_id": 26171027,
    "age_days": 10,
    "stale": false
   },
   {
    "name": "liabilities",
    "value": 1086200000.0,
    "kind": "current",
    "source": "SEC XBRL Liabilities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2026-06-30",
    "accession": "0000105770-26-000099",
    "fact_id": 26035738,
    "verified": "unverified",
    "age_days": 123,
    "stale": true
   }
  ],
  "piotroski": [
   {
    "name": "net_income 2025-12-31",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "total_assets 2025-12-31",
    "value": 4270000000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25944051,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "cfo 2025-12-31",
    "value": 754800000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25878637,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "net_income 2025-12-31",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "net_income 2024-12-31",
    "value": 492700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20740180,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "total_assets 2025-12-31",
    "value": 4270000000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25944051,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "total_assets 2024-12-31",
    "value": 3643400000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21928273,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "cfo 2025-12-31",
    "value": 754800000.0,
    "kind": "history",
    "source": "SEC XBRL NetCashProvidedByUsedInOperatingActivities",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25878637,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "net_income 2025-12-31",
    "value": 493700000.0,
    "kind": "history",
    "source": "SEC XBRL NetIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25860496,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "lt_debt 2025-12-31",
    "value": 202800000.0,
    "kind": "history",
    "source": "SEC XBRL LongTermDebtNoncurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25978703,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "lt_debt 2024-12-31",
    "value": 202600000.0,
    "kind": "history",
    "source": "SEC XBRL LongTermDebtNoncurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 22085155,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "total_assets 2025-12-31",
    "value": 4270000000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25944051,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "total_assets 2024-12-31",
    "value": 3643400000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21928273,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "current_assets 2025-12-31",
    "value": 1978200000.0,
    "kind": "history",
    "source": "SEC XBRL AssetsCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25889526,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "current_assets 2024-12-31",
    "value": 1538100000.0,
    "kind": "history",
    "source": "SEC XBRL AssetsCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21322688,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "current_liabilities 2025-12-31",
    "value": 654900000.0,
    "kind": "history",
    "source": "SEC XBRL LiabilitiesCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25916793,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "current_liabilities 2024-12-31",
    "value": 550400000.0,
    "kind": "history",
    "source": "SEC XBRL LiabilitiesCurrent",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21595580,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "shares_out 2026-10-21",
    "value": 69661036.0,
    "kind": "history",
    "source": "SEC cover page 10-Q 0000105770-26-000121 (69,661,036 shares (single class on cover)); filing document https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/wst-20260930.htm",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000121/R1.htm",
    "period": "2026-10-21",
    "accession": "0000105770-26-000121",
    "fact_id": 26171027,
    "verified": "unverified",
    "age_days": 10
   },
   {
    "name": "shares_out 2025-10-20",
    "value": 71943412.0,
    "kind": "history",
    "source": "SEC XBRL EntityCommonStockSharesOutstanding",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000093/",
    "period": "2025-10-20",
    "accession": "0000105770-25-000093",
    "fact_id": 26143213,
    "verified": "unverified",
    "age_days": 376
   },
   {
    "name": "operating_income 2025-12-31",
    "value": 584900000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25872098,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "operating_income 2024-12-31",
    "value": 569900000.0,
    "kind": "history",
    "source": "SEC XBRL OperatingIncomeLoss",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20876275,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "revenue 2025-12-31",
    "value": 3074100000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25857940,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "revenue 2024-12-31",
    "value": 2893200000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20656922,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "revenue 2025-12-31",
    "value": 3074100000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 25857940,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "revenue 2024-12-31",
    "value": 2893200000.0,
    "kind": "history",
    "source": "SEC XBRL RevenueFromContractWithCustomerExcludingAssessedTax",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 20656922,
    "verified": "unverified",
    "age_days": 669
   },
   {
    "name": "total_assets 2025-12-31",
    "value": 4270000000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000099/",
    "period": "2025-12-31",
    "accession": "0000105770-26-000099",
    "fact_id": 25944051,
    "verified": "unverified",
    "age_days": 304
   },
   {
    "name": "total_assets 2024-12-31",
    "value": 3643400000.0,
    "kind": "history",
    "source": "SEC XBRL Assets",
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "period": "2024-12-31",
    "accession": "0000105770-26-000010",
    "fact_id": 21928273,
    "verified": "unverified",
    "age_days": 669
   }
  ]
 },
 "earnings_record": {
  "net_income_by_fy": [
   {
    "fy": 2013,
    "period_end": "2013-12-31",
    "sec_frame": "CY2013",
    "value": 112300000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577016000060/",
    "accession": "0000105770-16-000060"
   },
   {
    "fy": 2014,
    "period_end": "2014-12-31",
    "sec_frame": "CY2014",
    "value": 127100000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577017000011/",
    "accession": "0000105770-17-000011"
   },
   {
    "fy": 2015,
    "period_end": "2015-12-31",
    "sec_frame": "CY2015",
    "value": 95600000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577018000006/",
    "accession": "0000105770-18-000006"
   },
   {
    "fy": 2016,
    "period_end": "2016-12-31",
    "sec_frame": "CY2016",
    "value": 143600000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "accession": "0000105770-19-000012"
   },
   {
    "fy": 2017,
    "period_end": "2017-12-31",
    "sec_frame": "CY2017",
    "value": 150700000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577020000015/",
    "accession": "0000105770-20-000015"
   },
   {
    "fy": 2018,
    "period_end": "2018-12-31",
    "sec_frame": "CY2018",
    "value": 206900000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "accession": "0000105770-21-000008"
   },
   {
    "fy": 2019,
    "period_end": "2019-12-31",
    "sec_frame": "CY2019",
    "value": 241700000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "accession": "0001628280-22-003342"
   },
   {
    "fy": 2020,
    "period_end": "2020-12-31",
    "sec_frame": "CY2020",
    "value": 346200000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "accession": "0000105770-23-000012"
   },
   {
    "fy": 2021,
    "period_end": "2021-12-31",
    "sec_frame": "CY2021",
    "value": 661800000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "accession": "0000105770-24-000015"
   },
   {
    "fy": 2022,
    "period_end": "2022-12-31",
    "sec_frame": "CY2022",
    "value": 585900000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "accession": "0000105770-25-000013"
   },
   {
    "fy": 2023,
    "period_end": "2023-12-31",
    "sec_frame": "CY2023",
    "value": 593400000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010"
   },
   {
    "fy": 2024,
    "period_end": "2024-12-31",
    "sec_frame": "CY2024",
    "value": 492700000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010"
   },
   {
    "fy": 2025,
    "period_end": "2025-12-31",
    "sec_frame": "CY2025",
    "value": 493700000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010"
   }
  ],
  "eps_diluted_by_fy": [
   {
    "fy": 2013,
    "period_end": "2013-12-31",
    "sec_frame": "CY2013",
    "value": 1.57,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577016000060/",
    "accession": "0000105770-16-000060",
    "value_reported": 1.57,
    "split_factor": 1.0,
    "split_basis": "filed 2016-02-26"
   },
   {
    "fy": 2014,
    "period_end": "2014-12-31",
    "sec_frame": "CY2014",
    "value": 1.75,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577017000011/",
    "accession": "0000105770-17-000011",
    "value_reported": 1.75,
    "split_factor": 1.0,
    "split_basis": "filed 2017-02-28"
   },
   {
    "fy": 2015,
    "period_end": "2015-12-31",
    "sec_frame": "CY2015",
    "value": 1.3,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577018000006/",
    "accession": "0000105770-18-000006",
    "value_reported": 1.3,
    "split_factor": 1.0,
    "split_basis": "filed 2018-02-26"
   },
   {
    "fy": 2016,
    "period_end": "2016-12-31",
    "sec_frame": "CY2016",
    "value": 1.91,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "accession": "0000105770-19-000012",
    "value_reported": 1.91,
    "split_factor": 1.0,
    "split_basis": "filed 2019-02-28"
   },
   {
    "fy": 2017,
    "period_end": "2017-12-31",
    "sec_frame": "CY2017",
    "value": 1.99,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577020000015/",
    "accession": "0000105770-20-000015",
    "value_reported": 1.99,
    "split_factor": 1.0,
    "split_basis": "filed 2020-02-24"
   },
   {
    "fy": 2018,
    "period_end": "2018-12-31",
    "sec_frame": "CY2018",
    "value": 2.74,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "accession": "0000105770-21-000008",
    "value_reported": 2.74,
    "split_factor": 1.0,
    "split_basis": "filed 2021-02-23"
   },
   {
    "fy": 2019,
    "period_end": "2019-12-31",
    "sec_frame": "CY2019",
    "value": 3.21,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "accession": "0001628280-22-003342",
    "value_reported": 3.21,
    "split_factor": 1.0,
    "split_basis": "filed 2022-02-22"
   },
   {
    "fy": 2020,
    "period_end": "2020-12-31",
    "sec_frame": "CY2020",
    "value": 4.57,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "accession": "0000105770-23-000012",
    "value_reported": 4.57,
    "split_factor": 1.0,
    "split_basis": "filed 2023-02-21"
   },
   {
    "fy": 2021,
    "period_end": "2021-12-31",
    "sec_frame": "CY2021",
    "value": 8.67,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577024000015/",
    "accession": "0000105770-24-000015",
    "value_reported": 8.67,
    "split_factor": 1.0,
    "split_basis": "filed 2024-02-20"
   },
   {
    "fy": 2022,
    "period_end": "2022-12-31",
    "sec_frame": "CY2022",
    "value": 7.73,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577025000013/",
    "accession": "0000105770-25-000013",
    "value_reported": 7.73,
    "split_factor": 1.0,
    "split_basis": "filed 2025-02-18"
   },
   {
    "fy": 2023,
    "period_end": "2023-12-31",
    "sec_frame": "CY2023",
    "value": 7.88,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010",
    "value_reported": 7.88,
    "split_factor": 1.0,
    "split_basis": "filed 2026-02-17"
   },
   {
    "fy": 2024,
    "period_end": "2024-12-31",
    "sec_frame": "CY2024",
    "value": 6.69,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010",
    "value_reported": 6.69,
    "split_factor": 1.0,
    "split_basis": "filed 2026-02-17"
   },
   {
    "fy": 2025,
    "period_end": "2025-12-31",
    "sec_frame": "CY2025",
    "value": 6.79,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010",
    "value_reported": 6.79,
    "split_factor": 1.0,
    "split_basis": "filed 2026-02-17"
   }
  ],
  "revenue_by_fy": [
   {
    "fy": 2013,
    "period_end": "2013-12-31",
    "sec_frame": "CY2013",
    "value": 1368400000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577016000060/",
    "accession": "0000105770-16-000060"
   },
   {
    "fy": 2014,
    "period_end": "2014-12-31",
    "sec_frame": "CY2014",
    "value": 1421400000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577017000011/",
    "accession": "0000105770-17-000011"
   },
   {
    "fy": 2015,
    "period_end": "2015-12-31",
    "sec_frame": "CY2015",
    "value": 1399800000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577018000006/",
    "accession": "0000105770-18-000006"
   },
   {
    "fy": 2016,
    "period_end": "2016-12-31",
    "sec_frame": "CY2016",
    "value": 1509100000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577019000012/",
    "accession": "0000105770-19-000012"
   },
   {
    "fy": 2017,
    "period_end": "2017-12-31",
    "sec_frame": "CY2017",
    "value": 1599100000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577020000015/",
    "accession": "0000105770-20-000015"
   },
   {
    "fy": 2018,
    "period_end": "2018-12-31",
    "sec_frame": "CY2018",
    "value": 1717400000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577021000008/",
    "accession": "0000105770-21-000008"
   },
   {
    "fy": 2019,
    "period_end": "2019-12-31",
    "sec_frame": "CY2019",
    "value": 1839900000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000162828022003342/",
    "accession": "0001628280-22-003342"
   },
   {
    "fy": 2020,
    "period_end": "2020-12-31",
    "sec_frame": "CY2020",
    "value": 2146900000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "accession": "0000105770-23-000012"
   },
   {
    "fy": 2021,
    "period_end": "2021-12-31",
    "sec_frame": "CY2021",
    "value": 2831600000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "accession": "0000105770-23-000012"
   },
   {
    "fy": 2022,
    "period_end": "2022-12-31",
    "sec_frame": "CY2022",
    "value": 2886900000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577023000012/",
    "accession": "0000105770-23-000012"
   },
   {
    "fy": 2023,
    "period_end": "2023-12-31",
    "sec_frame": "CY2023",
    "value": 2949800000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010"
   },
   {
    "fy": 2024,
    "period_end": "2024-12-31",
    "sec_frame": "CY2024",
    "value": 2893200000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010"
   },
   {
    "fy": 2025,
    "period_end": "2025-12-31",
    "sec_frame": "CY2025",
    "value": 3074100000.0,
    "url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000010/",
    "accession": "0000105770-26-000010"
   }
  ],
  "dividend_years": [
   1987,
   1988,
   1989,
   1990,
   1991,
   1992,
   1993,
   1994,
   1995,
   1996,
   1997,
   1998,
   1999,
   2000,
   2001,
   2002,
   2003,
   2004,
   2005,
   2006,
   2007,
   2008,
   2009,
   2010,
   2011,
   2012,
   2013,
   2014,
   2015,
   2016,
   2017,
   2018,
   2019,
   2020,
   2021,
   2022,
   2023,
   2024,
   2025,
   2026
  ]
 },
 "insider_activity": {
  "coverage_through": "2026-10-30",
  "window_start": "2026-08-02",
  "missing_days": 1,
  "recent_transactions": [
   {
    "txn_date": "2026-09-15",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2524.0,
    "price": 365.0,
    "value": 921260.0,
    "is_10b5_1": 1,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000110/"
   },
   {
    "txn_date": "2026-09-14",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2500.0,
    "price": 355.0,
    "value": 887500.0,
    "is_10b5_1": 1,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000110/"
   },
   {
    "txn_date": "2026-09-11",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2500.0,
    "price": 345.0,
    "value": 862500.0,
    "is_10b5_1": 1,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000110/"
   },
   {
    "txn_date": "2026-09-08",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2817.0,
    "price": 340.81,
    "value": 960061.77,
    "is_10b5_1": 0,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000108/"
   },
   {
    "txn_date": "2026-09-08",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2500.0,
    "price": 340.81,
    "value": 852025.0,
    "is_10b5_1": 0,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000108/"
   },
   {
    "txn_date": "2026-09-08",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2818.0,
    "price": 340.81,
    "value": 960402.58,
    "is_10b5_1": 0,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000108/"
   },
   {
    "txn_date": "2026-04-27",
    "insider_name": "Winters Chad",
    "role": "officer",
    "code": "S",
    "shares": 896.0,
    "price": 300.67,
    "value": 269400.32,
    "is_10b5_1": 0,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000053/"
   },
   {
    "txn_date": "2026-04-27",
    "insider_name": "Favorite Annette F",
    "role": "officer",
    "code": "S",
    "shares": 2817.0,
    "price": 305.2,
    "value": 859748.4,
    "is_10b5_1": 0,
    "source_url": "https://www.sec.gov/Archives/edgar/data/105770/000010577026000054/"
   }
  ]
 },
 "filings_and_news": {
  "sec_filing_index": "https://www.sec.gov/edgar/browse/?CIK=0000105770",
  "sec_8k": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000105770&type=8-K",
  "sec_form4": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000105770&type=4",
  "xbrl_companyfacts": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000105770.json",
  "news_items": [],
  "note": "Press releases are filed as 8-K exhibits; the 8-K link lists them with dates."
 },
 "peer_context": {
  "graham": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 7,
   "rank": 1,
   "median": 51.9,
   "top_peers": [
    {
     "ticker": "WST",
     "score": 75.0
    },
    {
     "ticker": "RMD",
     "score": 70.5
    },
    {
     "ticker": "SYK",
     "score": 62.5
    },
    {
     "ticker": "BAX",
     "score": 51.9
    },
    {
     "ticker": "BDX",
     "score": 46.4
    }
   ]
  },
  "magic_formula": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 8,
   "rank": 7,
   "median": 48.4,
   "top_peers": [
    {
     "ticker": "SOLV",
     "score": 99.2
    },
    {
     "ticker": "BSX",
     "score": 87.5
    },
    {
     "ticker": "RMD",
     "score": 78.8
    },
    {
     "ticker": "SYK",
     "score": 51.8
    },
    {
     "ticker": "MMM",
     "score": 45.0
    }
   ]
  },
  "momentum": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 10,
   "rank": 1,
   "median": 66.8,
   "top_peers": [
    {
     "ticker": "WST",
     "score": 85.5
    },
    {
     "ticker": "BDX",
     "score": 82.8
    },
    {
     "ticker": "SOLV",
     "score": 77.9
    },
    {
     "ticker": "DXCM",
     "score": 75.9
    },
    {
     "ticker": "BAX",
     "score": 72.8
    }
   ]
  },
  "insider": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 10,
   "rank": 3,
   "median": 0.0,
   "top_peers": [
    {
     "ticker": "BSX",
     "score": 72.3
    },
    {
     "ticker": "PODD",
     "score": 47.5
    },
    {
     "ticker": "BAX",
     "score": 0.0
    },
    {
     "ticker": "BDX",
     "score": 0.0
    },
    {
     "ticker": "DXCM",
     "score": 0.0
    }
   ]
  },
  "buffett": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 7,
   "rank": 2,
   "median": 67.2,
   "top_peers": [
    {
     "ticker": "RMD",
     "score": 90.8
    },
    {
     "ticker": "WST",
     "score": 78.7
    },
    {
     "ticker": "SYK",
     "score": 76.7
    },
    {
     "ticker": "BSX",
     "score": 67.2
    },
    {
     "ticker": "PODD",
     "score": 49.5
    }
   ]
  },
  "lynch": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 8,
   "rank": 4,
   "median": 43.7,
   "top_peers": [
    {
     "ticker": "RMD",
     "score": 97.9
    },
    {
     "ticker": "PODD",
     "score": 57.5
    },
    {
     "ticker": "SYK",
     "score": 52.9
    },
    {
     "ticker": "WST",
     "score": 45.1
    },
    {
     "ticker": "BDX",
     "score": 42.2
    }
   ]
  },
  "graham_enterprising": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 8,
   "rank": 1,
   "median": 46.4,
   "top_peers": [
    {
     "ticker": "RMD",
     "score": 65.0
    },
    {
     "ticker": "WST",
     "score": 65.0
    },
    {
     "ticker": "PODD",
     "score": 55.0
    },
    {
     "ticker": "SYK",
     "score": 53.7
    },
    {
     "ticker": "BAX",
     "score": 39.0
    }
   ]
  },
  "piotroski": {
   "industry": "Surgical & Medical Instruments & Apparatus",
   "scored_peers": 7,
   "rank": 4,
   "median": 66.7,
   "top_peers": [
    {
     "ticker": "BSX",
     "score": 88.9
    },
    {
     "ticker": "SOLV",
     "score": 88.9
    },
    {
     "ticker": "PODD",
     "score": 77.8
    },
    {
     "ticker": "WST",
     "score": 66.7
    },
    {
     "ticker": "MMM",
     "score": 55.6
    }
   ]
  }
 },
 "dossier": {
  "url": "https://theclaudetrader.com/d/WST.md",
  "written": "2026-10-30",
  "note": "librarian agent dossier: cited facts only, no opinions"
 },
 "external_views_link_only": {
  "morningstar": "https://www.morningstar.com/search?query=WST",
  "finviz": "https://finviz.com/quote.ashx?t=WST",
  "stockanalysis": "https://stockanalysis.com/stocks/wst/",
  "seeking_alpha": "https://seekingalpha.com/symbol/WST",
  "openinsider": "http://openinsider.com/search?q=WST",
  "google_news": "https://news.google.com/rss/search?q=WST+stock"
 },
 "limits": [
  "News is not collected for this ticker; use the SEC 8-K and press-release links below"
 ],
 "machine_readable": {
  "stock_json": "https://theclaudetrader.com/s/WST.json",
  "stock_md": "https://theclaudetrader.com/s/WST.md",
  "packet": "https://theclaudetrader.com/r/WST.json",
  "grid": "https://theclaudetrader.com/grid.json",
  "openapi": "https://theclaudetrader.com/openapi.json",
  "index": "https://theclaudetrader.com/llms.txt"
 },
 "cite_as": "The Claude Trader snapshot 2026-10-31, https://theclaudetrader.com/s/WST; data from SEC EDGAR XBRL and market prices (Alpaca Market Data, Yahoo Finance) to 2026-10-30.",
 "disclaimer": "Scores are deterministic rule outputs from public filings. fair_value_model is a labelled model estimate from the same filings (method at /fair-value), not an opinion or recommendation."
}