I actually think the trade logic is fine. It's difficult to do, but you have to remember that in the game there are no "names". Just players with certain stats/ratings and minor leaguers with stats/ratings. I don't know what the years left on the contract were, but if the guys who were traded had one or two years left, with the team in 4th place and seemingly out of contention, the game decided that getting prospects back instead would be a good option. If Hughes and Sabbathia are injured and the Yankees are out of it, what is the point in the game logic of having a third starter of high caliber? If we could get more information about the years left in the contracts, the exact standings, and the ratings of the minor leaguers in their system, then I think we could make a better analysis of the logic.
Based on what was stated, I think the trade logic is very much improved and can't wait to play the game. I believe that the only way to really settle the "why did
get traded?" and also keep the good logic for the future intact, the devs would need to really update the attributes of the players. Somehow insert a stat that would indicate if a player was a "team" player. So that if you had a guy who had been with a team his entire career and put up good numbers overall, he'd be considered a "team player" and therefore would be incredibly unlikely/impossible to be traded. This way someone like Derek Jeter would always stay with the Yankees, or Chipper Jones would always stay with the Braves. Using this for the "no-name" future players, the stats they've accumulated through their career and a deemed "importance" would affect this "team player" rating. I think this would be nice to for RttS so that if you come up through a team's minor leagues as a highly rated prospect and you perform well in the majors, you'd be deemed a "team player" and would not likely be traded by your team. Again though, this would probably take a LOT of time to implement and be fairly tedious to do.