(The open source rankings project)


Rankenstein is a new, open-sourced, rankings application currently in beta deployment by the Ottawa and District Squash Association. Rankenstein integrates tightly into any web site, and can accept rankings input in virtually any format. Results are processed in real-time in an automated fashion, streamlining the rankings process and ensuring that the rankings are up to date at all times.

Feedback Welcome: Rankenstein provides a number of features that are new to the ODSA Website, but there is always room for improvement... If you have comments, suggestions, questions or complaints, don't hesitate to share them. You can e-mail your feedback to , or visit our feedback page to leave an anonymous note.

New Features
  • Direct integration with the website, enabling real-time rankings updates.
  • Rapid movement for newcomers and improving players.
  • Detailed player profiles with results dating back 8 years.
  • Database of 28304 results and counting....
  • Search capability for matchups or players, (including inactive players).
  • Main rankings list can be filtered by club, age & gender or both.

  • Let us know what you think!



    Full Details (for the really curious): The heart of Rankenstein is obviously its rankings system and a fair bit of research went into the development of its core algorithm. Various other systems were evaluated, from pure double-jump systems such as those used by Squash Canada, the Alberta Squash Association, and the U.S. National Racketball Association, to pure ratings based systems such as SportPro (or the rather curiously described system used by Squash Ontario), to tournament-only systems such as those used by PSA or ATP (and even the ELO system used by chess clubs and professionals the world over was given careful consideration). In the end, weighing the clear advantages and disadvantages of each system, the relatively small number of tournament matches played at the Ottawa regional level, and the dynamic and enthusiastic community of competitive players we have, the optimal system appeared to be a hybrid - combining the relative strengths of our familiar ratings based system with the benefits of the double-jump. The result was Rankenstein.

    Rating System: For players in a relatively steady state, Rankenstein appears like a typical ratings based system. All head to head matches are processed chronologically, and each player's rating is adjusted by an amount more or less proportional to their relative ratings, with a maximum upside and downside to minimize the effect of fluke results. Each time a player's rating is adjusted their 'trend' is also re-calculated (the total number of points gained or lost over the last 6 matchups). When a player develops a large positive or negative trend, their maximum upside or downside for a given match result is also increased, leading to accelerated ratings adjustments. This is all described by the following equations:

    Ratings Calculation:

    If the Winner's Rating (WR) is lower than the loser's rating (LR):
  • WR = WR + MIN(X,(8+(LR-WR)/5)); Where X = MAX(50,WTREND)
  • LR = LR - MIN(Y,(8+(LR-WR)/5)); Where Y = MAX(20,-LTREND)
  • If the Winner's Rating (WR) is higher than the loser's rating (LR):
  • WR = WR + MAX(0,(8-(WR-LR)/37))
  • LR = LR - MAX(0,(8-(WR-LR)/37))

  • Double Jump System: In addition to the basic ratings system, however, Rankenstein incorporates a double-jump mode to enhance player movement for newcomers, rapidly improving players, and players who just happen to be grossly under-ranked for some reason. When a player scores a major upset (defined as a win against someone more than 400 ratings points higher than themselves), they enter 'double-jump' status which will last for 6 matches (not counting wins against lower rated players). While in this mode, the player becomes unhindered by the typical rankings system and has 6 matches to repeat their success, launching themselves up the rankings by immediately jumping ahead of their 'second best win'.

    Personal Best / Expiry: Rankenstein constantly monitors each player's 'personal best' win, regardless of whether or not they are presently in double-jump status, and each player's personal best may be viewed on their profile page. Personal bests do not remain valid indefinitely, however, and will expire after either 220 days or after 6 matches, (whichever comes last). In addition, for players in the top 10, their personal best will be expired immediately if they are beaten by that opponent.

    Inactive Players: Whether you appear on the rankings list is a function of your activity level. The requirement for this is adjustable within the system but is currently set leniently, such that a player must either have 2 wins (ever) AND 2 matches in the last 220 days, OR, if a player has not met the 2 wins criteria but has payed 5 matches in the last 220 days, they will appear at or near the bottom of the rankings (though this latter criteria obviously does not produce a good indication of their actual ranking).

    Returning Players: If a previously ranked player is absent from the rankings for more than 330 days, they will be assumed to have faltered somewhat in ability during the hiatus and will automatically be penalized 100 points upon return whether they win or lose. This ensures players who have taken long breaks from the game must prove themselves again upon returning.

    Provisional Status: Whenver a player is new to the system, or has has fallen inactive as described above, they will initially be flagged as 'provisional' upon exit from inactive status. While in provisional status, ratings changes for wins and losses are much more rapid than usual - in this mode, players are automatically placed immediately below anyone they lose to, and their wins are treated as if they were in double-jump mode as described above. Meanwhile active players will not lose any points for losing to provisional players and will only gain points for beating provisional players who are within +/- 200 points of themselves. Finally if any active or provisional player beats an opponent 1600 points above them, they will be assumed to be massively under ranked and will be automatically placed ahead of their opponent and converted to provisional status and their opponent will lose no points. To exit provisional status and become fully active, a player must play six games, (not including wins against opponents rated 200 below them or more).

    Eligible Results: Presently ALL regional matches are eligible for inclusion in the rankings and do not require the consent of both parties unless the match is a friendly club match AND one player is sick or injured at the time of play. Note, however, that only ODSA City League matches are collected automatically. Players are responsible for entering their own friendly, challenge, and tournament matches via the ODSA website.