← Back to Blog

CS2 Trade-Up Float Formula Explained — How Adjusted Floats Actually Work

TradeUpBot Team||7 min read

Float values are the entire game in trade-up contracts. Two Factory New skins at $10 each can have completely different trade-up value depending on their exact float. Understanding this is the difference between consistent profits and random losses.

Float Values Explained

Every CS2 skin has a float value between 0 and 1 that determines its visual wear. Lower float means less wear. The float is set permanently when the skin is unboxed or dropped — it never changes.

But not every skin uses the full 0-1 range. Each skin has a defined minimum and maximum float. An AK-47 | Redline has a range of 0.10 to 0.70 — it can never be Factory New or Battle-Scarred. A Desert Eagle | Blaze ranges from 0.00 to 0.08 — it can only be Factory New or Minimal Wear.

These float ranges matter enormously for trade-ups because the output float calculation uses the output skin's range, not your inputs' ranges.

The Adjusted Float Formula

When calculating the output float, the game first "normalizes" each input float to a 0-1 scale relative to that input skin's float range. This is the adjusted float:

adjusted = (float - min_float) / (max_float - min_float)

For a skin with range 0.00-1.00 and float 0.05, the adjusted float is simply 0.05. But for a skin with range 0.00-0.08 and float 0.05, the adjusted float is 0.05/0.08 = 0.625. That same 0.05 float represents very different things depending on the skin's range.

The game averages all 10 adjusted floats, then maps the result back to the output skin's range:

output_float = (avg_adjusted * (out_max - out_min)) + out_min

This two-step normalization is why the same input skins can produce wildly different output floats depending on which output skin you're targeting. And it's why some input skins are far more valuable for trade-ups than others, even at the same condition and price.

Why Different Skins With the Same Condition Have Different Trade-Up Value

Take two Factory New skins, both at float 0.03, both costing $5. Skin A has a float range of 0.00 to 1.00. Skin B has a float range of 0.00 to 0.08.

Skin A's adjusted float: 0.03 / 1.00 = 0.03
Skin B's adjusted float: 0.03 / 0.08 = 0.375

Skin A contributes a very low adjusted float to the average — great for getting a Factory New output. Skin B contributes a much higher adjusted float — it's pulling the output toward Minimal Wear or worse, despite being Factory New itself.

This is counterintuitive. You'd think a Factory New input always helps produce a Factory New output. It doesn't. A Factory New skin with a narrow float range (like 0.00-0.08) has a high adjusted float relative to its range and will push the output float higher than you'd expect.

The best trade-up inputs are skins with wide float ranges and low actual floats. A skin with range 0.00-1.00 and float 0.01 has an adjusted float of just 0.01. That's pulling the output hard toward the minimum.

Condition Boundaries: Where the Money Is

The five wear conditions have specific float boundaries:

ConditionFloat Range
Factory New (FN)0.00 - 0.07
Minimal Wear (MW)0.07 - 0.15
Field-Tested (FT)0.15 - 0.38
Well-Worn (WW)0.38 - 0.45
Battle-Scarred (BS)0.45 - 1.00

The price jump at each boundary is where trade-up profits come from. A skin at float 0.0699 (Factory New) vs 0.0701 (Minimal Wear) — the visual difference is literally invisible. But the price difference can be massive. On popular skins, Factory New can be worth 2x, 5x, or even 10x the Minimal Wear price.

The FN/MW boundary at 0.07 is the most profitable one. The MW/FT boundary at 0.15 is the second most important. The FT/WW and WW/BS boundaries matter less because the price jumps are usually smaller.

Float Targeting Strategies

Given the formula, you work backward from the output float you want. If you need the output under 0.07 for Factory New, you calculate what average adjusted float is required, then find inputs that achieve it.

For an output skin with range 0.00-1.00, you need avg_adjusted under 0.07. For a skin with range 0.00-0.50, you need avg_adjusted under 0.14 (because 0.14 * 0.50 = 0.07). The narrower the output skin's range, the more forgiving the trade-up is.

The best targets for profitable trade-ups are output skins where:

  • The Factory New version is worth significantly more than Minimal Wear
  • The output skin's float range starts at or near 0.00
  • Cheap input skins with wide float ranges exist in the same collection or compatible collections

TradeUpBot's discovery engine tests 45+ float targets per combination, densely clustered around condition boundaries. Instead of checking one float and hoping for the best, it finds the exact crossing point where an output flips from one condition to another. This is how it identifies opportunities that manual calculations miss.

Practical Considerations

You need exact floats, not conditions. Two "Factory New" skins can have floats of 0.001 and 0.069. Their trade-up value is completely different. Never select inputs based on condition alone — always check the exact float value.

Mixed collections add outcome variance. When your inputs span multiple collections, you're introducing randomness in which output skin you receive. Each possible output may have different float ranges, meaning the same average adjusted float produces different output floats (and different conditions) depending on which skin you get. Plan for every possible outcome, not just the best one.

Small float differences in inputs compound. Replacing one input skin with a float 0.02 lower reduces the average adjusted float by 0.002 (in a 10-input trade-up). That might not sound like much, but when you're right at the 0.07 boundary, 0.002 is the difference between FN and MW — and potentially hundreds of dollars in output value.

Check input float ranges before buying. A "cheap" input that looks like a great deal might have a narrow float range that gives it a high adjusted float, dragging your output toward a worse condition. Always calculate the adjusted float, not just the raw float.