The calendar will soon flip over to 2018, and so far only six of our top 20 free agents have signed. It has been a slow-moving offseason for sure. I blame it on a generally underwhelming free agent class and big market teams like the Yankees and Dodgers trimming payroll. It is what it is.

Why is this free agent class underwhelming? Because so many players sign long-term contract extensions early in their career, pushing back their free agency. They trade their maximum earning potential (through arbitration and free agency) for financial security earlier in their career. I don't blame them one bit. I'd do the same thing.

It takes six full years of service time to quality for free agency, though given the way teams manipulate service time these days, it often takes closer to seven years. Kris Bryant, for example, will end up playing six full seasons and two weeks short of a seventh full season before becoming a free agent thanks to the way the Cubs kept him in the minors to start 2015.

There are 18 players around the league who reached six years of service time in 2017, but did not become a free agent this offseason because they signed early career extensions. Because we like ranking things, here is a wholly subjective ranking of those 18 players, who would have undoubtedly spiced up the offseason had they not signed extensions.

1. Mike Trout
LAA • CF • #27
ContractSix years, $144.5 million (Signed March 2014)
View Profile

The best player in the world would have hit the open market this winter had the Angels not shoveled a record-breaking extension in front of him a few years ago. We haven't seen a free agent like Mike Trout since Alex Rodriguez way back in the day. I'm talking about an MVP caliber producer -- Trout hit .306/.442/.629 with 33 home runs around his thumb injury this past season -- at an up-the-middle position in his mid-20s. Trout is still only 26. His free agent contract this winter would've crushed baseball current record contract, which is Giancarlo Stanton's massive 13-year, $325 million deal.

MLB: Los Angeles Angels at Texas Rangers
Baseball's best player could've become a free agent this offseason. USATSI

What would he have received this offseason? Even as quiet as this offseason has been, I think Trout would've landed a monster contract worth $40 million annually across 10 years, possibly even more years with opt-outs throw-in. This isn't a situation where Trout would've beat Stanton's contract by a few million. He would have shattered that record, like A-Rod did back in the day. Here's a longer look at Trout's would-be free agency.

2. Jose Altuve
HOU • 2B • #27
ContractFour years, $12.5 million with two club options (Signed July 2013)
View Profile

Astros second baseman Jose Altuve is the reigning AL MVP and a World Series champion, as well as a three-time batting champion and the league leader in hits four years running. He hit .346/.410/.547 with 24 home runs and 32 stolen bases in 2017, then added seven more home runs in the postseason. Trout is still our topped ranking would-be free agent because he's so good and so young, but Altuve is only 27 himself and it's hard to have a better walk year than he just did.

What would he have received this offseason? Robinson Cano's 10-year, $240 million deal with the Mariners seems like the benchmark here. However, Cano signed that contract at age 31. Altuve is only 27. And as good as Cano was in the years leading up to his free agency, he did not win an MVP or any batting titles. Teams would probably approach Altuve with a Cano offer hoping he'd accept. Elite players are getting $30 million per year nowadays, so I think Altuve's 10-year contract would top $300 million. He is so underpaid right now it's ridiculous.

3. Paul Goldschmidt
STL • 1B • #46
ContractFive years, $32 million with one club option (Signed March 2013)
View Profile

Few players in baseball have been as consistently excellent as Diamondbacks first baseman Paul Goldschmidt the last few years. He hit .297/.404/.563 with 36 home runs in 2017, earning him his third top three finish in the NL MVP voting and his fifth consecutive +4 WAR season. Goldschmidt, Trout, Buster Posey, Josh Donaldson, Clayton Kershaw, and Max Scherzer are the only players with +4 WAR in each of the last five seasons.

What would he have received this offseason? What a player is worth and what a player signs for a free agent are not always the same thing. Free agency has not been kind to first basemen in recent years, though it's been a very long time since an all-around first baseman as good as Goldschmidt hit the market. Not since Mark Teixeira following the 2008 season. Goldschmidt turned 30 in September while Teixeira signed his eight-year, $180 million contract at age 28, so maybe that's not the best benchmark. Then again, we have nearly 10 years of inflation to account for. Goldschmidt is easily a $25 million a year player, probably closer to $30 million a year, and getting six guaranteed wouldn't have been out of the question. He would have had Red Sox written all over him in free agency.

