Quant Engine · Prism 2.2 · pricing intelligence for skin markets
Know what a skin is worth before it can be traded.
Quant Engine is a pricing API for skin markets. It returns what an item really sells for, a tested expected change and range across five windows, 7d, 30d, 3m, 6m and 12m, and marks a window informational when it has not passed testing.
A price is a range, not a number Illustration
Tested on the unseen Illustration
9 million+9 million+forecasts tested on data the model had not seen
Five windows: 7d, 30d, 3m, 6m, 12m Illustration
- 7d
- 30d
- 3m
- 6m
- 12m
29,000+29,000+items modelled
- 29,000+items modelled
- Every 24 hoursa fresh dataset
- 10 yearsof Steam sales tested
Why trust it
Every call is tested before you see it.
The method in five steps. Scroll to watch each one drawn.
The engine
Prism 2.2: a multi-model forecasting engine for skin markets.
Prism 2.2 is the current release of the Quant Engine and the engine behind every answer the API gives. It forecasts the expected change and a calibrated range across five windows, 7d, 30d, 3m, 6m and 12m, from 66 market signals, and it ships a window only after it has beaten a plain “no change” guess on dates it never saw.
The record behind every window
Weekly walk-forward test dates, forecasts made on data the models had not seen, and how well the engine’s ranking of items matched what then happened (rank correlation, IC). Figures are for weapon skins, the largest item group, from the published model card.
| Window | Weekly test dates | Forecasts tested | Rank correlation (IC) | Significance (t) |
|---|---|---|---|---|
| 7d 7 days | 151 | 1,300,000+ | 0.19 | 34 |
| 30d 30 days | 147 | 1,290,000+ | 0.20 | 12 |
| 3m 3 months | 139 | 1,230,000+ | 0.25 | 6 |
| 6m 6 months | 126 | 1,110,000+ | 0.26 | 3 |
| 12m 12 months | 100 | 860,000+ | 0.30 | 3 |
Every figure is rounded down. Each of the 14 item groups is tested on its own; across the 40 group and window pairs that passed, rank correlation runs from 0.12 to 0.40. Test dates overlap for the longer windows, so significance is counted on independent dates only.
What it does
Five forecast windows
Expected change and a likely range for 7d, 30d, 3m, 6m and 12m on every item the engine covers, in one call.
A contest of models
A “no change” baseline, group momentum, ridge regression and two sets of gradient-boosted trees compete for each item group and window.
Purged walk-forward testing
Half-year folds since 2020 with training stopped one full window before each test, then scored on weekly test dates the models never saw.
Measured uncertainty
Ranges come from conformal calibration on out-of-sample errors, so a range is measured on past misses, not assumed from a formula.
Specialist per item group
Knives, gloves, stickers, patches, graffiti, capsules, cases and more each get their own model per window, because they do not trade alike.
Promotion by evidence
A model goes live for a group and window only when it beats “no change” with a ranking skill that clears a significance bar. Everything else is marked informational.
A safety gate
Every new run is compared with the live one before it publishes. A run that is worse is held back for review instead of replacing it.
Honest by construction
Each answer carries its window, range, weekly test dates, forecasts tested and a record tier, so you can show a customer exactly what stands behind a number.
A wide data field
66 signals per item per day, built from about ten years of Steam sales across 29,600 items, all computed without looking ahead. They fall into eight families.
Momentum and trend
Returns from a week to two years, trend slope and fit, distance from highs and lows, cycle behaviour.
Deviation from normal
How far an item sits from its own one, three and twelve month norms.
Volatility and risk shape
Volatility, drawdown, skew and risk-adjusted return measures over the last year.
Liquidity
Volume, trade frequency, gaps between trades and how much a thin market moves price.
Market and segment context
Market-wide moves, the item’s segment, how it co-moves with its group, and what is specific to it.
Standing among peers
Where the item ranks inside its group on momentum and deviation today.
Calendar and events
Major tournament cycles, qualifiers, Steam sale seasons and each team and player’s event history.
Item identity
Wear, StatTrak, Souvenir, rarity, team and player tags, age and price level.
How it is built
A game-agnostic core with each game as its own pack: Counter-Strike 2 today, Dota 2 planned. The same seven stages run on every training cycle.
Ingest
Daily sales and volume for every item, cleaned of one-off bad prints.
Signals
66 signals per item per day, built with strict no-look-ahead rules.
Model contest
Five contenders per item group and window, from the “no change” baseline up to gradient-boosted trees.
Walk-forward test
Purged half-year folds since 2020, scored on weekly dates the models never saw.
Promotion
A model ships for a group and window only if it clears the bar for ranking skill, significance and error against “no change”.
Calibrated ranges
P10 to P90 ranges calibrated by conformal prediction on out-of-sample errors.
Gate and serve
A worse run is held back. A passing run publishes its model card and is served from memory, so lookups are instant.
The Exchange
A ready-made market page for your skin site.
The Exchange is our daily market page, ready to drop into your site. It runs on our API, takes on your theme, leads with each signed-in user’s own items when you pass them, and gives everyone else the daily edition.
- Drop-in
Runs on our API
One script tag and one div. The page reads the daily edition and values inventories through the same API you would use yourself, with a key that is safe to put in a web page because it only works from the addresses you register.
- Themes
Fits your site
Light and dark editions, three paper sizes (Pocket, Daily and Weekend), your accent colour and your currency. It draws inside its own sealed box, so your styles cannot break it and it cannot leak into yours.
- Your users’ inventory
Their items first
Pass a signed-in user’s item names and quantities from your own records and the page leads with what those items are worth and how they are expected to move. We store nothing: the list goes from the browser to the API and is gone. Everyone else gets the shared daily edition.
- Everything in the paper
Pictures and the Quant Desk
Item pictures with their rarity colour, the market mood and the week’s movers, and a Quant Desk table of expected change and likely range by window with the engine’s record shown as signal bars. One callback opens an item on your own page.
The live demo needs JavaScript. It shows today’s market page: the mood of the week, the biggest movers and the Quant Desk table of expected change and likely range.
Inventory is off in this demo. Scroll inside the frame; the light and dark buttons switch the edition.
On the sandbox and starter plans the Exchange shows a small “Powered by Quant Engine” line, which is required there. Not affiliated with or endorsed by Valve Corporation. Not financial advice.
Who it is for
Built for the sites that price skins for a living.
A skin that just arrived is locked for 7 days on Steam. You still have to price it today. Quant Engine answers that question with real recent sales and a tested range, not a guess.
The problem
Listings are asks, not sales. A held item cannot be sold for 7 days, a thin item can print one wild sale, and a spreadsheet of last week’s prices says nothing about next week.
The answer
A median of real recent sales with its date and sale count, a P10 to P90 range for the days ahead, and a record tier that tells you how far to trust the call. Or an honest “no forecast”.
- First customers
Skin-trading and marketplace sites
Price items that sit in the 7-day trade hold, run spot checks at listing time, and quote a price you can stand behind.
- Batch and audit
Inventory and portfolio tools
Value a whole inventory net of the fee you choose, flag the thin items, and show customers a range instead of a single number.
- Daily feeds
Analytics and research
Pull the daily catalogue and the daily signal feed into your own models, dashboards and reports.
What you get
Instant prices, an endless market, one clean API.
Plain JSON over HTTPS. Every answer comes from our own index, so a price comes back in milliseconds and the whole market can be scrolled without limit. Paths are relative to the base address; the sandbox serves sample data so you can build against it today.
Instant price
The spot price from real sales in milliseconds, with the expected change and likely range across 7d, 30d, 3m, 6m and 12m, and the weekly test record behind each.
GET /item?name=AK-47 | Redline (Field-Tested)Instant search
Prefix matching and autocomplete across the whole catalogue, fast enough to type against.
GET /search?q=ak-47&type=skinEndless market
Filter and scroll the whole market page after page with cursors. Sort by price, change or expected change.
GET /market?minPrice=5&maxPrice=50&category=rifle&minExpectedChange=5Price history
Daily prices and sales for every item, cleaned of one-off bad prints.
GET /history?name=AK-47 | Redline (Field-Tested)&window=365dDaily outlook
Items ranked by expected change over the window you choose, with the context behind each move, as a feed.
GET /signals?horizon=30dMovers
The biggest risers and fallers among items that trade enough to trust.
GET /movers?window=30d&dir=upTrade-up contracts
Trade-up contracts with a positive expected value after fees, priced from real sales.
GET /tradeupsInventory audit
Send an inventory, get the audit back. Stateless: nothing you send is kept.
POST /portfolioOffer check
Put two baskets side by side and see the value gap at spot and, where tested, across each window.
POST /compareWallet exchange rates
Steam wallet exchange rates, so prices can be shown in your customer’s currency.
GET /fxDaily catalogue
The full daily catalogue as one file, for the top plans only.
GET /catalog.jsonTrade-lock risk floor
Coming soonA 7-day and 30-day risk floor for items stuck in a trade lock.
GET /risk
Planned surface. Paths and fields may change before launch.
Try it
One call, everything you need to quote.
Type a skin name, pick it, and we call our real API from your browser: you see the actual response and how long it really took. Until you do, the box shows the shape of an answer, and below it the same answer is explained field by field.
The Try-it box needs JavaScript to call the API. The sample response below shows the same shape.
{
"item": "M4A4 | Spider Lily (Minimal Wear)",
"asOf": "2026-11-02",
"spot": { "price": 16.03, "currency": "USD", "source": "steam_sales_median", "salesCount30d": 412, "thinMarket": false, "isLiveListing": false },
"net": { "price": 13.94, "feeRate": 0.15 },
"contextLabels": ["Half off its peak", "Trades in cycles"],
"horizons": {
"7d": {
"label": "7 days",
"available": true,
"p10": 15.69, "p50": 16.06, "p90": 16.45,
"changePct": 0.2,
"validation": "validated",
"outlook": {
"expectedChangePct": 0.2,
"direction": "flat",
"range": { "lowPct": -2.1, "highPct": 2.6, "lowPrice": 15.69, "highPrice": 16.45, "includesNoChange": true },
"evidence": { "method": "walk_forward", "tested": true, "testedSince": "2020", "testedWeeks": 151, "testedForecasts": "1,300,000+", "rankCorrelation": 0.19, "significance": 34, "scope": "item_group", "tier": "strong" }
},
"summary": "Expected to stay about level over the next 7 days (likely range -2.1% to +2.6%); tested on 151 weekly walk-forward test dates, over 1,300,000+ past forecasts for items of this type since 2020 (rank correlation 0.19)."
},
"182d": {
"label": "6 months",
"available": true,
"p10": 7.16, "p50": 15.97, "p90": 36.37,
"changePct": -0.4,
"validation": "validated",
"outlook": {
"expectedChangePct": -0.4,
"direction": "flat",
"range": { "lowPct": -55.3, "highPct": 126.9, "lowPrice": 7.16, "highPrice": 36.37, "includesNoChange": true },
"evidence": { "method": "walk_forward", "tested": true, "testedSince": "2020", "testedWeeks": 126, "testedForecasts": "1,110,000+", "rankCorrelation": 0.26, "significance": 3, "scope": "item_group", "tier": "solid" }
},
"summary": "Expected to stay about level over the next 6 months (likely range -55.3% to +126.9%); tested on 126 weekly walk-forward test dates, over 1,110,000+ past forecasts for items of this type since 2020 (rank correlation 0.26)."
}
}
}A spot price from real sales
spotThe median of real recent sales, with its as-of date and the number of sales behind it. It is not a live listing and not an ask.The maths, not a call
expectedChangePctFor each of the five windows, 7d, 30d, 3m, 6m and 12m, you get the expected change and the likely range. What to do with it is your decision.How it was tested
evidenceEvery figure says how it was tested: walk-forward since 2020, against thousands of past forecasts for similar items, with a record tier instead of a raw score.Net of the fee you set
netThe net figure uses the fee your own business applies. The engine itself is fee-free; you pass your rate.
Built for production
Boring in the ways that matter.
A small, predictable API surface you can put in front of customers. This is what ships with the first production release.
- At launch
Stable, versioned API
Additive changes only within a version, with long notice before a version is retired.
- At launch
API keys with scopes and quotas
Server-to-server keys, scoped per endpoint family, with quotas by plan.
- At launch
Plain JSON, rate limits
Predictable JSON, per-key rate limits and clear error bodies that say what to fix.
- At launch
A fresh dataset every day
The engine scores once a day; every response carries its as-of date, so you always know how old a number is.
- At launch
Anti-scraping posture
Rate limits, bulk-extraction limits, bot checks and watermarking protect the data you pay for. The daily catalogue is the only bulk file, and it holds the top tiers only.
- At launch
Sandbox key
A free key against sample data, so you can build and test before production keys are issued.
- Planned
Webhooks
Push the daily refresh to your endpoint instead of polling for it.
Design goals, not measured results: fast single-item answers for interactive use, and a daily refresh that finishes before the markets of Europe wake up. We publish measured figures only once we have measured them.
Plans
Start free, grow when you ship.
No price list on the page: the right plan depends on volume and use. Tell us what you are building.
- Free
Sandbox
A key against sample data, for building and testing your integration.
- Sample data
- Same shapes as production
- No card, no commitment
- Production
API
Production keys with quotas by tier. Batch and 7-day views are part of this plan.
- Live daily data
- Scoped keys and quotas
- Quotas by tier: contact us
- Embed
Exchange
The ready-made market page for your site, running on top of the API.
- One script tag and a div
- Light and dark, your colours
- Credit line on the sandbox and starter plans
- Self-hosted
Licence
Run the engine yourself, on your own data and infrastructure.
- Run it in-house
- Your data stays yours
- Terms by agreement: contact us
See it running
Built on the Quant Engine.
is a portfolio tracker and daily market newspaper for Counter-Strike 2 players. Its prices come back instantly and its marketplace scrolls without end, all from the engine through the same kind of API you would use.
- Knife · Factory NewExample
★ Karambit | Doppler
Fallingover 30 days
Strong record - Sniper rifle · Field-TestedExample
AWP | Dragon Lore
Risingover 90 days
Solid record - Rifle · Factory NewExample
M4A4 | Howl
Risingover 6 months
Record building
FAQ
Questions we get asked.
Where does the data come from, and how fresh is it?
From Steam Market sales history, cleaned of one-off bad prints, across ten years. The engine scores once a day and every response carries its as-of date, so you can always see how old a number is.
How are items on the 7-day trade hold priced?
A held item cannot be sold yet, so there is no listing to read. The spot price is the median of real recent sales of that item, and the 7-day-ahead view gives a P10 to P90 range for where it is heading. You decide what to do with it.
What does “no forecast” mean?
It means the engine has no tested call for that item or window, usually because the item trades too thinly or that kind of call did not beat chance in testing. We return an explicit "no forecast" rather than a number we cannot stand behind.
What do you cover?
Counter-Strike 2 today. Dota 2 is planned: the engine is built so a new game is a data pack, not a rewrite, but there is no date yet.
Are you affiliated with Valve, and who is responsible for how it is used?
Not affiliated with or endorsed by Valve Corporation. Counter-Strike, Steam and the Steam logo are trademarks of Valve Corporation. You are responsible for your own use of the data and for following Steam’s terms in your product. Forecasts are information, not financial advice.
What support do you offer?
Email support at [email protected]. Production customers get a named contact; the sandbox is best-effort.
Get API access
Tell us what you are building.
A few lines is plenty. We reply by email, usually within a couple of working days.