Envelope Position

Drafted by an LLM, reviewed and edited by TitanTrainers15 and others.

The envelope position of a named IV-spread category answers one question: when IV spreads in this category win, are they winning because the IV spreads themselves are special, or because almost any IV spread at the same stat-product rank would be winning those matchups?

That distinction matters when you’re deciding which IV spread to chase. A category that “rides above” the Anchor IVs band at its rank is doing something that the rank alone doesn’t buy you. A category that “straddles” the band is doing roughly what rank already predicts, and chasing a specific IV spread inside it isn’t worth extra effort.

What the Anchor IVs band is

Every dive has an Anchor IVs overlay on the scatter plot - a set of reference IVs (every IV spread that clears at least one named anchor - a breakpoint, bulkpoint, or CMP test - against the meta) that serve as the “what you’d naturally build” baseline. For every stat-product rank, there’s a set of anchor IVs at that rank and an average battle score for that set. Stacked across every rank, those averages trace out a band: a smooth curve of “what score do you get at rank N if you don’t go out of your way to pick a specific flavor?”

The envelope metric asks, for each named category (each row on the IV Flavor Guide, each composite card in the Per-matchup IV finder, each tier in Threshold Tiers): at matching stat-product rank, does this category’s score sit above, below, or on the band?

Tinkaton UL scatter plot showing named categories sitting
          above, below, and across the Anchor IVs band.
Scatter plot from the Tinkaton UL dive. The triangle markers labelled Anchor IVs in the legend trace the reference band; the coloured category traces (Ampharos Atk, Annihilape Bulk, the Slayer cuts, Tinkaton Mirror Atk) sit above, below, and across it - that vertical position vs the band is exactly what the envelope metric measures. On this dive's current data every legend category classifies as a straddler; the clean riders are composite categories (e.g. CMP-First Slayer with 171+ bulk rides the top of the band, Anchors-First Slayer with Annihilape Bulk rides the bottom), whose tags appear on their cards in the Per-matchup IV finder rather than as scatter traces.

Why the Anchor IVs markers change color across the rank axis. Each triangle’s inner fill matches what that IV spread would look like in the base scatter underneath. So in the default Color: Threshold tiers mode, anchor IVs that clear a named tier take that tier’s color; untiered anchor IVs take a Viridis-by-score gradient. Switch the Color dropdown to a stat axis like “HP” or “Attack” and every anchor fill flips to a fixed gold - the per-tier mapping doesn’t apply outside threshold mode. Switch the Anchors dropdown to Outline and the fill drops out entirely, leaving a cyan ring per anchor IV so the band reads as an envelope edge.

The four shapes

Each category carries a shape label, derived from two numbers:

The classifier splits on the ratio |mean_delta| / spread. If the mean is at least 1.5x the stdev, the category is a rider (members consistently on one side of the band). Otherwise it’s a band-crosser (members scatter across the band; the sign of the mean tells you which way the scatter tilts).

That gives four named shapes. The first, second, and fourth each have a labeled trace on the screenshot above; the third (depressed-band-crosser) appears in Tinkaton UL only as single-matchup cohorts that don’t get dedicated traces.

A fifth label, sparse, fires when the category has too few members or too few anchors for the metric to be informative. The dive renderer skips sparse categories entirely rather than showing a misleading tag.

Where the tag shows up on a dive

Two places:

  1. Per-category, on the composite (slayer + tier) cards in the Per-matchup IV finder (the section formerly called Notable IVs). The tag line reads like:

Envelope: Straddles band (net -) (avg -0.3, spread 0.9)

Hover the tag for a full tooltip: “Avg battle-score delta vs the anchor-IV band at matching stat-product rank. -0.3 average, spread 0.9 (stdev) across 7 members and 2617 anchor IVs.”

  1. At the top of the page in the Overview / Meta Role narrative, as a single sentence counting how many categories land in each bucket. On the reference Oinkologne (Female) Great League dive, it reads:

Envelope shape. 26 of 208 named categories ride above the anchor band …; 1 ride below …; 181 straddle.

How to read the numbers on a tag

The two numbers in parentheses (avg X, spread Y) tell you what you’re looking at:

A rule of thumb: spread under ~0.5 means the members behave as a tight cluster; over ~1.5 means they scatter. mean_delta in the single digits is typical (battle scores live in the hundreds but delta-vs-band is usually small); a mean_delta above 3 is a strong signal in either direction.

Worked example: Oinkologne (Female) in Great League

Looking at the envelope count on the reference dive: 26 categories ride above, 1 ride below, and 181 straddle the band (out of 208 classified).

That distribution is typical for a mid-role species: the overwhelming majority of categories straddle, which means the rank-matched anchor band is a strong predictor of outcome. The handful of riders are the interesting ones - either ship-quality picks (rider-top) or explicit traps (rider-bottom) where the mean is persistently off the band.

On the Per-matchup IV finder’s composite cards you can see the per-category tags: the composite Slayer-plus-Bulk cards that cover a defensive trade carry Straddles band (net -) tags, which matches the intuition that trading def-sacrifice for atk gains is a wash on average.

How to use this when picking an IV

Work the envelope tag together with the category’s member count (how many IV spreads qualify) and the cutoffs themselves:

The Paste-box CSV overlay on the scatter plot makes this concrete: paste your own IV spreads into the plot, switch to the category whose tag you like, and see instantly which of your catchable IV spreads land inside a rider-top band vs a straddle.

Where to go next

Battle engine is a Python port of PvPoke; all game data from PvPoke by Empoleon_Dynamite (MIT license). This project would not exist without it.

Part of the PvP dive site. Explainers regenerate from current dive data every publish, so numbers stay in sync with the methodology. Last regenerated 2026-08-27.