08-29-2023, 10:29 AM
(This post was last modified: 09-09-2023, 05:21 AM by Aneeqs. Edited 1 time in total.)
(From A Quick History on the S41 2OA pick)
Hello everyone! As it turns out, I was absolutely correct. It would be a massive undertaking! As for the other thing, well, I suppose we'll have to find out about that at a later date. For now, this article will be laying the groundwork for a very brief series about ISFL trades. I first became interested in trades, specifically the way trades connect and relate to each other, when I investigated the trade history of my own draft pick in the article linked above. In doing so I discovered two very interesting things:
1. Trades in the ISFL are very interconnected—far more so than I would have initially guessed. And because so many trades are so tightly connected, it is common for a trade that was made years ago to have a direct effect on the picks and players held by teams today (even if that effect is a greatly diminished echo). I think it's safe to say that if a user is invested enough in the league, the team that they're on can hold massive significance in their experience here. As a personal example, I think being drafted to the Yeti has caused me to make some excellent friends that I would not have otherwise made. It has absolutely shaped my experience in the ISFL, it has shaped my views on the league and it has even shaped the outlook of my personal life, to a degree. And given that my pick only belonged to the Yeti due to a 4-year old history of connected picks, I find it absolutely fascinating that my personal life has been affected by a series of what are obstensibly strategic decisions made by hundreds of people over the course of multiple years to try to win a forum-based fake football league. But really, digging deeper, I discovered that these trades are not merely strategic decisions. Instead so many of them are tied to stories—stories of petty drama, stories of one teams' triumph, another's downfall, stories of friendships made, of friendships lost. Stories so difficult and personal that people have struggled to discuss them. Stories of real hatred, stories of resentment, stories of intrigue and underhandedness. Stories of joy. Stories of a hundred people from all over the world. Merely by being drafted, I, and so many other users, have been woven into the rich tapestry of this league's history.
2. Trade trees are mathematical objects. They are sets, graphs, matrices, edges, and vertices. When working with them I get to use words like "disjoint", "union", and "non-trivial", and I get to formally define things in perfectly precise mathematical detail. All of this is absolutely phenomenal. It is absolutely the greatest thing on Earth to use some abstract and pure mathematics on something borne of a simulation football league, and if I am being honest with you, an outsize portion of my motivation to continue work on trade ancestry and to even write this media is simply for an excuse to do some mathematics. However, I understand that many of you desperately do not want me to talk about math, and will quickly click out of the article if I start with the math. So for your sake, I will limit myself to the following few paragraphs to get all of the math out of the way, and we can go directly back to using more flowerly language. But for now, we absolutely must define some things, if only for my own sanity.
The definitions I'll be using are occasionally not really in line with how certain words are most commonly used in mathematics. I'm occasionally renaming certain things both to make them easier to understand if you're not already familiar with them and also to maintain a bit of the tree metaphor. If this bothers you, I'm sorry. Anyways let's begin:
The Trade Graph is a labelled directed graph containing every trade in ISFL history. The vertices (nodes) of this graph each represent a unique trade, labelled in a numerical order which reflects their chronological order (i.e. older trades have smaller numbers, newer trades have larger numbers). Trades involving more than two teams are considered to be a single trade so long as they are represented as such on the Processed Trades subforum or if they are entered as such on the draft sheet (for draft-day trades). If a player or draft pick acquired in a trade are traded away from the team that traded for them previously, then a directed edge is placed between the two vertices representing those trades, pointing from the old trade towards the new trade. There is only one Trade Graph (hence its capitalization), since it represents every trade.
A singleton trade is a trade with no connections. A singleton makes up its own trade web, trade tree, and trade root (all of which will be defined below). If a trade web contains only a singleton trade, then that web is called a singleton.
Trade A is an ancestor to trade B if there is a directed path from trade A to trade B. If trade A is trade B's ancestor, then trade B is trade A's descendant. Because of the chronological nature of trades, a trade can never gain a new ancestor, but it can gain a new descendant after a time. Ancestry and descendance are transitive relations, so if A is an ancestor to B, and B is an ancestor to C, then A is an ancestor to C. If trade A is connected directly with an edge to trade B (which occurs if and only if one or more assets traded to a team in trade A are traded away from the same team in trade B), then trade A is a direct ancestor to trade B, and trade B is a direct descendant to trade A.
A trade web is a subgraph of the Trade Graph which contains at least one trade and all trades which are weakly connected to that trade (connected on the Trade Graph's underlying undirected graph). In other words, if you took a trade and followed its connections, both forwards and backwards in time, and collected all of the trades involved, you would get a trade web. A singleton is a trade web. There are currently 176 trade webs, with 148 of those being singletons (boring), and 28 trade webs with more than one trade (fun and cool).
A trade tree is a subgraph of a trade web which contains a single trade, called the tree's defining ancestor, and all of that trade's descendants. The tree discussed in the series The Giving Tree, written by @Baron1898, is an example of a trade tree with Trade #5 being its defining ancestor. Because trades can gain new descendants over time, a trade tree can expand over time.
A trade root is a subgraph of a trade web which contains a single trade, called the root's defining descendant, and all of that trade's ancestors. The trade history discussed in my previous article, linked above, is an example of a trade root with Trade #550 being its defining descendant. Because trades can never gain a new ancestor, all trade roots are static and cannot grow.
A trade tree or trade root is trivial if its defining ancestor or descendant has an ancestor or a descendant of its own. A tree or root that is not trivial is non-trivial (huge shocker, I know). Because a trade cannot be retroactively given a new ancestor, any non-trivial trade tree will remain non-trivial forever. However, a non-trivial trade root can become trivial after a time if one of the assets acquired by a team in a trade is traded away from that team in a later trade. All trivial trade roots are subgraphs of at least one non-trivial trade root, and all trivial trade trees are subgraphs of at least one non-trivial trade tree (this is why I'm calling them trivial).
With the definitions mostly out of the way, I'll make some comments about the mathematical nature of these objects. Firstly, I'll mention something which has been bothering me about my own definitions: trade trees are not trees!!!! or at least most of them aren't! I am using the term here to describe them anyways because that's how they're commonly understood and referred to in the sports world (and also because I am a fan of the metaphor), but in reality, a tree is a very delicate and specific type of graph. Formally speaking, a tree is a graph which is undirected, connected, and acyclic (contains no cycles). Our trade trees and roots are all definitionally connected, and they're also acyclic because a trade cannot be its own ancestor or descendant due to the chronological restriction placed on trades themselves (a world with time travel would make this possible, but I don't want to think about that), but unfortunately they are all directed graphs, so are all disqualified from being actual trees. Thankfully there is a type of directed graph that is very similar to a tree called a directed tree (it's also, as I learned while researching for this, called a polytree, a oriented tree, or a singly connected network), but by dropping the condition that the graph must be undirected, it introduces a new condition: the graph's underlying undirected graph (basically if you pretended all the directed edges were actually undirected) must itself be acyclic. So with that in mind, some of our trees and roots qualify as being directed trees, but many of the biggest ones do not. I have managed to find both the largest trade tree and the largest trade root that qualify as being formal trees, but I will not show them to you just yet to build interest >:].
Singletons
As a start, I'd like to look at the many many trades which have no relations to other trades whatsoever. The overwhelming majority of these trades are horribly uninteresting. They involve IAs, cap, and late-round flyers—for the most part assets that don't really have much business getting traded any more than once. But this isn't always the case! I've collected a few singletons which I believe to be some of the most interesting trades to not have any connections to other trades. These trades include 1st round picks, Hall of Famers, and max earners, but for whichever reason, they never ended up with any connections to other trades. Some of these are fairly recent, and so it's entirely possible that these trades will become non-singletons, should one of the assets involved in them be traded in the future, but we'll have to see.
Yes, I'm blatantly stealing Baron's formatting for presenting trades from the Giving Tree article. It's a good format and I'm shit at formatting. Sorry!
#4: Las Vegas Legion and San Jose Sabercats, 7/7/17
receives:
WR RFFO Mademe
receives:
LVL S2 7th Round (QB Christian Adams)
I only really include this trade here for two reasons: firstly, it's a good example of what a lot of these singleton trades look like. LVL GM @RavensFanFromOntario traded the Legions' 7th round pick for an IRL friend of his who was IA at the time. Neither player involved in this trade ever got past 200 TPE, and neither user involved really stuck around either. The other reason I include this trade is because it's the first ever singleton trade. The first 3 trades to this point all made some kind of connection to another trade at some point in their history—more on those later.
#33: Yellowknife Wraiths and San Jose Sabercats, 8/16/17
receives:
WR Darren Smallwood
YKW S3 1st Round (K Iyah Blewitt)
YKW S4 4th Round (not enough picks)
receives:
WR Bailey Cook
Two months later, SJS would be involved in another singleton trade, but this time the players involved would be a good deal more significant. SJS, honoring a trade demand made by Cook's user @RainDelay, traded their star WR for a high S3 draft pick, a low S4 draft pick, and Darren Smallwood @tlk742 a WR to fill the gap left on the roster by Cook. The S4 pick didn't materialize at all because the S4 class was so small, but Darren Smallwood turned out to be a Hall of Fame Running Back (for NOLA, not for SJS but who's counting really) and Iyah Blewitt @Rabidsponge21 became the first kicker in league history to complete a perfect kicking season with both a 100% XP% and a 100% FG% (also for NOLA and not SJS but once again: who's counting).
#82: Colorado Yeti and San Jose Sabercats, 2/9/18
receives:
COL S6 1st Round (DL Cordell Joshua)
receives:
SJS S6 1st Round (WR Dwayne Aaron)
SJS S7 1st Round (CB Desta Danger)
Not a ton to say about this trade other than that I'm surprised that a trade involving 3 1st round picks managed to connect to no other trades. This makes it pretty unique! Desta Danger went inactive shortly after being drafted (and I guess Colorado never managed to swing trading them away), but Dwayne Aaron's user @Supersquare04 would briefly become a GM for the team. Cordell Joshua would win an Ultimus... not with SJS but with BAL (It's me. I'm counting. That's 3). (additionally, @Baron1898 wrote a little about this trade in Volume II of The Rockiest Road, a towards the end of the Season 5 section)
#194: Austin Copperheads and Orange County Otters, 6/28/19
receives:
S Shannon Hobbs
CB Gordon Ramsey Jr.
Higher of OCO/AUS S18 1st Round
(AUS S18 1st Rnd (WR Tyrone Biggums))
receives:
OCO S16 1st Round (RB Mako Mendonca)
Lower of OCO/AUS S18 1st Rnd
(OCO S18 1st Round (LB Net Gaines))
Okay, so I am writing about this trade out-of-order, because I actually did not have it marked initially as a singleton trade!! Instead, there was an interesting clerical error that caused it to be connected to a later trade that turned out to be entirely disconnected. The reason for this is that there are actually two players by the name of Tyrone Biggums. The one drafted in S18 by the Otters was the user @Revolution5, who would become the OCO GM only a few seasons later. The other Tyrone Biggums is a S25 CB from the user @Rehnx. Rehnx has 7 posts all time on the forum and maxed at 62 TPE. If I'm being honest I would guess that the only reason the other Tyrone Biggums was ever even traded for was so OCO could have both Tyrone Biggums on their roster at the same time. Either way the second Tyrone Biggums trade has caused me much chaos and fixing it has caused me a lot of work!!! But that's okay. I forgive OCO. As for the trade itself, both of the players the Otters traded for were fairly low TPE, so I get the feeling that the Copperheads would come out on top of this trade in the end. By that time, though, OCO had won 3 consecutive Ultimus games so I can't imagine they mind so much.
#341: Arizona Outlaws and Berlin Firesalamanders, 9/16/20
receives:
BER S25 2nd Round (OL Chuck Roth)
BER S25 4th Round (RB Darren Pama)
receives:
LB Adam Schell
S Benoit Blanco
ARI S25 6th Round (WR Lebby Newton)
This trade is worthy of note because of its inclusion of recent Hall of Fame addition Chuck Roth @zeagle1. In hindsight, it certainly looks like Arizona fleeced Berlin, as only Adam Schell @Cincyfan96 would earn at the rate of either of the players Arizona drafted with Berlin's picks, though I'm unsure if it turned out that way because Berlin misjudged the value of their own picks, misjudged the value of the players they traded for, or simply because Arizona drafted well with their extra picks. (Additionally, Cincyfan would return to Berlin as a user for their recreate so it's possible that Berlin would take this trade again if they had the option). Either way, the quality of three of the players involved in this trade certainly cause it to stand out among other singletons.
#409: Yellowknife Wraiths and Honolulu Hahalua, 6/18/21
receives:
RB Nicholas Ayers
receives:
YKW S30 4th Round (WR Deffo not Leroy Leroy)
On the surface, this trade is small and fairly standard for a singleton trade, but under the surface there's a good deal to it. Firstly, I want to highlight that this trade is responsible for breaking my S29 RB Receiving EPA/Play chart, for technical reasons I don't want to get into here. More interestingly though, this trade took place only 4 hours after Ayers' user @Faded was punished in one of the biggest mod abuse scandals in league history. This punishment is the likely reason for Ayers' reduced price, as he was at the peak of his career at the time. Honolulu would get @Kobefromthefrobe from it so I suppose it all worked out.
#439: Austin Copperheads, Colorado Yeti and New York Silverbacks, 10/29/21
receives:
COL S32 1st Round (LB Spicy Ron)
receives:
QB Live Laughlove
receives:
QB Malcolm Savage
This is a slightly bizarre draft-day trade that I had to ask my locker room about, which thankfully includes both Malcolm Savage's user @MN_Moosey and a few people who would have been involved in this trade via the Colorado war room (mostly @IsaStarcrossed). To keep things short, NYS planned on drafting Moosey in the S31 draft, but Austin took him just before New York had the opportunity, leaving them short at QB moving forwards. During the S32 draft, New York would take Colorado's planned QB @SwankyPants31 (Live Laughlove), leaving Colorado as the team without a QB. However Austin would then put Moosey on the trade block, as he had requested a trade due to dissatisfaction with Austin's timeline for his player. Austin wouldn't accept a Swanky-Moosey swap, however, so a 3-team trade was struck to send both QBs back to the team they had been on for their previous player, and leaving Austin as the QB-less team. Austin would draft perpetual Portland GM @PugWalrus with Colorado's pick, leaving each team content with a lifelong player. Ultimately things worked out for each team, and this trade remains the only 3-team trade in history to also be a singleton trade.
#459: Honolulu Hahalua and Austin Copperheads, 2/5/22
receives:
HON S34 1st Round (WR Zayne Dangle)
QB Joliet Christ Jr.
receives:
QB Dexter Zaylren
BER S35 3rd Round (TE Waluigi Gronkowski)
Another 1st round draft-day trade involving a QB swap, this S34 trade is notable because Dexter Zaylren's user @"Laser" was one of Berlin's GMs at the time of the trade! Honolulu upgraded to a slightly younger QB and got Berlin's 3rd round pick in return for their own 1st round pick. Honolulu would immediately go to three consecutive Ultimus's (in noticing this I have realized that the last time a ASFC team other than Honolulu and Arizona have been to the Ultimus was S33), despite Zaylren throwing 21 (!!) interceptions in his first season there, and win two of them.
#541: San Jose Sabercats and Orange County Otters, 1/21/23
receives:
WR President Camacho
OCO S41 2nd Round (LB DJ Maclean)
OCO S41 4th Rnd (If Camacho uses the MO on his contract for S40) (did not apply)
receives:
SJS S40 3rd Round (RB Tyler One)
SJS S41 1st Round (LB John Stark VIII)
This trade is interesting for two reasons: firstly, it's an example of a trade in which the Otters would trade away one of their old GMs, @ThunderTitan82 (President Camacho), and in return they would receive the pick they would use to draft their current GM, my friend (I hope?) and fellow S41 classmate, @UptownCord (John Stark VIII). Additionally, the S41 1st round pick the Otters received from this trade would be used in another trade—a 3-team trade involving both OCO and SJS again, as well as COL. In the trade, OCO would send to Colorado the lower pick between their two 1st round picks in S41. Considering this second trade took place in the S40 offseason, and that according to the S40 season predictions, OCO (predicted mostly at 6th in the ASFC) was expected to do worse than SJS (predicted mostly at 5th in the ASFC), it's likely that the deal was struck with the expectation that this lower pick would be San Jose's. But OCO would greatly overperform, and their pick would turn out to be 11oa, while San Jose would underperform and would have ended up with 4oa, so in the end, San Jose's pick was never traded again, and a new connection was not made to another trade. As for the future, I don't expect any of the assets involved in this trade to be traded again, barring potentially Tyler One (now a safety), as I know DJ Maclean's user @Urq660 is happy to be in San Jose, Camacho will likely be auto-retired at the end of this season, and of course UptownCord is unlikely to be traded away from OCO as he is their GM (though, as Trade #459 tells us, it's not impossible).
#578: New Orleans Second Line and Baltimore Hawks, 4/22/23
receives:
BAL S42 1st Round (TE Hank Mardukas)
BAL S42 4th Round (CB Thomas Ferguson)
receives:
CB Charles Chapman
This is a trade that occured in the days of NOLA's early S41 firesale, where they stocked up on 1st round picks in S42 as much as they could. This one worked out nicely for both teams, as NOLA would receive a pick they would use to draft one of S42's most promising rookies (current HO intern(?)) @Chicken Lips to help with their ongoing rebuild, while Baltimore would receive a great CB to make their secondary truly dominate for the time being. Chapman's user @Charple would then take over as one of Baltimore's GMs, making this a trade that gave each team what they needed not only in player but in user as well.
#579: New Orleans Second Line and Arizona Outlaws, 4/24/23
receives:
ARI S42 1st Round (WR Octavion Speedings)
ARI S42 2nd Round (DT Sonny Johnson)
ARI S42 4th (not enough picks)
LB Ignatius Reilly
receives:
NOLA S43 1st Round (WR Thomas Sutha)
LB Carissa Van Campen
This trade is the very next trade to take place, and occurred only two days later. It is also a singleton trade. I don't want to talk about singleton trades anymore :[
Here is a graph of all of the singleton trades to ever exist:
Let's move onto greater things.
Small Trade Webs
Moving back to the quote I started this article with, I'd like to discuss some of my goals when I started looking at trade webs. Firstly, I wanted to prove or disprove my conjecture: as it turns out, my initial guess was ill-worded and greatly discounted the number of singleton trades that existed. So I hope I am not spoiling anything when I say that my conjecture as-written is greatly incorrect. Just by taking the number of singleton trades (148) and dividing it by the number of total trades (625), we understand that more than 23% of all trades are singletons, immediately disqualifying the prospect of 90% of all trades being connected in a single web. Had I been a little more careful in my language, I might have said that 90% of trades were either connected in a single web, or they were singleton trades, which would have been more to-the-point of what I was wanting to get at: a trade can only make so many connections before it gets wrapped up in all of the other trades. Once again I'll leave the actual answer to that for a later date, but basically this conjecture would be the same thing as the combination of the following:
Order-2 Webs
The first thing to notice here is that Trade #1 and Trade #2 make up a totally isolated trade web! These are the first two trades to take place, and only going off of what I can read on the forums (you can understand that my research into the individual trades here will need to be rather limited, given that I want to focus on the connections between the trades more than the trades themselves—also this has taken a very long time to write and I have not even gotten to the juicy parts yet), it looks like DT Bert Metas @Bertiswho was traded from San Jose to Orange County, and immediately demanded a trade to another team, so was sent to Baltimore literally 8 minutes later. Bertiswho would go IA only 4 months later.
Another interesting trade here is Trade #338, which is the only instance I can find of an expansion protection slot being traded to another team. However, the other trade it's connected to is nothing special.
Trade #420 and Trade #421 are draft-day trades that create their own order-2 draft web. Philly made an error and thought a player was on the board who actually wasn't, and so after making the trade they asked to void it with Sarasota—thus creating a very bizarre trade web.
The last order-2 trade web of note involves Trade #544 and Trade #549. Trade #544 is a rare 3-team trade involving SJS, OCO, and COL, in which Colorado, in a truly disastrous and awful move, traded for both @woelkers and the pick that they would use to draft @infinitempg in the very same trade, and they weren't even compensated for it. Even worse, they managed to give up their own assets to do this. I can't believe such an incompetent franchise would draft me. I demand a trade. After fleecing Colorado, San Jose would use OCO's pick in a S40 draft-day trade to move up to draft @Ace, in what I believe to be a move that has worked out fairly well for them.
Order-3 Webs
...Having gone through each trade involved here, I can't really say with any certainty that these are interesting trades. In fact, many of them manage to be pretty boring. So rather than scraping up a boring trade and talking about it, I'll just talk about the structure of these webs. With order-2 webs, the only possible structure would have been A->B. But when introducing an additional trade, there are a few more possibilities for how a trade web might be structured. Among the ISFL's order-3 webs, we can see webs of the structure:
Order-4 Webs
You'll notice that out of the 3 order-4 trade webs, 2 of them are quite recent, with their trades going no earlier than #532 (December 2022). The exception to this is the 295-296-297-298 web, which is really just a series of joke trades between NOLA and PHI in the latest moments of the absurdly long S22 draft. Among the more recent webs, the 532-555-567-568 web mostly includes late draft picks in the S40 and S41 draft, but the other one is a bit more interesting.
The 546-548-581-608 web includes Baltimore's trade up to 2oa in S40 for @jeffie43, followed by Berlin's trade for @Attopax, using the 2nd round pick they receieved from Baltimore. Later on, jeffie would be traded from Baltimore to Yellowknife, connecting the S40 draft-day trades to the Bridge Burner trade from a couple months prior.
Okay, this is it. There are only two trade webs left to talk about. A huge motivation for doing all of this was just to find out what the second-largest trade web would be. What series of trades exist in their own environment, interacting only with each other? How many connections can a trade even make before being swept into a much larger web? Finally, we can find out.
THE SECOND LARGEST TRADE WEB IN ISFL HISTORY
#87: New Orleans Second Line and Yellowknife Wraiths, 2/15/18
receives:
YKW S7 5th Round (not enough picks)
receives:
RB Lil Bot
#88: Yellowknife Wraiths and Baltimore Hawks, 2/15/18
receives:
BAL S7 6th Round (not enough picks)
receives:
RB Lil Bot
#89: Baltimore Hawks and Philadelphia Liberty, 2/15/18
receives:
PHI S7 7th Round (not enough picks)
receives:
RB Lil Bot
#90: Philadelphia Liberty and San Jose Sabercats, 2/15/18
receives:
SJS S7 8th Round (not enough picks)
receives:
RB Lil Bot
#91: San Jose Sabercats and Arizona Outlaws, 2/15/18
receives:
SJS S7 9th Round (not enough picks)
receives:
RB Lil Bot
They're all joke trades. What a fucking letdown.
To Be Continued in Part 2
Quote:After looking through ISFL trades for a good while, I think I'll conjecture that approximately 90% or more of all trades are linked together in the very same trade web, with most of the other webs being singletons or containing only a few trades. Actually proving this would be a massive undertaking.
Hello everyone! As it turns out, I was absolutely correct. It would be a massive undertaking! As for the other thing, well, I suppose we'll have to find out about that at a later date. For now, this article will be laying the groundwork for a very brief series about ISFL trades. I first became interested in trades, specifically the way trades connect and relate to each other, when I investigated the trade history of my own draft pick in the article linked above. In doing so I discovered two very interesting things:
1. Trades in the ISFL are very interconnected—far more so than I would have initially guessed. And because so many trades are so tightly connected, it is common for a trade that was made years ago to have a direct effect on the picks and players held by teams today (even if that effect is a greatly diminished echo). I think it's safe to say that if a user is invested enough in the league, the team that they're on can hold massive significance in their experience here. As a personal example, I think being drafted to the Yeti has caused me to make some excellent friends that I would not have otherwise made. It has absolutely shaped my experience in the ISFL, it has shaped my views on the league and it has even shaped the outlook of my personal life, to a degree. And given that my pick only belonged to the Yeti due to a 4-year old history of connected picks, I find it absolutely fascinating that my personal life has been affected by a series of what are obstensibly strategic decisions made by hundreds of people over the course of multiple years to try to win a forum-based fake football league. But really, digging deeper, I discovered that these trades are not merely strategic decisions. Instead so many of them are tied to stories—stories of petty drama, stories of one teams' triumph, another's downfall, stories of friendships made, of friendships lost. Stories so difficult and personal that people have struggled to discuss them. Stories of real hatred, stories of resentment, stories of intrigue and underhandedness. Stories of joy. Stories of a hundred people from all over the world. Merely by being drafted, I, and so many other users, have been woven into the rich tapestry of this league's history.
2. Trade trees are mathematical objects. They are sets, graphs, matrices, edges, and vertices. When working with them I get to use words like "disjoint", "union", and "non-trivial", and I get to formally define things in perfectly precise mathematical detail. All of this is absolutely phenomenal. It is absolutely the greatest thing on Earth to use some abstract and pure mathematics on something borne of a simulation football league, and if I am being honest with you, an outsize portion of my motivation to continue work on trade ancestry and to even write this media is simply for an excuse to do some mathematics. However, I understand that many of you desperately do not want me to talk about math, and will quickly click out of the article if I start with the math. So for your sake, I will limit myself to the following few paragraphs to get all of the math out of the way, and we can go directly back to using more flowerly language. But for now, we absolutely must define some things, if only for my own sanity.
The definitions I'll be using are occasionally not really in line with how certain words are most commonly used in mathematics. I'm occasionally renaming certain things both to make them easier to understand if you're not already familiar with them and also to maintain a bit of the tree metaphor. If this bothers you, I'm sorry. Anyways let's begin:
The Trade Graph is a labelled directed graph containing every trade in ISFL history. The vertices (nodes) of this graph each represent a unique trade, labelled in a numerical order which reflects their chronological order (i.e. older trades have smaller numbers, newer trades have larger numbers). Trades involving more than two teams are considered to be a single trade so long as they are represented as such on the Processed Trades subforum or if they are entered as such on the draft sheet (for draft-day trades). If a player or draft pick acquired in a trade are traded away from the team that traded for them previously, then a directed edge is placed between the two vertices representing those trades, pointing from the old trade towards the new trade. There is only one Trade Graph (hence its capitalization), since it represents every trade.
A singleton trade is a trade with no connections. A singleton makes up its own trade web, trade tree, and trade root (all of which will be defined below). If a trade web contains only a singleton trade, then that web is called a singleton.
Trade A is an ancestor to trade B if there is a directed path from trade A to trade B. If trade A is trade B's ancestor, then trade B is trade A's descendant. Because of the chronological nature of trades, a trade can never gain a new ancestor, but it can gain a new descendant after a time. Ancestry and descendance are transitive relations, so if A is an ancestor to B, and B is an ancestor to C, then A is an ancestor to C. If trade A is connected directly with an edge to trade B (which occurs if and only if one or more assets traded to a team in trade A are traded away from the same team in trade B), then trade A is a direct ancestor to trade B, and trade B is a direct descendant to trade A.
A trade web is a subgraph of the Trade Graph which contains at least one trade and all trades which are weakly connected to that trade (connected on the Trade Graph's underlying undirected graph). In other words, if you took a trade and followed its connections, both forwards and backwards in time, and collected all of the trades involved, you would get a trade web. A singleton is a trade web. There are currently 176 trade webs, with 148 of those being singletons (boring), and 28 trade webs with more than one trade (fun and cool).
A trade tree is a subgraph of a trade web which contains a single trade, called the tree's defining ancestor, and all of that trade's descendants. The tree discussed in the series The Giving Tree, written by @Baron1898, is an example of a trade tree with Trade #5 being its defining ancestor. Because trades can gain new descendants over time, a trade tree can expand over time.
A trade root is a subgraph of a trade web which contains a single trade, called the root's defining descendant, and all of that trade's ancestors. The trade history discussed in my previous article, linked above, is an example of a trade root with Trade #550 being its defining descendant. Because trades can never gain a new ancestor, all trade roots are static and cannot grow.
A trade tree or trade root is trivial if its defining ancestor or descendant has an ancestor or a descendant of its own. A tree or root that is not trivial is non-trivial (huge shocker, I know). Because a trade cannot be retroactively given a new ancestor, any non-trivial trade tree will remain non-trivial forever. However, a non-trivial trade root can become trivial after a time if one of the assets acquired by a team in a trade is traded away from that team in a later trade. All trivial trade roots are subgraphs of at least one non-trivial trade root, and all trivial trade trees are subgraphs of at least one non-trivial trade tree (this is why I'm calling them trivial).
With the definitions mostly out of the way, I'll make some comments about the mathematical nature of these objects. Firstly, I'll mention something which has been bothering me about my own definitions: trade trees are not trees!!!! or at least most of them aren't! I am using the term here to describe them anyways because that's how they're commonly understood and referred to in the sports world (and also because I am a fan of the metaphor), but in reality, a tree is a very delicate and specific type of graph. Formally speaking, a tree is a graph which is undirected, connected, and acyclic (contains no cycles). Our trade trees and roots are all definitionally connected, and they're also acyclic because a trade cannot be its own ancestor or descendant due to the chronological restriction placed on trades themselves (a world with time travel would make this possible, but I don't want to think about that), but unfortunately they are all directed graphs, so are all disqualified from being actual trees. Thankfully there is a type of directed graph that is very similar to a tree called a directed tree (it's also, as I learned while researching for this, called a polytree, a oriented tree, or a singly connected network), but by dropping the condition that the graph must be undirected, it introduces a new condition: the graph's underlying undirected graph (basically if you pretended all the directed edges were actually undirected) must itself be acyclic. So with that in mind, some of our trees and roots qualify as being directed trees, but many of the biggest ones do not. I have managed to find both the largest trade tree and the largest trade root that qualify as being formal trees, but I will not show them to you just yet to build interest >:].
Singletons
As a start, I'd like to look at the many many trades which have no relations to other trades whatsoever. The overwhelming majority of these trades are horribly uninteresting. They involve IAs, cap, and late-round flyers—for the most part assets that don't really have much business getting traded any more than once. But this isn't always the case! I've collected a few singletons which I believe to be some of the most interesting trades to not have any connections to other trades. These trades include 1st round picks, Hall of Famers, and max earners, but for whichever reason, they never ended up with any connections to other trades. Some of these are fairly recent, and so it's entirely possible that these trades will become non-singletons, should one of the assets involved in them be traded in the future, but we'll have to see.
Yes, I'm blatantly stealing Baron's formatting for presenting trades from the Giving Tree article. It's a good format and I'm shit at formatting. Sorry!
#4: Las Vegas Legion and San Jose Sabercats, 7/7/17
receives:
WR RFFO Mademe
receives:
LVL S2 7th Round (QB Christian Adams)
I only really include this trade here for two reasons: firstly, it's a good example of what a lot of these singleton trades look like. LVL GM @RavensFanFromOntario traded the Legions' 7th round pick for an IRL friend of his who was IA at the time. Neither player involved in this trade ever got past 200 TPE, and neither user involved really stuck around either. The other reason I include this trade is because it's the first ever singleton trade. The first 3 trades to this point all made some kind of connection to another trade at some point in their history—more on those later.
#33: Yellowknife Wraiths and San Jose Sabercats, 8/16/17
receives:
WR Darren Smallwood
YKW S3 1st Round (K Iyah Blewitt)
YKW S4 4th Round (not enough picks)
receives:
WR Bailey Cook
Two months later, SJS would be involved in another singleton trade, but this time the players involved would be a good deal more significant. SJS, honoring a trade demand made by Cook's user @RainDelay, traded their star WR for a high S3 draft pick, a low S4 draft pick, and Darren Smallwood @tlk742 a WR to fill the gap left on the roster by Cook. The S4 pick didn't materialize at all because the S4 class was so small, but Darren Smallwood turned out to be a Hall of Fame Running Back (for NOLA, not for SJS but who's counting really) and Iyah Blewitt @Rabidsponge21 became the first kicker in league history to complete a perfect kicking season with both a 100% XP% and a 100% FG% (also for NOLA and not SJS but once again: who's counting).
#82: Colorado Yeti and San Jose Sabercats, 2/9/18
receives:
COL S6 1st Round (DL Cordell Joshua)
receives:
SJS S6 1st Round (WR Dwayne Aaron)
SJS S7 1st Round (CB Desta Danger)
Not a ton to say about this trade other than that I'm surprised that a trade involving 3 1st round picks managed to connect to no other trades. This makes it pretty unique! Desta Danger went inactive shortly after being drafted (and I guess Colorado never managed to swing trading them away), but Dwayne Aaron's user @Supersquare04 would briefly become a GM for the team. Cordell Joshua would win an Ultimus... not with SJS but with BAL (It's me. I'm counting. That's 3). (additionally, @Baron1898 wrote a little about this trade in Volume II of The Rockiest Road, a towards the end of the Season 5 section)
#194: Austin Copperheads and Orange County Otters, 6/28/19
receives:
S Shannon Hobbs
CB Gordon Ramsey Jr.
Higher of OCO/AUS S18 1st Round
(AUS S18 1st Rnd (WR Tyrone Biggums))
receives:
OCO S16 1st Round (RB Mako Mendonca)
Lower of OCO/AUS S18 1st Rnd
(OCO S18 1st Round (LB Net Gaines))
Okay, so I am writing about this trade out-of-order, because I actually did not have it marked initially as a singleton trade!! Instead, there was an interesting clerical error that caused it to be connected to a later trade that turned out to be entirely disconnected. The reason for this is that there are actually two players by the name of Tyrone Biggums. The one drafted in S18 by the Otters was the user @Revolution5, who would become the OCO GM only a few seasons later. The other Tyrone Biggums is a S25 CB from the user @Rehnx. Rehnx has 7 posts all time on the forum and maxed at 62 TPE. If I'm being honest I would guess that the only reason the other Tyrone Biggums was ever even traded for was so OCO could have both Tyrone Biggums on their roster at the same time. Either way the second Tyrone Biggums trade has caused me much chaos and fixing it has caused me a lot of work!!! But that's okay. I forgive OCO. As for the trade itself, both of the players the Otters traded for were fairly low TPE, so I get the feeling that the Copperheads would come out on top of this trade in the end. By that time, though, OCO had won 3 consecutive Ultimus games so I can't imagine they mind so much.
#341: Arizona Outlaws and Berlin Firesalamanders, 9/16/20
receives:
BER S25 2nd Round (OL Chuck Roth)
BER S25 4th Round (RB Darren Pama)
receives:
LB Adam Schell
S Benoit Blanco
ARI S25 6th Round (WR Lebby Newton)
This trade is worthy of note because of its inclusion of recent Hall of Fame addition Chuck Roth @zeagle1. In hindsight, it certainly looks like Arizona fleeced Berlin, as only Adam Schell @Cincyfan96 would earn at the rate of either of the players Arizona drafted with Berlin's picks, though I'm unsure if it turned out that way because Berlin misjudged the value of their own picks, misjudged the value of the players they traded for, or simply because Arizona drafted well with their extra picks. (Additionally, Cincyfan would return to Berlin as a user for their recreate so it's possible that Berlin would take this trade again if they had the option). Either way, the quality of three of the players involved in this trade certainly cause it to stand out among other singletons.
#409: Yellowknife Wraiths and Honolulu Hahalua, 6/18/21
receives:
RB Nicholas Ayers
receives:
YKW S30 4th Round (WR Deffo not Leroy Leroy)
On the surface, this trade is small and fairly standard for a singleton trade, but under the surface there's a good deal to it. Firstly, I want to highlight that this trade is responsible for breaking my S29 RB Receiving EPA/Play chart, for technical reasons I don't want to get into here. More interestingly though, this trade took place only 4 hours after Ayers' user @Faded was punished in one of the biggest mod abuse scandals in league history. This punishment is the likely reason for Ayers' reduced price, as he was at the peak of his career at the time. Honolulu would get @Kobefromthefrobe from it so I suppose it all worked out.
#439: Austin Copperheads, Colorado Yeti and New York Silverbacks, 10/29/21
receives:
COL S32 1st Round (LB Spicy Ron)
receives:
QB Live Laughlove
receives:
QB Malcolm Savage
This is a slightly bizarre draft-day trade that I had to ask my locker room about, which thankfully includes both Malcolm Savage's user @MN_Moosey and a few people who would have been involved in this trade via the Colorado war room (mostly @IsaStarcrossed). To keep things short, NYS planned on drafting Moosey in the S31 draft, but Austin took him just before New York had the opportunity, leaving them short at QB moving forwards. During the S32 draft, New York would take Colorado's planned QB @SwankyPants31 (Live Laughlove), leaving Colorado as the team without a QB. However Austin would then put Moosey on the trade block, as he had requested a trade due to dissatisfaction with Austin's timeline for his player. Austin wouldn't accept a Swanky-Moosey swap, however, so a 3-team trade was struck to send both QBs back to the team they had been on for their previous player, and leaving Austin as the QB-less team. Austin would draft perpetual Portland GM @PugWalrus with Colorado's pick, leaving each team content with a lifelong player. Ultimately things worked out for each team, and this trade remains the only 3-team trade in history to also be a singleton trade.
#459: Honolulu Hahalua and Austin Copperheads, 2/5/22
receives:
HON S34 1st Round (WR Zayne Dangle)
QB Joliet Christ Jr.
receives:
QB Dexter Zaylren
BER S35 3rd Round (TE Waluigi Gronkowski)
Another 1st round draft-day trade involving a QB swap, this S34 trade is notable because Dexter Zaylren's user @"Laser" was one of Berlin's GMs at the time of the trade! Honolulu upgraded to a slightly younger QB and got Berlin's 3rd round pick in return for their own 1st round pick. Honolulu would immediately go to three consecutive Ultimus's (in noticing this I have realized that the last time a ASFC team other than Honolulu and Arizona have been to the Ultimus was S33), despite Zaylren throwing 21 (!!) interceptions in his first season there, and win two of them.
#541: San Jose Sabercats and Orange County Otters, 1/21/23
receives:
WR President Camacho
OCO S41 2nd Round (LB DJ Maclean)
OCO S41 4th Rnd (If Camacho uses the MO on his contract for S40) (did not apply)
receives:
SJS S40 3rd Round (RB Tyler One)
SJS S41 1st Round (LB John Stark VIII)
This trade is interesting for two reasons: firstly, it's an example of a trade in which the Otters would trade away one of their old GMs, @ThunderTitan82 (President Camacho), and in return they would receive the pick they would use to draft their current GM, my friend (I hope?) and fellow S41 classmate, @UptownCord (John Stark VIII). Additionally, the S41 1st round pick the Otters received from this trade would be used in another trade—a 3-team trade involving both OCO and SJS again, as well as COL. In the trade, OCO would send to Colorado the lower pick between their two 1st round picks in S41. Considering this second trade took place in the S40 offseason, and that according to the S40 season predictions, OCO (predicted mostly at 6th in the ASFC) was expected to do worse than SJS (predicted mostly at 5th in the ASFC), it's likely that the deal was struck with the expectation that this lower pick would be San Jose's. But OCO would greatly overperform, and their pick would turn out to be 11oa, while San Jose would underperform and would have ended up with 4oa, so in the end, San Jose's pick was never traded again, and a new connection was not made to another trade. As for the future, I don't expect any of the assets involved in this trade to be traded again, barring potentially Tyler One (now a safety), as I know DJ Maclean's user @Urq660 is happy to be in San Jose, Camacho will likely be auto-retired at the end of this season, and of course UptownCord is unlikely to be traded away from OCO as he is their GM (though, as Trade #459 tells us, it's not impossible).
#578: New Orleans Second Line and Baltimore Hawks, 4/22/23
receives:
BAL S42 1st Round (TE Hank Mardukas)
BAL S42 4th Round (CB Thomas Ferguson)
receives:
CB Charles Chapman
This is a trade that occured in the days of NOLA's early S41 firesale, where they stocked up on 1st round picks in S42 as much as they could. This one worked out nicely for both teams, as NOLA would receive a pick they would use to draft one of S42's most promising rookies (current HO intern(?)) @Chicken Lips to help with their ongoing rebuild, while Baltimore would receive a great CB to make their secondary truly dominate for the time being. Chapman's user @Charple would then take over as one of Baltimore's GMs, making this a trade that gave each team what they needed not only in player but in user as well.
#579: New Orleans Second Line and Arizona Outlaws, 4/24/23
receives:
ARI S42 1st Round (WR Octavion Speedings)
ARI S42 2nd Round (DT Sonny Johnson)
ARI S42 4th (not enough picks)
LB Ignatius Reilly
receives:
NOLA S43 1st Round (WR Thomas Sutha)
LB Carissa Van Campen
This trade is the very next trade to take place, and occurred only two days later. It is also a singleton trade. I don't want to talk about singleton trades anymore :[
Here is a graph of all of the singleton trades to ever exist:
Let's move onto greater things.
Small Trade Webs
Moving back to the quote I started this article with, I'd like to discuss some of my goals when I started looking at trade webs. Firstly, I wanted to prove or disprove my conjecture: as it turns out, my initial guess was ill-worded and greatly discounted the number of singleton trades that existed. So I hope I am not spoiling anything when I say that my conjecture as-written is greatly incorrect. Just by taking the number of singleton trades (148) and dividing it by the number of total trades (625), we understand that more than 23% of all trades are singletons, immediately disqualifying the prospect of 90% of all trades being connected in a single web. Had I been a little more careful in my language, I might have said that 90% of trades were either connected in a single web, or they were singleton trades, which would have been more to-the-point of what I was wanting to get at: a trade can only make so many connections before it gets wrapped up in all of the other trades. Once again I'll leave the actual answer to that for a later date, but basically this conjecture would be the same thing as the combination of the following:
- there are not that many small trade webs
- small trade webs can only get so big
Order-2 Webs
The first thing to notice here is that Trade #1 and Trade #2 make up a totally isolated trade web! These are the first two trades to take place, and only going off of what I can read on the forums (you can understand that my research into the individual trades here will need to be rather limited, given that I want to focus on the connections between the trades more than the trades themselves—also this has taken a very long time to write and I have not even gotten to the juicy parts yet), it looks like DT Bert Metas @Bertiswho was traded from San Jose to Orange County, and immediately demanded a trade to another team, so was sent to Baltimore literally 8 minutes later. Bertiswho would go IA only 4 months later.
Another interesting trade here is Trade #338, which is the only instance I can find of an expansion protection slot being traded to another team. However, the other trade it's connected to is nothing special.
Trade #420 and Trade #421 are draft-day trades that create their own order-2 draft web. Philly made an error and thought a player was on the board who actually wasn't, and so after making the trade they asked to void it with Sarasota—thus creating a very bizarre trade web.
The last order-2 trade web of note involves Trade #544 and Trade #549. Trade #544 is a rare 3-team trade involving SJS, OCO, and COL, in which Colorado, in a truly disastrous and awful move, traded for both @woelkers and the pick that they would use to draft @infinitempg in the very same trade, and they weren't even compensated for it. Even worse, they managed to give up their own assets to do this. I can't believe such an incompetent franchise would draft me. I demand a trade. After fleecing Colorado, San Jose would use OCO's pick in a S40 draft-day trade to move up to draft @Ace, in what I believe to be a move that has worked out fairly well for them.
Order-3 Webs
...Having gone through each trade involved here, I can't really say with any certainty that these are interesting trades. In fact, many of them manage to be pretty boring. So rather than scraping up a boring trade and talking about it, I'll just talk about the structure of these webs. With order-2 webs, the only possible structure would have been A->B. But when introducing an additional trade, there are a few more possibilities for how a trade web might be structured. Among the ISFL's order-3 webs, we can see webs of the structure:
- A->B, B->C (i.e. the 318-319-320 web)
- A->C, B->C (i.e. the 446-366-449 web)
- A->B, A->C (i.e. the 17-47-68 web)
- A->B, B->C, A->C
Order-4 Webs
You'll notice that out of the 3 order-4 trade webs, 2 of them are quite recent, with their trades going no earlier than #532 (December 2022). The exception to this is the 295-296-297-298 web, which is really just a series of joke trades between NOLA and PHI in the latest moments of the absurdly long S22 draft. Among the more recent webs, the 532-555-567-568 web mostly includes late draft picks in the S40 and S41 draft, but the other one is a bit more interesting.
The 546-548-581-608 web includes Baltimore's trade up to 2oa in S40 for @jeffie43, followed by Berlin's trade for @Attopax, using the 2nd round pick they receieved from Baltimore. Later on, jeffie would be traded from Baltimore to Yellowknife, connecting the S40 draft-day trades to the Bridge Burner trade from a couple months prior.
Okay, this is it. There are only two trade webs left to talk about. A huge motivation for doing all of this was just to find out what the second-largest trade web would be. What series of trades exist in their own environment, interacting only with each other? How many connections can a trade even make before being swept into a much larger web? Finally, we can find out.
THE SECOND LARGEST TRADE WEB IN ISFL HISTORY
#87: New Orleans Second Line and Yellowknife Wraiths, 2/15/18
receives:
YKW S7 5th Round (not enough picks)
receives:
RB Lil Bot
#88: Yellowknife Wraiths and Baltimore Hawks, 2/15/18
receives:
BAL S7 6th Round (not enough picks)
receives:
RB Lil Bot
#89: Baltimore Hawks and Philadelphia Liberty, 2/15/18
receives:
PHI S7 7th Round (not enough picks)
receives:
RB Lil Bot
#90: Philadelphia Liberty and San Jose Sabercats, 2/15/18
receives:
SJS S7 8th Round (not enough picks)
receives:
RB Lil Bot
#91: San Jose Sabercats and Arizona Outlaws, 2/15/18
receives:
SJS S7 9th Round (not enough picks)
receives:
RB Lil Bot
They're all joke trades. What a fucking letdown.
To Be Continued in Part 2