I too run a straight pool league, we're currently in season 24. I publish a schedule (by week) at the beginning of the season and each player will arrange to play their scheduled opponent, preferably during the scheduled week but we allow playing in advance (if you know you'll be on vacation or going on a business trip etc) or playing late.
When we have <18 players, we schedule a full round robin. When we have 18 or more we have 2 divisions based on skill level, so players mostly play opponents near their own ability. We do schedule 3 or 4 cross division matches as well to keep the handicapping honest.
We have 20 skill levels and each is a range of 50 points, so for example C+ is 550 - 599, A- is 750-799, etc. I use a formula that increases the winner's hcp number based on both the percentage difference between the loser's score and his/her target as well as how many matches the player has played in the league (not just in this season, but ever). Percentages work much better than just the number of balls, especially if there is a wide variation between skill levels within the league. Hcps change much more quickly when the player is just starting out in the league (no matter how long they've been playing pool) because I may have made a mistake in assigning the initial handicap, and because the more the person plays the more seasoned (accurate) the handicap becomes.
| Beginner | Tyro | Novice | Student | Learner | C- | C | C+ | B- | B | B+ | A- | A | A+ | AA | AAA | Shortstop | Open | House Pro | Pro | Tour Pro | Ranked Pro |
Beginner | 75 | 68 | 62 | 57 | 51 | 47 | 43 | 52 | 47 | 43 | 39 | 35 | 32 | 29 | 33 | 30 | 28 | 25 | 23 | 21 | 19 | 17 |
Tyro | | 75 | 68 | 62 | 57 | 51 | 47 | 57 | 52 | 47 | 43 | 39 | 35 | 32 | 37 | 33 | 30 | 28 | 25 | 23 | 21 | 19 |
Novice | | | 75 | 68 | 62 | 57 | 51 | 62 | 57 | 52 | 47 | 43 | 39 | 35 | 40 | 37 | 33 | 30 | 28 | 25 | 23 | 21 |
Student | | | | 75 | 68 | 62 | 57 | 69 | 62 | 57 | 52 | 47 | 43 | 39 | 44 | 40 | 37 | 33 | 30 | 28 | 25 | 23 |
Learner | | | | | 75 | 68 | 62 | 75 | 69 | 62 | 57 | 52 | 47 | 43 | 49 | 44 | 40 | 37 | 33 | 30 | 28 | 25 |
C- | | | | | | 75 | 68 | 83 | 75 | 69 | 62 | 57 | 52 | 47 | 53 | 49 | 44 | 40 | 37 | 33 | 30 | 28 |
C | | | | | | | 75 | 91 | 83 | 75 | 69 | 62 | 57 | 52 | 59 | 53 | 49 | 44 | 40 | 37 | 33 | 30 |
C+ | | | | | | | | 100 | 91 | 83 | 75 | 69 | 62 | 57 | 65 | 59 | 53 | 49 | 44 | 40 | 37 | 33 |
B- | | | | | | | | | 100 | 91 | 83 | 75 | 69 | 62 | 71 | 65 | 59 | 53 | 49 | 44 | 40 | 37 |
B | | | | | | | | | | 100 | 91 | 83 | 75 | 69 | 78 | 71 | 65 | 59 | 53 | 49 | 44 | 40 |
B+ | | | | | | | | | | | 100 | 91 | 83 | 75 | 86 | 78 | 71 | 65 | 59 | 53 | 49 | 44 |
A- | | | | | | | | | | | | 100 | 91 | 83 | 94 | 86 | 78 | 71 | 65 | 59 | 53 | 49 |
A | | | | | | | | | | | | | 100 | 91 | 104 | 94 | 86 | 78 | 71 | 65 | 59 | 53 |
A+ | | | | | | | | | | | | | | 100 | 114 | 104 | 94 | 86 | 78 | 71 | 65 | 59 |
AA | | | | | | | | | | | | | | | 125 | 114 | 104 | 94 | 86 | 78 | 71 | 65 |
AAA | | | | | | | | | | | | | | | | 125 | 114 | 104 | 94 | 86 | 78 | 71 |
Shortstop | | | | | | | | | | | | | | | | | 125 | 114 | 104 | 94 | 86 | 78 |
Open | | | | | | | | | | | | | | | | | | 125 | 114 | 104 | 94 | 86 |
House Pro | | | | | | | | | | | | | | | | | | | 125 | 114 | 104 | 94 |
Pro | | | | | | | | | | | | | | | | | | | | 125 | 114 | 104 |
Tour Pro | | | | | | | | | | | | | | | | | | | | | 125 | 114 |
Ranked Pro | | | | | | | | | | | | | | | | | | | | | | 125 |
The difference between targets in each vertical column is 9% less than the number below it. The names of the skill levels is only relevant within our league. What you think of as an "A" is not related to what we call an "A", the names are just a way of referring to the ranges with a hierarchy.
Handicapping has worked very well this way. Everything is done in a spreadsheet so the ONLY subjective input from me is in assigning the initial hcp. To do that I get input from other players in the league, from the room management and also use any hcps they may have in another league like APA or BCA, etc. Even though those leagues don't play straight pool, I do get a general feel for their overall pool ability since I also know many of my existing players hcps in those leagues.
Matches are determined by checking a posted grid (above) with lower skill levels (C+, A-, etc) on the Y axis and Higher skill levels (C+, A-, etc) on the X axis. The number at the intersection is the lower skilled player's target and the lowest number in that same column is the target for the higher skilled player. Higher skilled players go to 75, 100, or 125 based on their ability so 2 weak players don't have to play all day.
Player's hcps change after every match, but their skill levels may not, depending on where within the 50 point range they were and how much they won/lost by. New players (to the league) may change skill levels frequently whereas long term members change infrequently.
I'm happy to answer any questions.