CS2 trade-up contracts: how the new weighted float math works
The Re-Retakes update (October 23, 2025) quietly rewrote trade-up economics. Output float is no longer the raw average of your inputs' floats - it is the average of how worn each input is relative to its own float cap, mapped onto the output's cap. If you learned trade-up math before that date, relearn it here.
The rules that did not change
- 10 inputs of the same rarity produce 1 skin of the next rarity up.
- StatTrak stays StatTrak - 10 ST inputs give an ST output; no mixing ST and non-ST.
- Only the collections of your inputs determine the possible outputs.
- Outcome odds are weighted: each collection's chance is proportional to how many of your inputs come from it, normalised by how many possible outcomes each collection has.
- New since the same update: 5 Covert skins trade up to a knife or gloves (5 ST Coverts to an ST knife).
The float math, step by step
For each input, compute its wear position inside its own cap: adj = (float - minFloat) / (maxFloat - minFloat). Average the ten adj values, then map that average onto the output skin's cap: out = outMin + avgAdj x (outMax - outMin). Here is one input worked through:
That 0.30 float looks healthy - it would have averaged out to a Field-Tested result under the old raw-average math (0.06 + 0.30 x 0.74 = 0.282). But the Amber Fade's cap is 0-0.40, so 0.30 means the skin is 75% worn, and the new math carries that 75% into the output: 0.615, deep Battle-Scarred. Same inputs, two wear brackets worse.

