Matchmaking Algo Suggestion
Scope: Probably for bronze/silver divisions only, this would help with finding the correct tier more quickly.
Reason: In 'elo hell' there can be a lot of churn up and down and it can take a while to find your correct sub-tier. The range of skill is very slight in these tiers and it's very close to a coinflip each game regardless of skill disparity. (i.e. the variance of each game is very high relative to the skill differences between players). Maybe this could be used in higher divisions, but I'm assuming skill difference is enough that gold+ people can't get 'stuck' in bronze/silver.
Disclaimer: KDA isn't as important as objectives. Supports and split pushers need love too, so don't think I'm discounting that. The weight you give to this signal can vary.
The Suggestion: for people who've played more than n games in a sub-tier (ie silver 4), begin to keep a value (call it xfactor) which is a combination of their teammates'_kda vs their teammates median kda, their opponents kda vs their opponents median kda, the players kda, kill participation rate,objectives participation rate, leave %, etc...
When matchmaking games with players of the same elo who've been in a division for n+ games, put all the players with high xfactor on one side, and all the players with low xfactor on the other.
The effect should be that 'trolls' and 'feeders' drift down faster and people who are trying drift up faster, while maintaining matches that elo/trueskill/mmr thinks are 50/50.
ExampleGame: (2v2 and only a few factors for simplicity)
Kills Deaths Assists MedianKDA MedianKillParticipation Lucian 5 2 2 1.8 53% Braum 2 6 4 2.3 59%
vs
Trist 8 6 0 0.5 67% Thresh 0 1 7 3.0 62%
TeamKDAFactor Lucian 1.0 (braums_kda) / 2.3 (braums_usual_kda) = 0.435 (worse than normal) Braum 3.5 (lucian_kda) / 1.8 (lucs_usual_kda) = 1.94 (better than normal) Trist 7.0 (thresh_kda) / 3.0 (thresh_usual_kda) = 2.3 (better than normal) Thresh 1.33 (trist_kda) / 0.5 (trist_usual_kda)= 2.66 (better than normal)
OpponentKDAFactor Lucian (2.3 (trist) + 2.66 (thresh)) / 2 (average) = 2.48 Braum same as lucian, but you could use some kind of weighting for lane matchup Trist (.435 (lucian) + 1.94 (braum)) / 2 (average) = 1.18 Thresh same as trist
Example xfactor for THIS game (using lower weight for own kda) Lucian .435 + 2.48 + 3.5 = 6.41 Braum 1.94 + 2.48 + 1.0 = 5.42 Trist 2.3 + 1.18 + 1.33 = 4.81 Thresh 2.66 + 1.18 + 7.0 = 10.84
To finish the example, you'd need to take xfactors for all previous games, and normalize/weight/pretty them up.
During matchmaking, if the players had been in a division for more than n games, sort the players by xfactor, and put all the top ones on one team. Or, if you wanted to wait a few more seconds in queue, match positive (normalized) xfactor people with negative ones.
Problems: If you had a few bad games, you would get stuck playing with worse players and your losses would spiral out of control! RAGE!* This is not an issue becuase this would only take effect after you'd been playing in a tier for quite a few games and would reset once you outperformed again or dropped down a subtier. *
KDA doesn't matter, objectives make wins. *This is also not an issue, because elo/mmr already takes wins into account. This is just a small 'tiebreaker' if you will to get people unstuck from divisions. *
This is a very simplified illustration of something that would have to be more polished/normalized/optimized mathematically.