About This Project
This is a data tool that reads the Tuesday Haverstock Fencing club sessions and assigns an Elo score from the matches. This tool was inspired by Fencing Tracker for USA fencing.
🎯 What is an Elo Rating?
An Elo system is a way of calculating the skill of players who compete with one another. When a match is played the winner's Elo goes up and the losers goes down. The Elo changes based on the existing scores of each player. The player with a higher score will get fewer points for a win than the lower rated player.
For example, if Alice, rated 1800, fences Bob, rated 1500, if Alice wins she may get 5 points and Bob loses 5 points. However, if Bob wins he may gain 15 points while Alice loses 15.
Through this process ideally ones score should stabilize overtime, and getting wins over strong opponents is rewarding and beating weaker opponents isn't as beneficial.
You can read more about Elo here.
📊 How to Use This Site
Leaderboard
Contains a leaderboard based on the Elo score of each fencer. Click on each fencer's name to be taken to their page
Fencer Stats
Contains details about each individual fencer. This includes, overarching stats, full placement history, elo history, and match history both by session and by opponent
Tournament History
Contains information about each session, including the winner and the fencer who gained the most elo points in the poule stage. Click on the date for a full placement table and match history for the day
Monthly Tracker
See information about the elo change of each fencer for each month's sessions.
📈 Methodology & Data
Data Sources
Data is taken directly from the Google sheets page that we use for Tuesday sessions. The original sheets can be found in sessions page in the tournament tab
There are some modifications to a classic Elo system for our purposes:
Elo System Details
- K-Factor: The "K-Factor" represents how volatile the Elo score is. Fencers with fewer matches have a higher K-Factor so that they can converge on an accurate score faster
- Margin Scoring: We use margin scoring meaning a 5-4 poule win will have a different result than a 5-0 win. This means that if there is a large rating difference between two fencers, the winner may lose points if the score is closer than the system would expect
- Bracket Weighting: To capture that DE matches are longer and "higher stakes" there is a multiplier for DE matches, with the matches further up the winner bracket scaling more
- Decay System: To combat guests and inactive fencers from cluttering the leaderboard, after 8 missed sessions fencers above 1600 Elo points will begin to decay towards 1600
❓ Frequently Asked Questions
What is the default rating?
All fencers begin at 1500 Elo points.
Which fencers are considered Active/Semi-Active/Inactive?
Fencers are:
- "Active" if they have participated in at least 5 of the last 40 sessions.
- "Semi-Active" if they have participated in any of the last 40 sessions.
- "Inactive" Otherwise. Inactive fencers do not show on the leaderboard
Why is there a big swing for some matches but smaller for others?
There is a weighting added to different DE brackets depending on how far into the tournament they are, with "medal matches" being weighed the most
Why is Max Elo empty for some fencers?
Fencers are only assigned a max Elo after 25 matches (normally 2-3 sessions) to avoid a minimum max Elo of 1500.
Why did I lose points for a win / gain points for a loss in the poule?
We use margin scoring meaning that if a match between two fencers with a large rating difference is close the gain for a win may be very small or even negative.
Why was a match I fenced not reported
In the poule stage if one of the two matches are left empty the score is simplify not included (i.e. 5-? or ?-3). Additionally, if properly marked in the sheet, there can be walkovers for the DE's where there will be no swing in Elo
About Me
I'm Alex Yule (Alex Y on the sheet) and I wrote this tool and page.
AI disclaimer
This code was written with the help of Claude Code which is an AI coding tool. However, all text that is on the page was written myself
📧 Feedback & Contact
Fairness
I largely freestyled the Elo system, and while I tried to be as impartial as possible, being a competitor may introduce some bias in how I decided what values to use. If you have opinions about tweaks that would make the results more fair, feel free to discuss with me
Data removal
I can appreciate that this is a lot of information to have put online on a public website. As such, if anyone is uncomfortable with having their name on the website, I am happy to add an alias or entirely remove the matches from anyone who asks.
Contact Me
You can contact me via WhatsApp at +44 7578 915787 or by email at ayule801@gmail.com or during practice 😊.
If you would like to make your own tweaks or add features, I encourage contribution to the GitHub page.