XBOT Docs

Pricing algorithms

How a buy price and a sell price are derived from Steam price history, and which filters can veto a purchase.

Every price the bot uses comes from one analysis run over Steam's public price history for that item. The run produces a buy price, a sell price, and a verdict on whether the item may be bought.

Two sides of every price

Steam charges the buyer; the seller receives less. XBOT tracks both:

NameMeaning
Steam priceWhat a buyer pays — the number shown on the Steam page.
Sell priceWhat the seller receives after Steam's fee.
Buy priceWhat the bot offers in a buy order.

The conversion uses a fixed multiplier of 1.15:

steam price = sell price × 1.15
sell price  = steam price ÷ 1.15

The analysis window

  1. Steam's price history is read in the market timezone (America/Phoenix).
  2. Points are bucketed: period = the last Analysis period days ending yesterday, plus week (7 days), month (30 days) and today. Today's trades never enter the pricing window — only the trend filters read them.
  3. The Corridor filter drops points further than corridor % from the bucket average. With 0 nothing is dropped.
  4. If the period bucket is empty after filtering — or Steam returned fewer than four history points — the analysis is skipped: the item keeps its current prices and no error is raised.

Algorithms

All five run on the same window; the group picks one for the buy side and one for the sell side independently. "Daily high/low" means the highest or lowest price a calendar day traded at.

AlgorithmBase priceAnchored to
Maximalmedian of the daily highssell side
Safethe lowest daily highsell side
Averagemean of every trade in the windowsell side
Lowmedian of the daily lowssell side
Buymedian of the daily lowsbuy side

Sell-anchored algorithms take their base price as the Steam price, strip the fee to get the sell price, then subtract the markup to get the buy price:

steam price = base
sell price  = base ÷ 1.15
buy price   = sell price − markup % of sell price

Buy goes the other way — the base price is the buy price, and the sell price is the price that yields the configured margin:

buy price   = base
sell price  = buy price ÷ (1 − markup / 100)
steam price = sell price × 1.15

Low vs Buy

Both read the median of the daily lows. They differ in what that number becomes: Low treats it as the price buyers pay (so your buy order lands a markup below it), Buy treats it as your own bid (so your listing lands a markup above it). Buy is the more aggressive of the two.

The Average algorithm reads the history before the corridor filter, so it is the only mode that ignores Corridor, %.

Scaling

The chosen prices are then scaled by their own shares:

buy price  = buy algorithm price  × (Buy algorithm, %  ÷ 100)
sell price = sell algorithm price × (Sell algorithm, % ÷ 100)

The Steam price is re-derived from the scaled sell price. A share of 0 is treated as 100.

Outbidding

With Outbid the highest buy order enabled, a calculated buy price above the highest existing buy order is pulled down to that order plus one cent — enough to lead the queue, and no more. The option also forces an order-book request on every analysis.

Filters

Filters decide whether the item may be bought. They never change a price, and they never stop selling.

FilterPasses when
Sales per daywindow volume ÷ window days (rounded down) ≥ the configured minimum
Weekly trendtoday's average stays within the rise/drop limits around the 7-day average
Monthly trendtoday's average stays within the rise/drop limits around the 30-day average
Daily trendalways — the comparison is against today's own average
Order book coefficientquantity queued at or above your buy price ≤ daily sales × the coefficient
Position in listingyour Steam sell price lands no deeper than the configured position in the listing queue

A filter set to 0 is disabled. One failing filter is enough to block the purchase; the item is still listed and sold as usual.

Worked example

A group with Safe on both sides, markup 3 %, shares at 100 %, over a 5-day window whose daily highs are 2.30, 2.20, 2.00, 2.45, 2.10:

base (lowest daily high) = 2.00      → Steam price 2.00
sell price               = 2.00 / 1.15 = 1.74
buy price                = 1.74 − 3 % = 1.69

The bot bids 1.69, lists at a Steam price of 2.00, and nets 1.74 per sale before the market moves.

On this page