Beware of Stat Weights

Friends don’t let friends abuse stat weights.

TL;DR: Direct sims (Top Gear, Gear Compare, Droptimizer) are almost always better. Only use stat weights as a quick, in-game evaluation of gear while understanding the shortcomings.

Has This Happened To You Or Your Loved Ones?

  • Sim your stat weights
  • Update Pawn string
  • Equip a new ring based on the new Pawn string
  • Sim stat weights with the new ring
  • Update Pawn string
  • Now the ring you just had on shows up as an upgrade

What Is Going On Here?

The quick answer is that stat weights are a simple, coarse approximation at one very specific moment and don’t always map to actual decisions you can make.

Rings (and necks too, but not so much in BfA) are particularly volatile since they have fewer stats so the changes between sims can swing more than other pieces of gear and you can find yourself in a situation where stat weights are trying to get you to a stat distribution that you can’t equip.

Or to use excellent 90s movies, stat weights are this:

I guess that makes direct sims this? I dunno, the analogy falls apart but I’m sticking with it:

So What Should I Do?

Use direct sims like Top Gear, Gear Compare, or Droptimizer (or set up your own in Advanced or your local SimC program). Directly simming your gear is more accurate and more consistent. In addition, direct sims will evaluate trinket procs, Azerite powers, set bonuses, enchants, weapons, and anything else you can shake a stick at. Stat Weights only evaluate the raw primary and secondary stats on your gear and have a bunch of common traps.

The main modern use case for stat weights is to use them as a quick reference in-game to answer the broad question of “is this item maybe an upgrade.” Even then, you need to run them frequently to get optimal results.

The Nitty Gritty

What Is Happening When I Generate Stat Weights?

SimC runs multiple variations of your character to calculate “how much does changing a single stat affect my DPS?”

Roughly, SimC uses the following process to calculate stat weights by default in BfA (they’re called scale factors in SimC itself):

  • Run your current character
  • Run your current character plus 238 main primary stat
  • Run your current character plus 238 critical strike
  • Run your current character plus 238 haste
  • Run your current character plus 238 mastery
  • Run your current character plus 238 versatility

Depending on your spec, SimC may also run additional stats that affect your DPS (weapon DPS, stamina for monks, etc)

Why 238? The default delta is calculated based on increasing haste by 3.5% which is 238 haste in BfA

Once it has determined the DPS for those setups, it calculates the DPS gained from the stat and takes dps_increase / stat_increase to determine “amount of DPS per point of stat” which gets turned into a Pawn string.

For example, if your base DPS is 10,000 and adding 238 agility results in 10,300 DPS, your agility stat weight will be 1.26:

10300 – 10000 = 300
300 / 238 = 1.26

Repeat for the other stats and then generate a string that encodes those values in a way that Pawn can understand.

Stat Weight Volatility

Stat weights can be pretty volatile (they change frequently as your gear changes) because stats interact with each other.

These interactions exist because most stats tend to be multiplicative with each other, not additive. As an extremely contrived example, let’s say both crit and haste provide 1% DPS for 1% of the stat (this is not how things actually work, just the general idea).

Base DPS is 10,000 at 0% crit and 0% haste
20% Haste is 12,000 DPS (10000 * 1.2 = 12000)
20% Crit is 12,000 DPS (10000 * 1.2 = 12000)
10% Haste/10% Crit is 12,100 DPS (10000 * (1.1 * 1.1) = 12100)

The actual stat interactions are far more complex than this, but it captures the essence of why having a mix of stats is better than just one stat.

A Full Example

Let’s look at the Tier 23 Frost Mage SimC profile and show some of the traps of stat weights.

Here’s the Stat Weights for that character.

Let’s take a look at comparing a couple of rings, Band of Multi-Sided Strikes (the profile is wearing this ring) and Lord Admiral’s Signet (just look at the stats, we can ignore the proc since it doesn’t affect mage DPS). We’ll compare the 415 item level version that come from Mythic BoD.

Band of Multi-Sided Strikes is a Vers/Crit ring, Lord Admiral’s Signet is Mastery/Haste. Here’s the calculations of DPS if you use the stat weight values (this is the same math Pawn is doing — multiply the amount of stat by the stat weight):

Soulver is a great app. And yes, I use a Mac for development.

By raw stat weights, it looks like Lord Admiral’s Signet should be slightly better (1,405 DPS vs 1,391 DPS). Let’s swap those rings and run stat weights again and do the math:

Now Band of Multi-Sided Strikes is back on top and the order of the stat weights have shifted significantly.

OK, so we can see inconsistency here and the infinite loop you can get stuck in when using stat weights. Let’s digress real quick and run a couple of Gear Compares to see what a direct sim does with these setups.

T23 Frost Mage wearing Multi-Sided Strikes, compare Lord Admiral’s

T23 Frost Mage wearing Lord Admiral’s, compare Multi-Sided Strikes

These two sims agree — Multi-Sided Strikes is about 80 DPS better (0.3%). This shows how direct sims are more consistent — you won’t get the “flapping” results that you get with stat weights.

But let’s dig a little deeper — why are the stat weights result flipping back and forth?

To answer that, we’ll go on a bit of a digression and use some more advanced SimC features to understand relationships between stats.

We’ll use reforge plotting to see what happens as we convert one stat into another. Let’s look at the bigger secondary stats — versatility on Multi-Sided Strikes, mastery on Lord Admiral’s Signet. I’ll run a reforge plot of versatility/mastery to see how converting versatility to mastery will affect DPS — in this case I’ll run a sim that will test the extremes of full mastery, full versatility, or many points in between.

What this curve is telling us is that there’s a relationship between mastery and versatility and the current character is very near the optimal point right now. The left side is what would happen if you had 0 mastery and 750 versatility, the right side is 750 mastery and 0 versatility. Either of these extremes is a DPS loss and the optimal point is a mix of both as they interact with each other.

Out of curiosity, let’s look at crit->haste as well (the smaller secondaries on the rings):

Looking at the left half for this chart

We see a similar relationship here — the character is already at a nearly optimal point of haste/crit mix.

Now back to the original point, why does this affect stat weights and cause the flipping?

The main reason is that the simple stat weight sim just increases a single value. It’s the equivalent of moving a decent distance to the left or right on one of the reforge plots and finding yourself in a non-optimal mix of stats so the next stat weight sim will try to nudge you back to the optimal point.

Basically, stat weights get stuck in this loop:

Et cetera, et cetera

Why Direct Sims Are Better

Directly comparing gear changes avoids all of the pitfalls of stat weights outlined above. There’s no approximation or shortcuts — the exact items you have get simulated with all factors accounted for (trinket proc, Azerite powers, enchants, etc).

Why Does Raidbots Even Have Stat Weights If They’re A Trap?

They do have some value if used correctly. And they are probably better than using nothing at all. My hope is that folks realize that the newer approaches are better and maybe stat weights can be a stepping stone to the better tools.

Further Reading

A lot of other very smart folks have written about the limitations of stat weights and I recommend reading further if you are interested.

SimC Stats Scaling Documentation

Stat Weights and You (Peak of Serenity)

Stat Weights and You: Round 2 (Peak of Serenity)

Stat Weights and You: Round 3 (Peak of Serenity)

A Short Rant About Stat Weights (Binkenstein)