4. Carlos Carrasco
NYM • SP • #59
ContractFour years, $22 million with two club options (Signed April 2015)
View Profile

Does everyone realize how good Carlos Carrasco is? I feel like not enough people realize how good Carlos Carrasco is. Perhaps that's because he's stuck playing second fiddle to Corey Kluber with the Indians. Check out Carrasco's numbers the last two seasons compared to those of Jake Arrieta and Yu Darvish, the top two free agent starters on the market this winter:

Age

IP

ERA

ERA+

K/9

BB/9

GB%

WAR

Arrieta

31

365 2/3

3.30

129

8.7

3.2

49.0

+5.2

Darvish

31

287

3.70

123

10.7

2.8

40.6

+6.5

Carrasco

30

346 1/3

3.30

138

9.8

2.1

46.7

+9.0

Carrasco has been every bit as good as Arrieta and Darvish the last two seasons, if not better, and he's a few months younger than them as well. All three pitchers have a history of arm problems, so that won't serve as the great separator in free agency. Point is, Carrasco is excellent, and he would have been an extremely hot commodity as a free agent this winter.

What would he have received this offseason? Johnny Cueto's six-year, $130 million contract immediately jumped to mind. Cueto was about the same age as Carrasco is right now when he hit free agency, and remember he had some elbow woes in his walk year that complicated his free agency. Carrasco wouldn't get $30 million a year like recent elite free agent pitchers (David Price, Zack Greinke, etc.), though he'd do better than guys like Jeff Samardzija (five years, $90 million) and Ian Kennedy (five years, $70 million).

5. Salvador Perez
KC • C • #13
ContractFive years, $52.5 million (Signed March 2016)
View Profile

Salvador Perez was the one Royals core position player who did not become a free agent this offseason. That's because he signed a super team friendly extension right after breaking into the big leagues, then signed a slightly less team friendly extension a few years after that. Perez is pretty divisive. His supporters see a true field general and team leader. His detractors see a .268/.297/.495 batting line and questionable defensive metrics. I feel Perez, maybe moreso than any other catcher in baseball, would benefit from a "works with pitchers" stat. Get on it, stat people.

What would he have received this offseason? Perez is only 27, he has a reputation for being a leader, and he's swatted 20-plus homers for three years running now. Quality catching is very hard to find too. The five-year contracts signed by Brian McCann ($85 million) and Russell Martin ($82 million) feel like Perez's floor to me. Because he is still so young, I don't think a seven-year contract would have been out of the question had Perez become a free agent this winter.

6. Danny Duffy
TEX • SP • #24
ContractFive years, $65 million (Signed January 2017)
View Profile

Had Danny Duffy and Perez become free agents this offseason as scheduled, the Royals would've been faced with losing all of their core players in one offseason. It would have been ugly. Fortunately, both signed long-term extensions. Duffy has had some problems staying healthy in his career -- he threw a career high 179 2/3 innings in 2016, the only time he reached 150 innings in his career -- but a 29-year-old southpaw with a bulldog mentality and a history of missing bats would've been in demand this offseason.

What would he have received this offseason? Jordan Zimmermann inked a five-year contract worth $110 million at Duffy's age a few years ago, so I think that's the benchmark. Both Zimmermann and Duffy had Tommy John surgery in their history. Then again, Zimmermann's contract has been nothing short of a disaster, so perhaps he's a cautionary tale and would have had teams bidding more carefully for Duffy.

7. Brandon Crawford
SF • SS • #35
ContractSix years, $75 million (Signed November 2015)
View Profile

Free agency would have been poorly timed for Brandon Crawford, who hit .253/.305/.403 with 14 home runs in 2017, making it his worst offensive season in several years. I think Crawford's track record, his Gold Glove caliber defense, the fact he was a key member of the Giants' last two title teams, and a thin free agent shortstop class -- Zack Cozart was the only free agent shortstop who could hold a candle to Crawford -- would have netted him a nice contract anyway.

What would he have received this offseason? Gosh, it's really hard to say. I think Crawford would have beat Cozart's three-year, $38 million contract with the Angels because he has a longer track record and is 18 months younger. There are four years and $60 million remaining on Crawford's extension. How about that for an expected free agent contract? Sounds good to me.

8. Kyle Seager
SEA • 3B • #15
ContractSeven years, $100 million with one club option (Signed December 2014)
View Profile

