Tom Tango had an open source thread for years (before getting hired by an MLB team) spelling out in pretty clear terms how free agent contracts are derived. It starts by figuring out what the baseline WAR a player produces per year at their maximum, prime year production (27-28 years old, mostly). For most free agents, they are starting decline phase, and so you need to discount that max value by 0.5 WAR per year. Then you figure out the going rate in free agency per WAR, and you can figure out how much a player contract might be. The real key is figuring out the baseline WAR. Buxton maxed out at 3.6 WAR on Fangraphs at age 23, and was listed at 5.0 WAR on BBref for the same year. But he’s totaled between 8-10 WAR over the past 4 years on those sites (granted last year was a short year); 2-2.5 WAR per year. I think the most you could reasonably peg him at is 3.5 WAR for his age 27 and 28 seasons. That would drop to 3 WAR for his age 29 season. So to answer your precise question, at $8mm/WAR, he could expect a $24mm salary for his age 29 season when he hits free agency. Of course, his age 30 season would be less; discount to 2.5WAR, or 8x2.5=$20mm. 31 would be 2WAR/16, and age 32 would be 1.5WAR/12. So a four year free agent contract for Buck (for his age 29-32 seasons) would be 4/72, or $18 per year. Full value for Buck, using these calculations, including his last two arb years and two years of free agency, would be 5/10/24/20=59.