A Solved Spread Looks Like Instinct Until You Check What It Is Optimizing
Pull the current Smogon University competitive set for Garchomp in Generation 9 OU and one of the two listed spreads reads: Jolly nature, 252 Attack, 4 Special Defense, 252 Speed [7]. Nothing about that spread announces itself as the output of an optimization problem. It reads like habit — max the stat you hit with, max the stat that lets you hit first, throw the leftover four points somewhere that will not go to waste. Every serious competitive player treats spreads like this as intuition sharpened by years of ladder games, not as arithmetic. My claim is narrower and checkable: it is arithmetic, whether or not anyone doing it ever wrote the arithmetic down. The number that decides a Pokémon’s Attack, Speed, or any other stat is generated by one public, fully specified formula, that formula is a production function in the economist’s exact sense — a scarce input converted into an output through a fixed technical rule — and a Pokémon’s 510-point effort-value budget is spent against real, computable constraints: a 252-point ceiling on any one stat, a rounding rule that swallows most individual points for free, and non-obvious jumps where the rule pays out double. Solve the resulting constrained-optimization problem on Garchomp’s own published base stats for an offensive objective, and the solution is not a nearby approximation to what Smogon publishes. It is the same two numbers. Solve the same style of problem for a defensive objective and a second, currently maintained Garchomp spread also lands exactly on the discrete ceiling the arithmetic predicts. Go back one generation to an older, explicitly unreviewed Garchomp spread, run the identical count, and it comes up one point short — a real, checkable inefficiency sitting in Smogon’s own archive. Three data points, one species, one formula, and exactly one of the three is wrong. That is the shape of the rest of this article.
The Public Stat Formula Already Is a Production Function
Since Generation III, every non-HP stat in a modern Pokémon game is produced by one rule: take twice the species’ base stat, add its individual value (an inherited number from 0 to 31, effectively fixed for a competitively bred Pokémon [4]), add the floor of its invested effort value divided by four, scale by level over 100 and round down, add five, then multiply by a nature coefficient of 0.9, 1.0, or 1.1 and round down again [1]:
HP uses the same inner term but a different outer shell, adding the Pokémon’s level plus ten instead of multiplying by a nature:
At level 100 — the level Smogon’s singles tiers, including the OU tier this article draws its spreads from, are actually played at — the level term collapses to a clean multiplication by one, so every floor operation inside the level scaling vanishes and the formula reduces to simple integer arithmetic: raw score equals twice the base stat plus the IV plus the floor of EV over four, plus five, times the nature coefficient. That collapse is not incidental to this article; it is why the whole problem is exactly solvable rather than merely well-approximated. A trainer is not tuning a continuous dial. A trainer is allocating a strictly rationed resource — at most 510 points total, at most 252 in any single stat since Generation VI [2] — against a fixed, integer-valued conversion rate, in six independent lines, one of which the nature coefficient tilts by exactly ten percent in one direction and discounts by exactly ten percent in another [3]. Two Pokémon-standard six-stat lines, one budget, hard per-line ceilings, an unambiguous conversion technology: that is a textbook constrained-allocation problem, not a metaphor borrowed from economics to dress up a hobby.
The 252-point ceiling itself carries a small, exact piece of history worth pausing on, because it shows the formula’s designers running into their own discreteness. From Generation III through Generation V the per-stat ceiling was 255, not 252; Generation VI lowered it, and any Pokémon carrying 253 or more in a stat when moved forward into a Generation VI game has that value clipped down to 252 [2]. Two hundred fifty-five divided by four floors to sixty-three, identical to what 252 divided by four floors to — so the old ceiling never bought a single trainer a higher stat than the new one does. It only let a player spend three effort points, out of 510 that were never generous to begin with, on absolutely nothing. The 2013 change did not touch a single Pokémon’s maximum achievable stat. It deleted three guaranteed-dead points from the accounting, in exactly the place the floor operation had already made them dead. A related, now-resolved friction sat on the delivery side: from Generation III through Generation VII, the six EV-boosting vitamin items — HP Up, Protein, Iron, Calcium, Zinc, and Carbos, one per stat, ten effort points per dose — stopped working once a stat’s accumulated EVs passed 100, forcing the remaining 152 points on any maxed stat to come only from battling, until Generation VIII lifted that ceiling to the full 252 [5]. Two separate patches, seven generations apart, both aimed at the same rationed, discrete resource. Neither patch is a metaphor either.
Between Every Fourth Effort Point, the Marginal Product Is Exactly Zero
Because the formula divides invested effort by four and floors the result, the function mapping effort points to stat points is not a slope. It is a staircase with sixty-three steps, each four points wide, rising by exactly one stat point per step for any stat whose nature coefficient is neutral. Attack on this same Garchomp — base Attack 130 [6] — with a neutral nature coefficient, moves from 296 at zero invested points to 359 at the full 252 — a raw score of 2·130+31+5 = 296 at zero, and 296+63 = 359 once all sixty-three steps are climbed. The marginal product of the 249th, 250th, and 251st effort point invested in Attack is, individually, zero; only the 252nd point on that step converts to a visible stat point. This is not a rhetorical flourish about diminishing returns. It is a literal, computable zero, the same zero for every one of the fifty-two-and-a-half spent-but-useless effort points a trainer would waste by investing in anything other than a clean multiple of four.
A boosted stat complicates the staircase in a way that has gone unremarked in most treatments of the mechanic. Nature multiplication applies its own independent floor on top of the EV floor, and because 1.1 is not an integer, that second floor does not always advance the visible stat by exactly one point per four-EV step the way a neutral stat does. Running Garchomp’s Speed formula with a Jolly nature (which raises Speed and lowers Special Attack [3]) across every one of its sixty-three steps and checking where the final, twice-floored value increases by two points instead of one in a single step turns up exactly six such steps in the entire 0-to-252 range: the steps landing at 40, 80, 120, 160, 200, and 240 invested Speed EVs each deliver a bonus stat point that the neighboring steps do not.
| EV reached | Raw Speed before → after | Final Speed before → after |
|---|---|---|
| 40 | 249 → 250 | 273 → 275 |
| 80 | 259 → 260 | 284 → 286 |
| 120 | 269 → 270 | 295 → 297 |
| 160 | 279 → 280 | 306 → 308 |
| 200 | 289 → 290 | 317 → 319 |
| 240 | 299 → 300 | 328 → 330 |
Six of Garchomp’s sixty-three Speed steps are worth double; the other fifty-seven are worth exactly one point, no more and no less, and the three intermediate points inside every one of those sixty-three steps are worth nothing on their own regardless of nature. None of this is folklore, and none of it required a data mine or a leaked internal document — it is arithmetic performed once, correctly, on a formula the game’s own community has documented in public for two decades [1].
The 510-Point Budget Can Never Buy More Than 127 Stat Points
The staircase structure has a direct consequence for how much of the 510-point budget can ever do anything at all. The number of stat points any single invested value
Both of Garchomp’s currently maintained Generation 9 OU spreads hit that ceiling exactly [7]. The Swords Dance set — 252 Attack, 4 Special Defense, 252 Speed — totals 508 invested points and buys
Solving the Lagrangian Puts Both Capped Stats Exactly Where Smogon Already Put Them
Hitting the 127-point ceiling says nothing yet about which stats should receive the investment — that answer depends on what the spread is actually for. For the Swords Dance set’s job, sweeping through a metagame’s Speed tiers with a boosted physical attack, I define a proposed measure I will call the sweep index: the product of a Pokémon’s final Attack stat and its final Speed stat. This is not an official in-game statistic; it is this article’s own construct, chosen because a physical sweeper that hits hard but moves last contributes nothing, a sweeper that moves first but hits softly contributes little, and a product (rather than a sum) captures that the two failure modes compound rather than merely add. Writing
produces first-order conditions
The unconstrained-by-caps answer, in other words, wants Garchomp’s invested Speed to run 224 points ahead of its invested Attack — a gap wider than the entire 252-point ceiling on either stat individually. That single number is the whole explanation for why the observed spread looks like a blunt “max both” instinct rather than a delicate balance: a 224-point desired gap cannot fit inside a box only 252 points wide on a side, so the interior tangency point is infeasible, and because both partial derivatives stay strictly positive everywhere in the feasible region —
The gap between the two naive strategies a trainer might reach for instead and this corner is not small. Dumping the entire budget into Attack alone (252 Attack, 0 Speed) yields a sweep index of
| Strategy | Attack | Speed | Sweep index | vs. corner |
|---|---|---|---|---|
| All-in on Attack (252/0) | 359 | 264 | 94,776 | −20.7% |
| Even six-way split (85 each) | 317 | 287 | 90,979 | −23.9% |
| Corner solution / real spread (252/252) | 359 | 333 | 119,547 | — |
Once both offensive stats sit at their ceiling, the model has nothing left to say about the remaining 4 to 6 points a 510-point budget still has room for — both partial derivatives with respect to Attack and Speed remain positive at the corner, meaning the two-variable model would keep spending on them forever if the ceiling allowed it, and is simply silent on where leftover points outside those two variables should go. Real spreads resolve that silence with information this toy objective never had. Smogon’s own text for the defensive TankChomp set states plainly that “the given EV spread allows Garchomp to outspeed Raging Bolt” [9] — its 40 invested Speed points are not decorative; they clear one specific, named rival’s Speed stat, a constraint external to any two-stat product and invisible to a model that only knows base stats and a nature chart.
Where the Model Breaks: A Corner Only Exists When the Gap Outgrows the Box
The corner solution is not a universal law about Pokémon spreads; it is a consequence of one specific number, 224, being larger than one specific box width, 252. Nothing about the sweep-index construction guarantees that relationship for every objective a trainer might optimize. A defensive pairing built the same way — the product of final HP and final Defense, say, for a wall whose job is simply to survive as many hits as possible rather than to out-speed anything — would generate its own tangency condition from its own pair of base stats and its own nature multipliers, and there is no general reason that gap has to exceed 252 the way Attack-and-Speed’s does for this particular Pokémon under this particular nature. This is a Speculative claim in the strict sense this publication uses that word: I have not solved the bulk-objective case here, and the honest failure condition is explicit — if a real, currently maintained bulk spread turns up that caps two defensive stats simultaneously without an equivalently wide implied gap forcing it there, or conversely settles on an interior, uncapped split for two stats whose implied gap this method would predict as corner-forcing, this specific mechanism (a Lagrangian tangency wider than the box) is not what is driving the outcome, and something else — a discrete damage-roll threshold, most likely — is doing the real work instead. The formula is exact; which objective a given real spread is actually solving for is not something this article observes directly, only infers from the numbers that come out the other end.
The One Published Garchomp Spread That Actually Wastes a Point
The theorem that 510 points can buy at most 127 stat points is only interesting if it is possible to fail it, and the pkmn/smogon archive of Smogon’s own historical movesets [8] turns up exactly one Garchomp spread, out of every generation and every competitive tier checked, that does. A Generation 5 Monotype set titled “Defensive Entry Hazard Support (Dragon)” runs 252 HP, 162 Defense, and 94 Speed — 508 total points invested, the same total as both of the currently maintained Generation 9 sets above. But
The archive itself explains why this particular spread never went through the review that caught the same error nowhere else. Smogon University’s own written entry for that set carries a standing disclaimer rather than an analysis: “This is a sample set. We aren’t working on BW Monotype analyses at the moment” [10]. A sample set is explicitly a placeholder, not a reviewed competitive recommendation — it never passed through the writer-and-quality-check process that the actively maintained Generation 9 OU page credits by name for its own sets [9]. The formula does not know or care whether a given number was reviewed. It simply floors whatever is typed into it. Where a maintained review process exists, this article’s closed-form count and the community’s own output agree exactly, twice. Where that process lapses — an old tier, a sample entry, a generation nobody is actively curating — the same formula immediately exposes a real, quantified point of waste that had apparently gone unnoticed since it was written.
Folklore and Optimization Produce the Same Spread Until Someone Checks
None of this required treating Pokémon’s competitive scene as a metaphor for economics, and none of it required inventing a model loose enough to fit whatever number happened to come out. The stat formula is public, exact, and has not meaningfully changed in its core arithmetic since Generation III [1]; a scarce, capped budget converted through that arithmetic is a production function whether or not anyone allocating it ever names it that; and a production function with hard per-line ceilings and a demonstrably wide implied trade-off ratio has a corner solution, computable in advance, that either matches what a community of players independently converged on or it does not. For Garchomp specifically, on the two objectives this article could pin down precisely enough to solve, it matches twice, exactly, against currently maintained output a review process actively checks. Where that review process is switched off — an archived tier nobody is updating — the same closed-form count finds the one place, in every generation and tier this article checked, where the community’s instinct and the arithmetic quietly parted ways. If “trainers solved this by accident” is a real claim rather than a compliment, this is what it should look like when checked: not a vague resemblance, but two matches and one named, quantified, two-point miss, sitting in the same species’ own history.