Well, this was unexpected!
While I appreciate your enthusiasm Jared, and your interest @ryanwanger, there are some important things to keep in mind. Up until this post, I was only assuming the Seattle Monday Night Pinball players knew about and used this tool, and it is definitely built with that in mind. First it was for captains to build out their rosters and choose subs, and then it widened to Seattle players as a whole. @dbs (Dave Stewart) opened the door further when he used it to create skill divisions for the Northwest Pinball and Arcade Show tourneys in early June. And now I guess it has been “leaked” to the rest of the pinball world online.
Last season we started using these ratings as an experiment, and while it was successful (yay!), these are still early days and the tool I built was not created with other leagues in mind (yet). I think it’s cool that you want to use it, but I want to make sure you know what you’re getting into, especially since it isn’t documented online (again, I only assumed we’d know about it or use it!)
It is NOT “live” data. In an implementation effort to be kind to IFPA and Matchplay servers, names, IDs, rank, and ratings are all cached locally. We wipe, refresh, and lock the data on our own league schedule. Last season (February-May) we refreshed at the start of the season, mid-season, and at the end. That worked out to be about once a month. We also refreshed before the NWPAS since Dave was using it to define amateur/rookie levels in his tourneys at the show. The last update was on June 5th, 2018 (mentioned on the main search page). It’s unlikely we will refresh again until August or September, but I cannot guarantee when it will happen.
Actually, it’s “sort of” live data. Here’s how it works… When we refresh, I have it look up and cache all our known league players and subs. So they get saved on the refresh date and don’t change until the next refresh. Everyone else only gets cached when a search is performed that returns them in the results! This system worked well for us, but is obviously focused on our context of use. If you choose to use the tool, you’ll need to make peace with the idea that the information for players varies, and is as old as the last time they were searched in the system after the last refresh. My recommendation would be to do a search for every name in your league up front, to sort of lock them in, and then search new folks as necessary. While I do not show the saved date in the search results (maybe I should), it is saved in the system.
Worse than the potential “staleness” or date inconsistencies, the IPR thresholds are generated with Seattle Monday Night Pinball teams in mind. Dave’s whitepaper description goes into the details, but the TL;DR is that WE decided meaningful percentages to use for the size of each bucket, 1 to 6. We probably have more than our fare share of top players in our Seattle league, with folks like Raymond Davidson (#1 currently in IFPA) and a bunch of other top 100 players. So for us, the percentage breakdowns make sense. For IPR to truly be meaningful to you, you’d want to figure out your own definition of how big the buckets are. The rank of 6 is our way to separate out those world-class players (and we have specific league rules dealing with them, like you can’t have two 6-rated players on a team), but if you don’t have that issue then it may make sense to size things differently, or maybe even only use 5 buckets. For us, roughly 3-5% of the players on team rosters are world class players, and the rest of the breakdown works out to be roughly a normal curve. It’s still a work in progress though and we may be tweaking things a bit for next season. These percentages are backed into our tool though, so if you wanted to change them you’d need a new tool.
Searching requires care – with great power comes… well, you know! BE AS PRECISE AS POSSIBLE. When you perform a search in the tool, it’s performing some searches on IFPA and Matchplay. Since Matchplay offers a batch search API, it generally only takes one hit to pull in all the info. IFPA’s API is… less elegant. It’s great for finding info on a specific player if you already know who they are, but it kind of sucks if you’re trying to build a search system on top of their search system and merge results. I’m also very thorough. See, the thing is, I have to match up records across the two systems “automagically”, if I can, and that means a bunch of extra searches. So if Matchplay gives me result set “A” and IFPA gives me result set “B”, I also have to go looking for any “B” results not already grabbed from “A” in Matchplay and vice versa. Then I can dedupe, combine based on IFPA ID, etc. In IFPA, that means doing as many separate (!) searches as required to pull in the new names. That translates into two things: a hopefully sanely implemented but lengthy set of API calls against the IFPA website, and slowness based on size of result set across the systems. The TL;DR is BE SPECIFIC WHEN SEARCHING. If you search for “John”, then your search may time out and you may give the Sharpe’s and my web host reasons to hate me. Don’t do that please. Up until now, searching has been minimal due to it being local to Seattle, but if the genie is out of the bottle, I fear it might all come crashing down one day… Careless searching will also grow the cache file. And since I’m loading it before every search (yeah, it’s not in a database – did I mention this was just experimental?), the more names cached, the slower your search even if it’s all already cached!
Rank meaningfulness requires regular play and a decent amount of data. It’s worth mentioning that the goal of this tool was not to create a new global rating system that is somehow better than IFPA and Matchplay. (It may not mean much in a global context, or even an American context, or even in the context of another city area that isn’t the Seattle area.) It was to give us a meaningful rating system for our own league, and help us solve some existing problems in our league rules and system. IFPA rank alone is what we used before, but we noticed that while it covered the top players pretty well, and (at least through last year when a lot of weekly tourneys were for IFPA points) it sort of covered mid-range players, there was a whole population of regular pinball players of various skill level who never played often enough in IFPA ranked tourneys for it to be meaningful. It was also a way to game the system of the league – if you don’t want to deal with player/team rank restrictions, simply don’t play in IFPA tourneys! People were already starting to do that here in support of team fexibility. When we connected with Andreas, he provided a solution. He wanted data for Matchplay Ratings, and I already had the Brackelope data for the Seattle area indexed (all the way back to 2013, because I am insane!), plus there were plenty of non-IFPA ranked weeklies already in his Matchplay data. The end result is a system that you can’t game unless you never play in online events anywhere. People would be judicious about IFPA-ranked tourneys to keep their rank low, but we doubted they would stop playing pinball tourneys entirely. But this system also works as well as it does because players in Seattle play OFTEN. It’s not unusual for a player to play in 3 tourneys a week, and we’ve now got multiple weeklies going on every day of the week, and monthlies, in addition to superleague, SPL (meeting in people’s homes), and Monday Night Pinball (when in season). Andreas’ point about feeding the MNP data back into the system is important too – even if players don’t really play much in weekly events, by definition, their play is being logged and used for ratings when they play in league. Anyhow the point of all this is to stress that while the system (and this tool) works for us, it may not work as well for you. Andreas can provide more advice on this, but I’d highly recommend reading through his documentation on Matchplay Ratings and taking a look specifically at the ratings deviation value for your players. In general, our players’ RD is quite low because of the wealth of data we’ve submitted, but if it’s quite high for most of your players then it’s going to be less meaningful.
Raw data files for the curious… I wouldn’t normally share this stuff, especially since this wasn’t meant for public use, but if you actually do want to use it, I want to make sure you’re well informed. Here’s a link to the cache file: http://pinballstats.info/search/searchinfo.json
That’s everyone that was included in the last refresh, and everyone searched since, until the present moment. You can see the cache dates in there. UTF-8 characters may be buggy in browser, sorry! I also have a simple search log here, for debugging purposes: http://pinballstats.info/search/iprsearchlog.txt
Sorry for writing a short novel, but I wanted to ensure you knew what you were getting into here! I’m curious to hear how you use it and how things go. I’m open to suggestions too, but I don’t really have the time or desire right now to scale this up and make it globally useful, or try to support leagues other than the one it was created for. Improvements and tweaks though are definitely doable.