How to find a profitable trade-up contract: step-by-step | CS2Price
CS2Price CS2Price

CS2PriceBlogTrade-up contracts

Category: Trade-up contracts

How to find a profitable trade-up contract: step-by-step

CS2Price · 2026-07-22 · 6 min read · 82 views · 💬 1 ·

Как найти выгодный trade-up контракт: пошаговый гайд

A trade-up contract is the only CS2 mechanic that turns 10 skins of one rarity into a single skin of the next rarity up. The game picks the outcome at random, but the odds and prices are known in advance — so a contract can be calculated before you press the button. Below: exactly how, which numbers actually matter, and a live example priced on our current data.

How the game picks the outcome

Each input skin brings into the draw every next-rarity skin from its own collection. All resulting tickets are equally likely. So the chance of a specific outcome is the number of your inputs from its collection divided by the total ticket count: P = countC / Σ (counti × Ki), where K is how many next-rarity skins collection i has. If all ten inputs come from one collection with two outcomes, each drops at 50%.

This is where half the guides get it wrong. Before the 18 October 2019 patch the rule was "collection first, then a skin inside it": (count/10) × (1/K). For a single collection, and for mixes where collections have the same number of outcomes, both formulas agree — which is why the error goes unnoticed for years. But take a 1+9 mix where the first collection has 2 outcomes and the second has 5: the old formula promises 5% per outcome from the first, while the real chance is 2/47, about 4.3%. On an expensive target that gap matters.

The result float is computed, not rolled

The second source of confusion is the output wear. It isn't random. Each input is first normalised on its own float range: (float − min) / (max − min). The ten resulting numbers are averaged, and the average is stretched onto the range of the skin that dropped: floatout = avgNorm × (max − min) + min.

The practical takeaway matters more than the formula: each input is normalised separately. A skin with a 0–0.5 range at float 0.25 gives a normalised 0.5 — exactly the same as a 0–1 skin at float 0.5. So "a cheap input with a small number on the tag" and "an input that pulls the average down" are not the same thing, and comparing inputs by raw float is meaningless.

Where the profit comes from

Contract profit = (expected value of the output) − (cost of the 10 inputs). Expected value = the sum over outcomes of price × probability. A detail usually skipped: the outcome price must be taken net, minus the fee of the marketplace you'll sell on. Our calculation assumes 5% by default — on markets charging 12–13% a paper-positive contract easily lands at zero.

The four numbers that describe a contract

EV alone isn't enough: it tells you the long-run average and nothing about a single spin. That's why every contract card carries three more numbers next to it.

A live example: a plus-EV contract

Take The Dreams & Nightmares collection. Its Mil-Spec skins cost pennies — here are two of the cheapest inputs, priced live from our database across all markets:

SCAR-20 | Poultrygeist (Field-Tested)
SCAR-20 | Poultrygeist (Field-Tested) — from $0.04
SCAR-20 | Poultrygeist (Field-Tested) — compare prices across all markets
Five-SeveN | Scrawl (Field-Tested)
Five-SeveN | Scrawl (Field-Tested) — from $0.05
Five-SeveN | Scrawl (Field-Tested) — compare prices across all markets

Ten such inputs cost a few dozen roubles, while the outcomes are Restricted skins from the same collection, each worth noticeably more than the whole basket. I deliberately avoid writing the exact figures in prose: they change daily, and the blocks above and the button below show current ones. The point of the example is its structure: even the worst outcome beats the inputs — that's a guaranteed-profit contract.

Build the contract in one click

No manual math needed — press the button below: the constructor assembles ten Dreams & Nightmares inputs and shows every outcome, its odds, EV and profit chance on live prices. The constructor is a club section; what's free and what isn't is laid out in the step-by-step contract guide with screenshots.

M4A1-S | Night Terror (Field-Tested)
Trade-up contract → M4A1-S | Night Terror (Field-Tested)
open in the constructor

Where to start looking

The easiest entry point is a collection: look at which Mil-Specs are cheap and which Restricted outcomes are expensive. Collection pages are open to everyone and list every item by rarity with a price per wear — convenient for spotting the skew by eye. Here's the collection from the example above:

Collection The Dreams & Nightmares CollectionThe Dreams & Nightmares Collection — all collection skins and prices

Going through 110 collections by hand is an evening's work, so the engine does it: it recalculates every possible build on current prices and keeps the result in the database. Right now that's about 1,600 contracts, roughly 160 of them with a positive worst outcome. The top of the list is on the public profitable contracts page; the full feed with filters and sorting is in the club.

Three mistakes that cost money

After that it's practice: work through collections, catch price skews, build a low normalised float. The engine does the math, and the bell tells you when an input you need suddenly got cheaper.

FAQ

How many skins does a contract need?
Ten, all of the same rarity, and either all regular or all StatTrak. Mixing regular and ST in one contract is not allowed, nor are items of different rarities.
Can I build a contract from different collections?
Yes, and it is often more profitable. Every input adds its collection's outcomes to the draw, so mixing changes both the odds and the set of possible results. Such builds are tagged MIX (two collections) or PORTFOLIO (several).
How do I know the float of the result?
Normalize each input within its own range, average the ten numbers and stretch the average onto the outcome's range. The builder does this automatically and shows the average normalized float as the AVGNORM line — it tells you at a glance which wear the output lands in.
Why is a contract that was profitable yesterday losing today?
Because someone bought the cheap inputs or listed the outcome cheaper. Contracts are not a static list but a snapshot of the market: our database recomputes them at current prices, and they constantly swap places.
What does a "guaranteed" contract mean?
That the worst possible outcome still sells for more than the inputs cost. It is a state of prices at computation time, not a promise: while you are buying the inputs a seller can pull a listing and the outcome price can slide. Recompute before you buy.
Does the order I put the skins in matter?
No. Only the collection makeup and the average normalized float matter. Slot order, seed and the patterns on the inputs have no effect on the result.
Profitable contracts now →Build your own contract →
C CS2Price
articles on site: 13
Share: Telegram

Comments (1)

Lorius
Гарант, это конечно интересно, ну вот у вас увидел гаранты которые +1000 рублей минимум дают, такие нужно людям давать!) А тут мелкие
0