This is a graph based algorithm, where the nodes are players. Between every two players A and B are two directed edges. The weight of the edge from A to B is represented of the percentage of the matches B wins against A adjusted for decay, and vice verse for the edge from B to A. The rate of decay for matches between players is 50% per year, so a win which happens right now for player A is worth 1, where as a win for player B this time last year will be worth 0.5. The weight of the edges will then be 0.5 / 1.5 for player B, and 1 / 1.5 for player A.
There is also a decay on matchups which haven't occurred in a long time. The edges of both players will decay at a rate of 50% per year since the last game played in that match up. This means that the people you play (and beat) most recently will be weighted heavier then others. So if player A and player B both won one match against eachother just now, the weight of those edges would be 0.5 each. However if those matches occurred this time last year, the weight of those edges would be 0.25 each. PageRank is then applied to the resulting graph, and dictate the standings and scores.