April 16th, 2012, 12:46 PM
Question regarding logic--simulating trades of athletes
I am writing a software application which, among other things, will simulate the process of professional football teams trading players with one another.
I have developed code which takes a specific team and player, evaluates them based upon several ratings and statistics, and returns a numeric value. This value determines how valuable (or not) the player is to that team. If it's a low number, the team will look to trade the player. In my application, each team will evaluate all its players, and add these unwanted players to a trade list.
Other teams will then also evaluate these same players according to a very similar formula, although the returned numeric value can be very different depending upon the team's needs. So, Team A may have a player they don't want (maybe ranked as a 3), but Team B ranks the same player very highly (like, 125), and therefore seeks to trade for the player.
In the next step, then, Team A looks through the list of Team B's unwanted players, applies the same formula to find players which might serve their own needs. Perhaps finding an idea player who ranks highly and then, possibly, making the trade.
My question is more general, and not really specific to football per se. In developing the code, how can I know that the trade is equitable for both sides? Am I just looking for two players who are ranked the same, so each side is getting a player which is valuable to them? Or should I be going further, and determining a definite value for each player?
Possible scenario, although it's more football-specific: Team A for whatever reason has two of the best QBs in the game, Tom Brady and Drew Brees, on its roster, and are missing a decent running back. Team B needs a quarterback and they have an extra young, untested running back which fits Team A's needs. The formulas determine that the running back is a good idea for team A, and that Brees is a good fit for team B. B doesn't really need the running back, and although Brees is among the elite players in the game, he's not all that important to team A because they already have Brady (who is probably in the top 3 QBs in football, etc.) But the trade could be considered lopsided, as a QB worth millions is being exchanged for another player who isn't worth nearly as much talent-wise.
So I'm wondering if I should be also computing the value of each player, as seen by everybody else (in this case, the other 30 teams) or is it good enough that each party to the transaction is fulfilling a need?
April 16th, 2012, 09:18 PM
There isn't really a general-case answer to your question. It depends on what each collection (ie: team) is trying to optimize. If the value of a collection is determined by the sum of its entities (ie: players) then it makes complete sense to use an absolute ranking to determine the value of a swap. If the value of a collection is determined by the standard deviation of its entities then it makes no sense to use an absolute ranking to determine the value of a trade.
Obviously, in your specific scenario the ranking of each team is a lot more complicated than a sum or standard deviation. In the real world trades are driven by economics, which generally involves relative decision making. If trading one player for another player will increase the team's bottom line, then it's a beneficial trade. In the real world, the team would also be trying to optimize that trade to get the most possible benefit from it. I don't know for sure, but my gut feeling is that optimizing the trades is not something that can be solved in polynomial time.