- We decompose it into sub-trades if the trade has multiple items and the trade has some text describing the prices of each item
- We attempt to read the trade text to correct the asking price. For example someone could have created a trade selling 1 bud for 1 key since outpost can only take 8 items. However if in the text message, we can see "27 keys" then we correct the number of keys to be 27.
- We annotate the trade items with backpack.tf prices
- A trade for which the item being traded has a higher value than the asking price is marked as a good deal

- The creator of the trade entered incorrect values himself
- The artificial intelligence (a.i.) that reads the text misunderstood it and corrected the amount with wrong numbers. The a.i. is not perfect since it's extremely hard to read human written text, we try to improve it every day but it's never ending battle, so if you have suggestions about trades you find with incorrect amounts, by all means contacts us through Help -> Bug report, and give as many details as you can.

However we monitor when an item leaves a user's inventory, so trades can be closed automatically without adding traffic to trading websites and are shown as closed even if the user forgot to close his trade. One situation we don't detect is if a user changes his mind and decides to close his trade and keep his item, in this case the trade will still show as open.

- First we determine what items were removed and what items were added
- Second we clean the trade: in the added items, we check where they came from (drop, purchase, etc...) and eliminate the ones we know for sure are not coming from a trade
- Third, we store the trade to be processed by the mathematical model

- The trades from the last 24 hours
- If there are not enough trades for a particular item in the last 24 hours, we use trades including this item for last 48 hours, or 72 hours and so on until there are a statistically high enough number of trades.

There are obviously more during week-ends, school vacations and special steam events.

For the sake of simplicity, let's just look at a basic example:

a, b, c = 3 different tf2 items for which we want to know the refined value. r = refined = 1, that's our base currencyLet's say we found the following trades

2*a + b was exchanged for c + r b + c was exchanged for 5*a a + c + 2*r was exchanged for b + 4*rSince r = 1, we can find the equilibrium by rewriting the trades in the following equation:

2*a + b - c = 1 -5*a + b + c = 0 a - b + c = 2Solving this linear system of equations, we find that:

a = 1 b = 2 c = 3This example was simple since we had as many trades as items, so we could find a perfect equilibrium.

Important Note that buying/selling has no meaning, we could change all the signs (by multiplying each line by -1) and the solution would be exactly the same. This holds true in the more advanced example.

Important Note that in reality there's a factor of 200 times (or more) trades than items for statistical significance.

For the sake of simplicity, we'll solve this problem on L2 (e.g. not using L1 median mathematics, for that refer to the article linked above).

2*a + b was exchanged for c + r b + c was exchanged for 5*a a + c + 2*r was exchanged for b + 4*r a + b + c was exchanged for 6.33*rWe have an overdetermined system, and since we're solving on L2, the goal now is to find the solution to:

Solve a, b, c that minimizes eSolving this system produces the values:_{0}+ e_{1}+ e_{2}+ e_{3}for: (2*a + b - c - 1)^{2}= e_{0}(-5*a + b + c - 0)^{2}= e_{1}(a - b + c - 2)^{2}= e_{2}(a + b + c - 6.33)^{2}= e_{3}

a = 1.0440 b = 2.1155 c = 3.1375Important This example demonstrates overdetermined solving on L2 for the sake of simplicity. In reality we use L1, refer to this article for full details.

- L2 norm is very easy to solve, however it's very sensitive to outliers (e.g. trades where the difference of value is huge whatever the reason, be it due to scamming, alt-account transfer, giving to friends, or any other reason).
- The best norm of all be would L0, maximizing the number of 0-equations (equilibriums), however L0 is not computable in polynomial time (NP-complete problem).
- L1 is the next best norm, it can be computed efficiently with recent advances in mathematics and it's much much less sensitive to outliers than L2.

Example:

median(2, 3, 10, 4, 3, 3.5, 2.5) = 3 average(2, 3, 10, 4, 3, 3.5, 2.5) = 4It's easy to see that the big outlier value (10 in this example) has no impact on the median, if we were to replace it by 100, the median value would still 3 while the average would be 16.85 !

My current thinking is unusual pricing might be better suited for voting based systems like backpack.tf for the previous reasons. But even voting is difficult for unusuals since someone who really wants a hat for in-game play could pay a lot more than what people voted for while pure traders will always want to pay less to resell at a profit.

Typically people sell for higher on trading websites than on trading game servers, so this shows you roughly what markup to expect.

All trades found on the websites being tracked in the search engine are also monitored for craft numbers. Item latest craft numbers get updated when a new crafted item gets put for sale on a trading website.

Don't get confused These items are not craftable and the craft numbers have most likely been enabled for a future update in which the item will actually be made craftable.

For banking you can also tell the bot when to stop buying to avoid overstocking by setting the amount in Don't overstock more than. The bot will just buy and sell trying to never exceed the overstock amount.

Bank orders are for item banking, basically allowing you to automatically buy and sell for given prices. Just click on an item in the banking section and set which price you want to buy at and which price you want to sell at. Obviously the idea is to buy low and sell high to make profit.