Fangraphs calculates replacement the same every year:
FanGraphs calculates replacement level as being 20 runs below average per 600 PAs. So if a player gets exactly 600 plate appearances, their positional adjustment would be +20. If they have more than 600 PAs, their adjustment would be higher; if they have fewer than 600 PAs, the adjustment would be lower. The exact formula is (20/600)*PA.
EDIT: Average is league wide average, not positional average.