Some info for non-golfers: every golf course has a “course rating” and a “slope.” Course rating is essentially the “true par” of the course for a “scratch golfer” (a golfer who normally shoots par). The “slope” is a measure of how much worse less-talented golfers score compared to a scratch golfer. These numbers are used to compute a golfer’s “handicap,” which lets them compete fairly against more- or less-skilled players in tournaments.
Course ratings are currently assigned by people measuring distances from the tee box to various points of trouble and then to the green. This makes course length the dominant factor by far in terms of course rating. If we adopted something like scoofy’s inverse strokes gained metric, course ratings would become far more accurate, and they would become much cheaper (asymptotically approaching free) for courses to obtain. (Currently courses must pay to have their course rated.)
My previous best idea for fixing this was just to use the scores reported by players every day to nudge the rating toward its “true” value. But that would be subject to a lot of conflation that this simulated approach is not.
I see you mention looking for topographical data at a good resolution. I'll follow that with interest. There are US public datasets (IIRC) at more like 3m or 5m resolution... not bad but not really good enough for golf, especially greenside. I couldn't figure out how to pull that info programmatically in the past, though.
Overall this is super cool work, will be watching for more!
cheers