Skip to main content

CS2 Trade-Up Contracts: The Float Formula and How Odds Work

How CS2 calculates output floats in trade-up contracts, how collection weighting determines odds, and when a trade-up is actually profitable.

ByMansone||5 min read|Updated Sep 24, 2026

Trade-up contracts in CS2 are not random. The output float is calculated from your inputs using a formula, and the odds of getting each possible skin are determined by collection weighting. Here's how both work.

The float formula (3 steps)

Since the October 22, 2025 update, CS2 uses per-skin normalization. Valve didn't list the change in the patch notes; community testing after the update confirmed it. Rules checked September 2026.

Step 1: Normalize each input

normalized = (input_float - skin_min) / (skin_max - skin_min)

An AK-47 Redline with a 0.15 float has a range of 0.10 to 0.70: (0.15 - 0.10) / (0.70 - 0.10) = 0.083

A skin at its minimum possible float always normalizes to 0. A skin at its maximum normalizes to 1.

Step 2: Average all 10 normalized values

avg_normalized = sum(all_normalized) / 10

If all 10 inputs normalize to 0.083, the average is 0.083.

Step 3: Map to output range

output_float = output_min + avg_normalized × (output_max - output_min)

If the output skin has a range of 0.00 to 0.50: 0.00 + 0.083 × 0.50 = 0.042 → Factory New

What changed in October 2025

Before the update, the formula assumed a global 0–1 range for all skins. A 0.15 float was treated as 0.15 regardless of the skin's actual range.

After the update, each skin is normalized against its own min/max. This means a "low float for this skin" (like 0.15 on a Redline with 0.10 minimum) gets properly recognized as being near the floor.

The practical result: trade-ups with skins at their minimum floats now reliably produce lower-float outputs than before.

How odds work (collection weighting)

The probability of each output skin is not uniform. It's weighted by how many inputs came from each collection.

Formula:

P(collection) = inputs_from_collection / total_inputs
P(specific_skin) = P(collection) / skins_at_target_rarity_in_collection

Example:

  • 7 inputs from The Huntsman Collection
  • 3 inputs from The Breakout Collection
  • Huntsman has 2 Restricted skins, Breakout has 3 Restricted skins

Odds:

  • Each Huntsman skin: 7/10 ÷ 2 = 35%
  • Each Breakout skin: 3/10 ÷ 3 = 10%

To maximize odds of a specific output, stack inputs from the collection that contains it.

StatTrak and Souvenir inputs

All inputs in a contract must share the same StatTrak™ status. Ten StatTrak™ inputs produce a StatTrak™ output.

Since the May 22, 2026 update, Souvenir skins can go into a contract alongside normal-quality skins. Valve's patch note says all Souvenir attributes are removed and the result is a normal-quality item one rarity higher. Souvenir stickers don't carry over, so price a Souvenir input at what you give up, not at what the output gains.

When trade-ups are profitable

A trade-up is profitable when expected value (EV) is positive:

EV = Σ(probability × output_price) - total_input_cost

Positive EV means that if you ran this exact trade-up many times, you'd profit on average. But individual results vary. A 10% chance of a $50 skin means most contracts won't hit it.

Conditions that tend to produce positive EV:

  • Cheap inputs from a collection with an expensive next-tier skin
  • Stacking 10/10 from one collection to guarantee the output pool
  • Finding skins where the market hasn't priced in the trade-up math yet

Common mistakes

Not checking the output pool. Mixing collections dilutes your odds. Always check what skins exist at the next rarity tier in each collection you're using.

Ignoring float impact on value. A Classified skin at 0.04 (Factory New) might be worth 3× more than the same skin at 0.20 (Field-Tested). The predicted float matters for EV calculation.

Using outdated calculators. Pre-October 2025 tools use the old formula. If the calculator doesn't normalize per-skin, the float prediction will be wrong.

Knife trade-ups

Since the October 22, 2025 update, you can trade up 5 Covert skins to an Extraordinary item. Five regular Covert inputs can produce a regular knife or gloves item from a collection represented by the inputs. Five StatTrak™ Covert inputs produce a StatTrak™ knife from one of those collections, so StatTrak™ contracts can't produce gloves. The exact output pool depends on the collections you submit, so check the input set rather than assuming every knife and glove is eligible.

Knife trade-ups are essentially gambling with extra steps. The math says EV is almost always negative. Some people do it for content or the thrill. If you want to know your exact odds, run it through the CS2 trade-up calculator.

Try the calculator

The trade-up calculator implements the exact formula above. Select your 10 inputs, see the predicted float for each possible output, check the probability distribution, and enter prices to calculate EV. Everything runs in your browser.

While you are optimizing your setup, check your DPI converter settings and run a sensitivity converter if you switch between CS2 and other titles. Small differences in mouse speed compound over hundreds of rounds.

Common questions

Are CS2 trade-up floats random?
No. The output float is deterministic, calculated from the average normalized float of your 10 inputs mapped onto the output skin's float range.
Can you get Factory New from Field-Tested inputs?
Yes, if the output skin has a low minimum float and your inputs normalize to a low average. The formula maps normalized values to the output range, so low-float inputs can produce FN outputs on skins with a 0.00 minimum.

Topics: CS2, trade-up, float, skins

Check your setup.

Free browser tools for hardware checks, game settings, and performance testing.

Browse tools