At MTGPrice.com our goal is to always show how much a “fair” price is for a given card. To do this, we gather prices from all over the Internet and show them, along with their history, on our card pages.
We noticed a serious outlier today with the TCGPlayer.com “average” prices – several cards had been input incorrectly by a single store and this skewed the average price of all cards significantly. To avoid this occurring in the future, we’ve decided to implement a new version of Fair Trade Price beginning with updates tomorrow.
The new algorithm works as follows:
We aim to find prices of cards that have been sold recently. “Recently” is highly dependent on the card itself – Black Lotus typically change hands less frequently than a play-set of lightning bolts, for example. It’s important to get a value for how much a card sells for, not how much it is listed for. I can list 500 Lightning Bolt’s for $1000 each on Ebay but unless someone buys them, this price is irrelevant. Our algorithm therefore is essentially a weighted average of the current prices at various stores, weighted by the number of sales those stores typically have.
How do we know how many cards a given store sells? We don’t, not really, but we can guess based on the inventory levels that the stores publish. We’ve been collecting inventory information from all the big stores plus Ebay, amazon and all the tcgplayer.com stores for over a month now and we feel fairly confident in our initial ranking of weights.
We normalized the weights so that Ebay count’s as a multiplier of 1. Our first attempt at weighting sales is as follows:
TCGPlayer LOW x1.12
As we add in other stores and update our data, these weights will change. We will update all weightings on the 1st of every month to show how important each vendor is in our index.
How do these weights work? An example:
Liliana of the Veil is currently (11/20/2011 at noon) listed for:
Ebay - $35.62
Starcity - $39.99
ABUGames - $47.99
MtgMintCard - $52.99
TCGPlayer LOW - $32.13
The calculation that we do is as follows:
((35.62*1) +(39.99*0.84) + (47.99*0.64) + (52.99*0.22) + (32.13*1.12))/(1+0.84+0.64+0.22+1.12)
= $38.63 Fair Trade Value
This calculation will start being used on all cards starting tomorrow – we’re just running the final tests now to ensure we catch all the outliers and bad data before it comes into the calculation. Specifically, we throw away any single event that is more than 3 standard deviations away from the mean, unless there is more than 1 such occurrence. Later, we plan on using (stat’s geek alert!) Chauvenet’s criterion to detect outliers instead.
We want our prices to be the fastest and most accurate on the web. If you have any comments on how we plan to do things, or just want to say hello we can be contacted at firstname.lastname@example.org or on Twitter or Facebook, or post in the comments section below.