The inferior Seager brother (sorry, Kyle) is coming off a .249/.323/.450 batting line with 27 home runs in 2017, making it his worst offensive season in several years. Mariners third baseman Kyle Seager is still a top notch defender though, and he's made real progress handling southpaws in recent years, plus he just turned 30 in November. Down year or no down year, Seager would've been in good shape going into free agency, at least in theory.

What would he have received this offseason? This is where it gets interesting. What does Seager get when the free agent market offers other similar third base options like Mike Moustakas and Todd Frazier? Those two are having trouble generating interest, at least as far as we know, so add Seager to the mix and the outlook only gets worse. Seager is worth $20 million or so on a four or five-year contract, I believe. But again, what a player is worth and what he receives are not always the same thing.

9. Matt Carpenter
SD • 1B • #14
ContractSix years, $52 million with one club option (Signed March 2014)
View Profile

Matt Carpenter's free agency would have been very interesting. He's been so obviously productive for the Cardinals -- Carpenter hit .241/.384/.451 with 23 home runs in 2017, and has posted a 120 OPS+ or better each of the last three seasons -- and versatile, but he also turned 32 last month and isn't particularly good defensively. His best position is first base and it's fair to wonder if he'd wind up a full-time DH before the end of a multi-year contract.

What would he have received this offseason? The three-year, $60 million contract Carlos Santana just signed with the Phillies seems just perfect for Carpenter.

10. Brandon Belt
TOR • 1B • #13
ContractFive years, $72.8 million (Signed April 2016)
View Profile

Thanks to a variety of injuries, Brandon Belt has played only 458 of 648 possible games for the Giants the last four years, which would have surely hurt his free agent stock. He'll turn in 30 in April and, as always, the free agent market offers no shortage of left-handed hitting first basemen. Belt would have been competing for work with Logan Morrison, Lucas Duda, and the recently signed Yonder Alonso, not to mention Eric Hosmer. The injuries would have really sabotaged Belt's free agency.

MLB: San Francisco Giants at San Diego Padres
Brandon Belt would have made the free agent first base market even more crowded. USATSI

What would he have received this offseason? Because of the injuries -- Belt hit .241/.355/.469 with 18 home runs in 104 games around wrist problems and a concussion this past season -- I think Belt would have been a good candidate for a one-year pillow contract this winter. Sign with a team with a hitter friendly home ballpark (Rockies!), have a big year, and try again next offseason.  

11. Jason Kipnis
ATL • 2B • #22
ContractSix years, $52.5 million with one club option (Signed April 2014)
View Profile

Nagging shoulder and hamstring injuries limited Jason Kipnis to 90 games with the Indians in 2017, during which he hit .232/.291/.414 with 12 home runs. Not great. That said, Kipnis showed he can play the outfield late in the season, and he is a year removed from hitting .275/.343/.469 with 23 homers and 15 steals. Had he become a free agent as scheduled this offseason, I suspect we'd be reading a lot of "Kipnis is a great buy-low value free agent" articles right about now.

What would he have received this offseason? Cozart's three-year, $38 million sounds good to me with Kipnis set to turn 31 shortly after Opening Day. Maybe he could push it to three years and $45 million.

12. Pedro Strop
CHC • RP • #64
ContractTwo years, $11.85 million with one club option (Signed February 2017)
View Profile

 Arrieta was so great with the Cubs that it can be easy to forget the Chicago also received Pedro Strop in that ridiculously one-sided trade with the Orioles way back when.   

Oh Orioles. Strop has thrown 271 2/3 innings with a 2.72 ERA and 10.6 K/9 in parts of five seasons with the Cubbies. He's been awesome. And they got him in addition to Arrieta.

What would he have received this offseason? This has been a slow-moving offseason for everyone except free agent relievers. Those dudes have been getting paid. The three-year contracts signed by Mike Minor ($28 million), Bryan Shaw ($27 million), and Jake McGee ($27 million) set the market for Strop, even at age 32.

13. Josh Harrison
PHI • 2B • #2
ContractFour years, $27.3 million with two club options (Signed April 2015)
View Profile

