Seen, or worked out
A figure is exact when it is read straight off auction house scans: what is listed, at what price, and how that price moved between scans. It is estimated when it has to be worked out, because no feed reports individual sales: sales per day, traded value, sell-through and days of supply.
The site draws the difference the same way everywhere. Exact figures sit in a solid frame in plain ink. Estimated figures sit in a dashed frame, start with ≈ and carry their 95% range, the sample behind them and a confidence tier. A figure an edition cannot support says so in words, and is never shown as zero.
Seen on the auction house
- Listed now
- 46 units
- 46 listings
- Market value
- 58g 40s 0c
- Price change
- -2.1% 24 hours+6.8% 7 days
- Realm against region
- -4.1% against the region median
Worked out from the scans
- Est. sold per day
- 12
- 6 to 21 a day, at 95%
- Medium thin sample
- Est. sell-through
- 42%
- 18% to 67%, at 95%
- Medium thin sample
- Est. days of supply
- 3.8
- 2.2 to 7.4 days, at 95%
- Medium thin sample
Where each edition’s numbers come from
WoW Forever prices come from players’ own auction house scans, which arrive as beta players scan: the Companion’s in-game addon reads the auction house and its desktop helper uploads the scan, so every item carries the age of its own latest scan. Retail prices come from Blizzard’s auction house API, collected hourly. TBC Anniversary, MoP Classic and Season of Discovery prices come only from TradeSkillMaster: TBC Anniversary hourly, Season of Discovery about twice a day and MoP Classic daily.
A slower feed is not a worse feed, but it limits what can be shown honestly. The table shows what each edition’s feed supports.
| Figure | WoW Forever (Beta) | Retail | Mists of Pandaria Classic | TBC Anniversary | Season of Discovery |
|---|---|---|---|---|---|
| Source and cadence | Player scans, no fixed schedule | Blizzard, hourly | TradeSkillMaster, daily | TradeSkillMaster, hourly | TradeSkillMaster, about twice a day |
| Listed now, market value | Exact | Exact | Exact | Exact | Exact |
| Price changes | Exact, since the last scan | Exact, from 1 h | Exact, from 1 day | Exact, from 1 h | Exact, from 12 h |
| Candles | A line instead | Exact | A line instead | Exact | A line instead |
| Est. sold per day | Not measured | Estimated | Estimated | Estimated | Not measured |
| Est. sell-through | Not measured | Not measured | Estimated | Estimated | Not measured |
| Est. days of supply | Not measured | Estimated | Estimated | Estimated | Not measured |
| Depth and bulk cost | Latest scan only | Exact | Not measured | Not measured | Not measured |
| Realm against region | Not measured | Exact | Exact | Exact | Exact |
| Horde against Alliance | Exact | Not measured | Not measured | Exact | Exact |
| Trading hours | Not measured | Exact | Not measured | Exact | Not measured |
Market value describes what is listed
On Retail and WoW Forever, market value is the average price per unit of everything listed at a scan, weighted by quantity, once outlying listings are left out: on Retail those priced far above the item’s median price, on WoW Forever those far above or far below it, whenever there are enough listings to judge. On TBC Anniversary, MoP Classic and Season of Discovery it is TradeSkillMaster’s own market value, stored as TradeSkillMaster publishes it.
Either way it describes what sellers are asking, not what buyers paid. Where a figure is a traded price, its label says so.
market value on Retail and WoW Forever = sum of (price per unit × quantity) ÷ sum of quantity
- price per unit
- each listing’s price per unit, once outlying listings are left out
- quantity
- the units in that listing
The price we compare
Every price change, percentile, realm or faction comparison, swing and candle uses one number: the lowest price per unit listed at each scan (the lowest buyout per unit, or the commodity unit price). So those figures all describe the same price.
Price changes
A price change is exact: the current lowest price per unit against the one seen a window earlier. The earlier scan must lie within a quarter of the window of that moment, so a 24-hour change always compares prices 18 to 30 hours apart. If it lies more than a tenth of the window away, the change is marked with a collection gap.
With no scan close enough, the change is not shown: “feed too slow” when the scans are spaced too far apart for the window, and “no data” otherwise. A market whose newest scan is older than twice its freshness window has no current price, so none of its changes is shown. The steps follow each edition’s feed; on WoW Forever the first step runs from the item’s previous scan and names that scan’s age.
| Edition | Steps |
|---|---|
| WoW Forever (Beta) | since the last scan, 7 days, and 30 days |
| Retail | 1 hour, 24 hours, 7 days, and 30 days |
| Mists of Pandaria Classic | 24 hours, 7 days, and 30 days |
| TBC Anniversary | 1 hour, 24 hours, 7 days, and 30 days |
| Season of Discovery | 12 hours, 24 hours, 7 days, and 30 days |
What is listed, and where today’s price stands
These figures are read straight off the scans. None needs a model; each needs enough history or enough realms, and says so when it has too little. The last column names the editions whose feed supports each one.
| Figure | How it is computed | Editions |
|---|---|---|
| Listed value | market value × the quantity listed now | Every edition |
| Against its own history | where today’s price sits among the item’s daily closing prices over the last 90 days, today left out and ties counted half; needs 14 closes, thin below 30 | Every edition |
| Realm against region | this realm’s price against the median of the region’s realms, each faction’s house on its own where factions trade apart; needs 5 realms, thin below 10 | Retail, Mists of Pandaria Classic, TBC Anniversary, and Season of Discovery |
| Horde against Alliance | the Horde price against the Alliance price, on the same realm, or across the region when no realm is chosen | WoW Forever (Beta), TBC Anniversary, and Season of Discovery |
| Daily swing | the standard deviation of the day-to-day change in the log of the closing price over the last 30 completed days, taken only between consecutive days that both have a close; needs 10 changes, thin below 20 | Every edition |
Est. sold per day is a ceiling
No feed reports individual sales. On Retail we count, over the last 14 days, the units in listings that disappeared between two scans before they could have expired, plus the commodity units bought out of listings still standing, and divide by the days those scans cover, not the calendar window. With fewer than three measuring scans, or under one day of coverage, the figure is not shown.
Cancelled listings are counted as sold, so the figure is a ceiling. Until enough labelled sales exist to measure the cancelled share, the low end of the range assumes up to 10% of the counted units were cancellations. An item whose every listing left between two scans records nothing that cycle; on one measured realm that was 1.05% of all departures, and the high end of the range carries it. The range is the exact Poisson range of the sale events, scaled to units.
On Retail, when the scans behind the figure are spaced on average more than twice the feed’s promised interval apart, the figure is marked “feed too slow”: whatever was posted and bought between two scans is missed.
On TBC Anniversary and MoP Classic the figure starts from TradeSkillMaster’s regional sales rate, which TradeSkillMaster defines as the units sold per auction house per day, averaged over the region. This house’s figure is that rate scaled by its listed quantity against the average house’s; that split is an estimate whose error is not measured. The range is the Poisson range of one day of this house’s sales.
est. sold per day on Retail = (units gone before they could expire + commodity units bought from standing listings) ÷ days the scans cover
- units gone
- units in listings that disappeared between two consecutive scans before their duration ran out
- commodity units bought
- units bought out of a commodity listing that is still listed
- days the scans cover
- the span the scans cover, not the calendar window
Est. traded value per day
Est. traded value per day is est. sold per day times a price per unit. On Retail that price is the median of the lowest listed price per unit across the same 14 days of scans: buyers take the cheapest listing first, and no feed reports the price a sale actually happened at. On TBC Anniversary and MoP Classic it is TradeSkillMaster’s regional average sale price.
est. traded value per day = est. sold per day × price per unit
- est. sold per day
- the ceiling above, with its range
- price per unit
- on Retail, the median lowest listed price over 14 days; on TBC Anniversary and MoP Classic, TradeSkillMaster’s regional average sale price
Sell-through is a range, never a point
Est. sell-through (TBC Anniversary and MoP Classic only) is TradeSkillMaster’s share of postings that sold, published as a Wilson 95% range with its centre as the figure. Five sales out of five postings therefore read 78%, not 100%.
TradeSkillMaster publishes no sample size or averaging window, so we use the smallest sample the share can rest on: one average auction house’s sold postings in one day (its units sold per day divided by the region’s average listing size). That can only make the range wider than the truth. Below five sold postings, sell-through is not shown. Retail, Season of Discovery and WoW Forever show none.
centre of the range = (sold + 1.92) ÷ (postings + 3.84)
- sold
- the postings below × TradeSkillMaster’s share of postings that sold
- postings
- one average auction house’s sold postings in one day: the smallest sample the share can rest on
- 1.92 and 3.84
- half of, and all of, 1.96 squared: the 95% level
Days of supply
Days of supply is the quantity listed now divided by est. sold per day, with its range turned around from the sales range: the most sales give the fewest days. It is not shown when the low end of the sales range is zero, and it is absent wherever sales are.
days of supply = listed now ÷ est. sold per day
- listed now
- the units listed at the latest scan (exact)
- est. sold per day
- the ceiling above, with its range
Where no sales are measured
On Season of Discovery, TradeSkillMaster publishes no sale statistics; on WoW Forever, a scan records what is listed, not what sold. On both, est. sold per day, traded value, sell-through and days of supply are absent: each item page says so figure by figure, and the third Markets board ranks by listed value instead.
Candles
On Retail and TBC Anniversary a candle is the first, highest, lowest and last of the lowest listed prices per unit inside each hour or day, with the average quantity listed across that bucket’s scans beside it.
MoP Classic and Season of Discovery draw no candles: with so few scans in each bucket, a candle would open, close, peak and bottom at the same price, so their prices are drawn as a line. WoW Forever draws none either, because its scans come at irregular times.
Depth and the cost of buying in bulk
Where a scan holds every listing at every price, we show how many units sit within 5%, 10% and 25% of the lowest price, and what buying a given quantity would really cost, cheapest first. That is Retail, and WoW Forever for its latest scan only. TradeSkillMaster publishes no listing ladder, so the three classic editions show no depth.
| Price per unit | Listed | Bought |
|---|---|---|
| 12g 40s 0c | 120 | 120 |
| 12g 55s 0c | 60 | 60 |
| 13g 10s 0c | 90 | 20 |
| 13g 80s 0c | 150 | 0 |
| Total for 200 | 2,503g 0s 0c | |
| Average per unit | 12g 51s 50c | |
| Over the lowest price | +0.9% | |
Both factions, and the whole region
Where Horde and Alliance trade in separate auction houses and no faction is chosen, the page shows the two houses side by side. Their figures are never averaged together; only Horde against Alliance describes both at once.
With no realm chosen, WoW Forever shows its region’s market and a Retail commodity its region-wide market. Otherwise the page adds up what every realm lists now, from each realm’s newest scan (each faction’s house on its own where factions trade apart), with Horde against Alliance across the region where the edition has it, and TradeSkillMaster’s regional sales on TBC Anniversary and MoP Classic, scaled to the houses listing the item. Price changes, the percentile, the day-to-day swing, realm against region and candles describe one market’s own prices, so they are not shown for the whole region: choose a realm to see them. The region’s listed figures are marked stale when the oldest realm scan behind them is older than the freshness window.
Confidence tiers
Every estimate carries a tier: high, medium or low, drawn as a stack of three, two or one coins beside the word. A figure starts at high and can only fall, and each fall names its reason. A figure seen on the auction house shows its tier only when something lowered it.
- Thin sample
- fewer observations than the figure needs: under 30 sale events is medium and under 10 is low; fewer than 10 realms; fewer than 30 daily closes; fewer than 20 daily changes; on Markets, a change measured on fewer than half of an item’s markets
- Thin listings
- fewer than 3 listings behind a price; on Markets, no listing at all is low
- One price level
- every listing at one price, on feeds that also report the highest price; on Markets, a single listing, which is low
- Stale source
- the newest scan is older than the edition’s freshness window: 3 hours for hourly feeds, 30 hours for twice-daily ones, 36 hours for daily ones, 7 days for player scans and 36 hours for TradeSkillMaster’s regional file; on Markets, when most of an item’s markets are past it
- Collection gap
- under 80% of the expected scans arrived, or a comparison scan sits more than a tenth of its window off; on Markets, when most of an item’s comparisons are off
- Feed too slow
- the scans behind a sales estimate are spaced more than twice the promised interval apart; on Markets, a one-day change on a feed that reports once a day or less often, or on no schedule, which is low
- High
- Medium
- Low
When a figure is not measured
A figure that cannot be measured is shown in words, never as zero, with one of four reasons:
- Not on this edition, or not at this scope: the whole region, or both factions at once.
- Too few observations.
- Feed too slow: the scans are spaced too far apart for the figure.
- No data in this window: the edition’s data is not in place yet, or the market has no recent scan.
The note on a top mover
A top mover may carry a short note naming the likeliest story behind its move, such as “Supply shock”. It comes from a separate classifier that reads the same measured evidence as the numbers. A note appears only when the classifier is confident enough and no measured fact contradicts it; otherwise there is none. It never changes a figure or its tier.
How Markets ranks items
Gainers and losers are ranked by the price change over the window you pick: 24 hours, 7 days or 30 days. A move above +200% or below −95% is left off those two boards, because at that size it is almost always a comparison with a stray scan; the item still counts in breadth. The third board ranks by est. traded value per day where sales are measured, and by listed value everywhere else, Season of Discovery and WoW Forever included; its title says which.
With no faction chosen, both auction houses enter every item’s ranking, and across several markets an item’s price and change are the median of its markets’, never an average. The confidence filter drops rows below the tier you choose, so thin markets can be left out entirely. Breadth counts, for each item class, how many items rose and how many fell; a class needs at least ten items with data before its bar is drawn. Relative strength is an item’s change minus its class’s overall change (the geometric mean of the class’s price moves), in percentage points. A board row’s price is the latest daily close for the 24-hour and 30-day windows, and the latest market value for 7 days (the lowest listed price where there is none).
| Board | Ranked by | Where |
|---|---|---|
| Gainers | price change over the window, highest first | every edition |
| Losers | price change over the window, lowest first | every edition |
| Most traded | est. traded value per day | where sales are measured |
| Most listed | listed value: market value (or the lowest listed price where there is none) × quantity listed, added up over the item’s markets | everywhere else, Season of Discovery and WoW Forever included |
| Breadth | items rising against items falling, per class | classes with 10 or more items with data |
The week-ago reference
The 7-day change on Markets compares an item’s current price with a reference from a week earlier: the median of its hourly market values in the two days either side of that point. If that median is more than twice, or less than half, the median from then until now, a brief spike is assumed and the longer median is used instead. These medians can be read from compact daily summaries of the hourly values rather than recomputed from every hour; on a measured sample the two methods differed by at most 0.1%, and the summaries are switched on only after the two have been compared over a full collection cycle.
Crafting profit
The professions pages and the Crafting page in your profile use one formula. Profit is what the craft sells for, less the auction house’s 5% cut and the reagents at their own prices; the margin is that profit as a share of the sale price, the part of each sale you keep.
The cut comes off every completed sale, so a profit without it would count gold your sales never bring in. The deposit is not deducted: it comes back when the item sells. The professions pages count per craft (the crafted item’s price times the number one craft makes), the Crafting page per item made; on a craft that makes one item, the two read the same.
profit = crafted price × units made − auction house cut − reagent cost; margin = profit ÷ (crafted price × units made)
- crafted price
- the crafted item’s price on the chosen market
- units made
- how many items one craft makes
- auction house cut
- 5% of the sale price, rounded to the copper
- reagent cost
- every reagent at its own price
What we do not publish
Some figures look useful and would mislead. We publish none of these:
- Candles on MoP Classic or Season of Discovery: with so few scans in each bucket they would open and close at the same price.
- A volatility figure from each day’s high and low on MoP Classic: with a single scan per day it collapses to nearly nothing and would read as riskless.
- A spread estimate that is undefined on items with a trend, which is most of them.
- A correlation matrix.
- An hour-of-week grid for any edition without hourly scans.
- Seller concentration: no feed carries who is selling.
- A market sale rate as a single number, or a market figure labelled “sold” without “est.”.
