There are various challenges with programmatically setting values. I can speak to your example but then list myriad others.
In the example you provided, the most recent recorded sale was from 3/6/2025, in VF and it was for $10. Based on your logic I can see how you’d think setting $10 for the NM and NM+ buckets would make a lot of sense. In a vacuum, it would. But there’s other factors you’d need to consider or you’re really just making a price curve to make it look logical, when in fact that NM $4 value is probably a lot closer to the actual value. If you look on eBay right now, you can get a solid copy - better than VF, for less than $2 (plus shipping - but that’s another factor to potentially consider). So while the actual value for a NM is more like $2-4, just relying on one most recent sale to reset the entire curve would throw.
So how many sales do you need at a given grade before you reset the price curve? What if a $5 FN sale came in this week and a $3 NM sale? Which one dictates how the curve should look?
Does that mean CP data is crap? I’d argue - no. These are all confirmed sales, sales that didn’t trigger any of our red flags; but it shows the actual variability for low dollar books, as well as the variability you can find across platforms (that $10 sale was a VF grade raw from MCS and maybe the buyer just didn’t care to look at copies on eBay available for $2 because: a) they were already making a purchase on MCS and wanted to grab a few more items off their wish list, b) they don’t really care if a book is $2 or $10 - maybe the convenience drove them more than the cost, c) maybe they have a free shipping deal if they buy $x in books, d) maybe they trust MCS grading a lot more than other places and have historically bought VF’s there and got NM+'s so they were willing to pay the slightly heightened price, e) maybe they trust MCS packing/shipping more than a random eBay seller, etc.).
As for the various challenges shown here by this relatively simple example, but also more complex examples:
- How many sales at a given grade are enough to cause the price curve to change?
- How old can a sale be and still influence a price curve?
- Can a raw sale influence the slabbed price curve and vice versa?
- What if you have very little data, maybe a sale from 6 months ago at VG for $100 and a sale from 5 days ago at VF for $40 and a GD sale from today at $65 - how does that impact the price curve?
- Should you factor in asking prices on unsold books?
- What if the asking price is very high?
- What if the asking price is very low compared to recently recorded sales?
- Does the fact that one sale was a BIN and another sale an auction play a role in shifting a price curve?
- Does the source of the sale matter (MCS/Heritage vs random 92% feedback seller on eBay)?
- Does a Golden age filler book price curve look different than a Modern filler book? What about a Bronze age Key vs a Silver age filler?
- Does rarity play a role?
So while I agree there are a lot of examples where fitting values to a logical price curve makes a lot of sense (maybe you have recent data at $10 for a NM and $5 for a FN, but no VF data, so you set that VF at something like $7 and call it a day), but as soon as new data starts coming in, there’s only data at one of the ends of the grading scale, data is older, data is limited, conflicting data comes in from various sources - now do that for over 700K books across 30 grades many times a day and it gets REALLY hard to programmatically set values.
Hope that helps in just brushing the surface on the challenge of predictive price models.