After back-to-back subpar seasons in 2015 and 2016, Pirates infielder Josh Harrison rebounded to hit .272/.339/.432 with 16 home runs this summer while playing his typically strong defense all around the infield. The big question: How sustainable is that batting line when Harrison was hit by 23 pitches in 2017 after being hit by 26 pitches total from 2011-16?

What would he have received this offseason? The Cozart deal again. Three years and $38 million or so. 

14. Logan Forsythe
PHI • 2B • #13
ContractTwo years, $10.25 million with one club option (Signed January 2016)
View Profile

The soon-to-be 31-year-old Logan Forsythe is coming off a bit of a down year with the Dodgers. He hit .224/.351/.327 in 2017 after hitting .273/.347/.444 with the Rays from 2015-16, though, to be fair, Forsythe did annihilate left-handed pitchers. I'm talking about a .290/.418/.452 batting line against southpaws this past season. A right-handed platoon bat who can play the three non-shortstop infield positions and even some left field is a nifty little role player.

What would he have received this offseason? Two years ago the Dodgers gave Howie Kendrick a two-year contract worth $20 million, and that sounds about right for me. I suspect such a signing would be met with a lot of "wow that's a great deal for [team]" based on Forsythe's 2015-16 seasons.

15. Matt Moore
MIA • SP • #45
ContractFive years, $14 million with three club options (Signed December 2011)
View Profile

It wasn't that long ago that Matt Moore looked like a potential $200 million pitcher. Then Moore needed Tommy John surgery early in 2014, and since returning, he has a 4.85 ERA in 435 2/3 innings. That includes 5.52 ERA and an NL leading 107 runs allowed in 174 1/3 innings in 2017. Ouch. Imagine if Moore hadn't spent the season in pitcher friendly AT&T Park? The Giants traded him to the Rangers a few weeks ago.

What would he have received this offseason? A one-year pillow contract, no doubt. Moore is still only 28. A one-year deal with an eye on testing the market again next offseason seems like a smart move. Andrew Cashner's one-year, $10 million contract with the Rangers this past season seems like the benchmark. (Cashner had a 5.25 ERA in 2016, remember.)

16. Adam Ottavino
NYM • RP
ContractThree years, $10.4 million (Signed December 2015)
View Profile

The 2017 season was not kind to longtime Rockies relief ace Adam Ottavino, who threw 53 1/3 innings with a 5.06 ERA in his first full season back from Tommy John surgery. This is a guy who had a 2.84 ERA with 186 strikeouts in 180 2/3 innings from 2013-16 though, and he did it with Coors Field as his home ballpark. Ottavino's track record would have earned him a look somewhere, especially with so many teams hoarding bullpen help.

What would he have received this offseason? Even in this market, I think Ottavino would've had to settle for a one-year contract given the recent elbow reconstruction and his 2017 performance. One year and $5 million or so could have done it.  

17. Nate Jones
LAD • RP • #41
ContractThree years, $8 million with two club options (Signed December 2015)
View Profile

When healthy, White Sox setup man Nate Jones has been very, very good. He just hasn't been healthy all that often. Jones had Tommy John surgery in 2014 and his 2017 season ended in July thanks to nerve repositioning surgery on his elbow. Between surgeries, the soon-to-be 32-year-old right-hander threw 101 1/3 innings with a 2.49 ERA and 122 strikeouts. His average fastball velocity? 97.4 mph. That'll play.  

What would he have received this offseason? Jones is coming off elbow surgery -- non-structural elbow surgery, but still elbow surgery -- though I still think he'd get a guaranteed contract. I could see a team throwing him one year and $3 million or so, hoping to catch lightning in a bottle in a rather pricey relief market.

18. Devin Mesoraco
NYM • C • #29
ContractFour years, $28 million (Signed January 2015)
View Profile

Injuries have completely derailed Devin Mesoraco's career. Since hitting 25 home runs with a .273/.359/.534 batting line as a 26-year-old with the Reds in 2014, Mesoraco has played only 95 of 486 possible games and hit .191/.292/.314. His 2017 season ended in August when an errant pitch broke his foot. What a shame. Mesoraco was establishing himself as one of the game's best backstops when the injuries struck.

What would he have received this offseason? I'm not sure Mesoraco would get a guaranteed contract even with catching always in demand. A minor league contract with a catcher needy team may have been his best option. The goal would be hooking on somewhere, proving he could stay healthy (even if he has to do it in Triple-A), then hope for a better contract next year.