July 2024 Updates
View the full Moneyball tutorial HERE.
Visit the new FMDataLab Moneyball tool by clicking the button below.
What is Moneyball?
Moneyball, initially a book written by Michael Lewis, then a 2011 movie, starring Brad Pitt & Jonah Hill.
The movie is based on the true story of Billy Beane, the General Manager of the Oakland A's baseball team during the 2002 season & follows his attempt to assemble a competitive team to compete against the big market teams in the division on a limited-budget.
Billy Beane & Assistant General Manager, Paul DePodesta, built a team of undervalued talent by adopting an evidence-based sabermetric approach to scouting and analysing players, which involved using player statistics to discover high-performing players that were undervalued.
This approach targeted statistics considered undervalued in the sport and allowed Oakland to take a team with the lowest wage budget in the division to a 20-game winning streak.
Statistics and Moneyball in Football Manager?
So, in the context of Football, and more specifically, Football Manager, how does Moneyball fit in?
Rather than using attributes to judge a player's ability (like FMDataLab already does with the Role Scores Tool), we will focus on using the statistics provided by Football Manager.
These statistics can help identify players that are performing at a high level in key statistics for a role/position you're looking to fill in the transfer market but are undervalued compared to their performance over a range of statistics. Where you may have 2 players, with similar statistic values, but their transfer value/wage are drastically different.
While attributes can tell you how good a player could be in a role, statistics can tell you just how good a player actually is.
This is an alternative method to unearthing hidden gems and turning them into superstars.
It's important to note that the FMDataLab Moneyball tool isn't a hack that will naturally discover the best players for each role or position. Rather, it's a tool to assist with player performance analysis and recruitment, helping you determine if a player's statistics align with your playing style or are undervalued compared to their performance.
Moneyball Table View
Once you have successfully uploaded a Moneyball .html file, you will be taken to the Moneyball Table View.
At first, it may seem like a lot is going on here, but let's break it down component by component, so you understand each section from the annotated screenshot below:

File Name:
This is the filename of your uploaded .html file.
Total Number of Players:
This represents the total number of players in your uploaded .html file.
It differs from the "X Results" shown under the table. The "X Results" number reflects the filtered results in the table, so if you apply any column filters, this number may decrease from the total number of players in your uploaded file.
Upload new file:
If you wish to quickly upload a new Moneyball file, click the Upload button.
Select a new .html file from your file explorer, and the table will re-render to display the new Moneyball data.
Edit Statistic Weights for Computed Statistics:
We will provide more details about what Computed Statistics are and how to update the weights used to calculate them in a later section.
Clicking the Edit Computed Weights button will open a dialog with a form to update the weights for all Computed Statistics.
Show Statistic Percentiles:
We will provide more details about what Statistic Percentiles are in a later section.
Simply put, the Show Percentiles button toggles between displaying the actual value of a statistic for each player and showing the percentile rank of that statistic for each player. This helps determine which percentile a particular player falls into for any given statistic.
Show Statistics Scatter Chart:
We will provide more details about what is included in the Scatter Chart in a later section.
Clicking the Show Chart button will navigate you to a scatter chart view where you can compare all players across 2 statistics.
Toggle Statistic Column Groups:
There are a LARGE number of unique statistic columns (189 to be exact), grouped into column groups.
This section includes a list of checkboxes for all the column groups within the Moneyball table.
Clicking any of these checkboxes will toggle the visibility of that column group and all its columns within.
By default, only the following column groups will be visible:- Goals
- Assists
- Goal Contributions
- Actions
- Computed
This default column group visibility setting reduces horizontal scrolling and prevents sluggish performance due to the large amount of data being rendered on screen at once.
You can make all column groups visible with the View All button. However, this may lead to performance issues, especially with larger player lists.
All Column Groups Visible with Hide All Button
Selections here will persist across all uploads, as they are stored within your browser session. If you switch to another browser, a private window in your browser, or another device, your selections on will not persist to these other instances.
Toggle Column Filters Visibility:
By default, column filters are visible.
You can hide these filters by clicking the Hide Filters button.
Hiding the filters reduces visual clutter and also narrows column widths, allowing you to view more columns at once and minimising horizontal scrolling.
Hiding the filters may also reduce column widths by using keys/abbreviated column headers. In that case, you can hover on the column header to see the full column title.
Clicking the Show Filters button will make the column filters visible again.
Hidden Moneyball Column Filters in Table View
Export Table Data to CSV:
Clicking the Export to CSV button will download the current table columns and data to a CSV file, allowing you to use the data from FMDataLab as needed.
If you have toggled the Percentiles view to be visible, by clicking the Show Percentiles button, the statistics in the .csv export will have the percentile rank data, instead of the statistics values.
Toggle Column Visibility:
Clicking the View button opens a dropdown listing all columns in the Moneyball table along with their current visibility status, indicated by a checkmark next to the column name.
Toggle Column Visibilility Dropdown
You can toggle the visibility of any column by clicking on it.
If any columns are hidden, a icon will appear on the View button. Hovering over this icon displays a tooltip showing which columns are hidden or how many.
View which columns have been hidden in table view.
Column Groups:
All columns are grouped for added context, especially for statistics, allowing you to easily identify which statistic group each column belongs to.
As mentioned in step 7, you can toggle the visibility of statistic column groups. This allows you to show or hide all columns within a group with a single click.
Columns:
All columns within the Moneyball table include interactive features.
Hovering over some columns displays additional information with an icon.
You can sort column values by clicking on the icon.
Opening the action menu via the icon allows you to choose the sort direction or remove the sort.
Columns Filters:
If column filters are visible, you can filter data across all columns in the table.
Filter types vary depending on the column:- Text Input: Search for text matches within rows.
- Multi Select Dropdown: Choose multiple values from the table results to display rows where the column value matches any selected value.
- Minimum &l; Maximum Input: Define a range by setting minimum and maximum values for the column.
Open Player Details Panel:
Clicking on a player's name will open the player details panel, providing more detailed information such as a comparison chart and their top 5 statistics.
Copy Player Name to Clipboard:
Clicking on the icon on a player's name will add that player's name to your clipboard.
Statistic Badge:
Each statistic column row displays the player's value for that statistic in a colour-coded badge.
The colour scale ranges from red to green.
A shade closer to green indicates that the player performs better in that statistic compared to all players in your uploaded file.
These colours provide a quick visual indication of each player's performance within each statistic.
Moneyball Chart View
In addition to the table view, there is a scatter chart view that presents the same data in a different format.
You can access the scatter chart view by clicking the Show Chart button in the Moneyball table view.
Below is an annotated image highlighting all components of interest in the scatter chart view.

Show Table View:
You can return to the table view by clicking the Show Table button.
Update Scatter Chart Axis Values:
You can update the x & y-axis scatter chart to compare the two selected statistics.
By default, the x-axis statistic is xG Overperformance.
By default, the y-axis statistic is Goals/90.
Updated Moneyball Scatter Chart Axis values
Update Axis Statistic Filters:
Axis Filters Applied
You can update the minimum and maximum x & y statistic values, just as you do with column filters in the Moneyball table view.
Axis changed, but previous axis filter will still persist
Any filter changes applied here will also reflect in the Moneyball table view, and vice versa.
Updating an axis value will retain previous axis filters, as filters are applied globally, and not reset when an axis value is updated.
Apply Filters:
Just like in the Moneyball table view, you can apply filters in the Moneyball scatter chart view.
Moneyball Filters Panel
Click on the Filters button to open a panel with all column groups in an accordion list. Within each group, you'll find columns and their input filters.
Highligting filters have been appliedApplying any column filter changes here will also apply to the Moneyball table view and vice versa.
When filters are applied, the corresponding column group will be highlighted and the accordion item will be open by default. Additionally, a icon will appear on the Filters button, and hovering over it will show which filters are applied.
Updating an axis value will retain any previous axis filters, as filters are applied globally.
Reset Filters:
Clicking the Reset Filters button will clear all filters in the Moneyball scatter chart view.
This will also reset all filters in the Moneyball table view.
y-axis:
The y-axis displays ticks from the minimum to maximum value of the y-axis statistic from your dataset.
If any filters are applied to the y-axis, this will affect the minimum/maximum tick values.
x-axis:
The x-axis displays ticks from the minimum to maximum value of the x-axis statistic from your dataset.
If any filters are applied to the x-axis, this will affect the minimum/maximum tick values.
Average y-axis Value:
A horizontal reference line will appear on the scatter chart, identifying the average value of the y-axis values from the dataset. This reference line acts as a benchmark, helping to set expectations for players in the dataset.
If any filters are applied to the y-axis, this will update the average value to reflect the revised dataset.
Average x-axis Value:
A vertical reference line will appear on the scatter chart, identifying the average value of the x-axis values from the dataset. This reference line acts as a benchmark, helping to set expectations for players in the dataset.
If any filters are applied to the x-axis, this will update the average value to reflect the revised dataset.
Both axis reference lines help split the scatter chart into four quadrants, providing clearer insights into the data. Each quadrant represents a different combination of the two statistics, making it easier to see which players excel in both statistics, which excel in one but not the other, and which underperform in both.
Splitting the chart helps quickly identify outliers—players that significantly differ from the average. This can highlight exceptional or underperforming players. The quadrants make it easier to compare the relative performance of players, allowing you to quickly see how players stack up against the average and each other.
Data Points:
All players are represented by data points in the scatter chart.
Hovering over any data points will display a tooltip with more granular details including:
- Name
- Age
- Club
- Positions
- Appearances
- Total Minutes Played
- Average Rating
- Wage
- Transfer Value
- Asking Price
- x-axis statistic value
- x-axis statistic percentile value
- y-axis statistic value
- y-axis statistic percentile value
Within the Moneyball Scatter Chart view, you have the ability to click on any player data point to instantly open the Player Details Panel, identical to the one accessible from the Moneyball Table View.
This enhancement eliminates the need to switch back to the Moneyball Table View to locate the player of interest and click on their name to view the Player Details Panel. Instead, everything can now be seamlessly done within the Moneyball Scatter Chart view by simply clicking on the relevant data point.
The scatter chart can display a maximum of 5,000 data points to prevent performance issues, though larger datasets may still cause sluggish performance, depending on your device.
If your uploaded file includes more than 5,000 players, use the Moneyball filters to reduce the dataset size to 5,000 players or less.

Moneyball Player Details Panel
Within the Moneyball table view, by clicking on a player's name you can access the player details panel.
There are a few sections within the player details panel to note.
Comparison Chart





All the data lines can be hovered to view all the statistic values and percentile rank from the chosen Computed/Action statistic for the hovered line.
In the Comparison Chart section, there is a Show Percentiles button alongside the Comparison Chart title. Clicking this button will replace the raw statistic values with percentile ranks for each statistic in the Radar Chart. This offers a clearer understanding of how the selected player performs in comparison to other players in your uploaded dataset and across the top 5 leagues.

When you adjust the Position dropdown value, the percentile ranks in the Comparison Chart section will automatically update to reflect the selected position. This means that the data points on the radar chart will display the percentile rank of each statistic relative to other players in the selected position. Unlike the default percentile rank, which considers all players regardless of their position, this feature allows you to see how a player compares specifically within the selected position. For instance, a Striker's Non-pen xG/90 statistic will likely have a higher overall percentile rank when compared to all positions, as it will include those positions that are less likely to score. However, when you filter by Strikers only, the percentile rank will provide a more accurate reflection of how the player fares against others in the selected position, offering better insights into their goal-scoring ability as it excludes those players who are less likely to score that would initially inflate their default percentile rank.

To revert to displaying the original raw statistic values in the Comparison Chart, simply click the Hide Percentiles button.
Key Areas

The Key Areas section provides a high-level overview of a player's performance in critical aspects of the game compared to the most active in those areas.
Theses areas include:
- Shots
- Passing
- Crossing
- Chances Created
- Tackles
- Heading
- Pressing
- Goalkeeping
Each key area is depicted in a Circular Proportional Chart. The outer circle represents the maximum value for that area among all players in your uploaded file. Indicating the maximum number of that action that a player could reach. All inner circles stipulate the percentage of that statistic against the maximum value.
For example, in the Passing area, the outer circle represents the maximum value of Passes Attempted/90 from all players in your uploaded file. The first inner circle will be the chosen players' Passes Attempted/90 value and it' percentage of the maximum Passes Attempted/90 value, followed by their Passes Completed/90 value, followed by their Progressive Passes/90 value & finally, their Open Play Key Passes/90 value.
This allows you to visualise how the chosen player' Passes Attempted/90 value compares to the player who has the most Passes Attempted/90, as repsentend by the size of the players' circle for their Passes Attempted/90 compared to the maximum Passes Attempted/90 value. So, if the chosen players' Passes Attempted/90 circle looks about half the size of the outer circle, it means the chosen players' Passes Attempted/90 is about half that as the most active passer of the ball.
This also allows, for example, to easily visualise how many Passes Completed/90 the chosen player has relative to their attempts.
You can hover over each key area to view a tooltip which includes all of the statistics used within the key area, and for each statistic it will include: the chosen players' statistic value, the chosen players' statistic percentile rank & the maximum value for that statistic.

Using the Position dropdown, you can narrow down the comparitive maximum figures to be isolation to the select position. The default value will be All Positions.
Updating the Position dropdown here, will also affect the Position dropdown in the Comparison Chart section above.
Top 10 Statistics

Statistics List

View each statistic value for the chosen player in an accordion list.
In the Statistics section, you can seamlessly switch between viewing the raw statistical values and their corresponding percentile rankings.
This functionality mirrors that of the Comparison Chart section and is activated by clicking the Show Percentiles button. Notably, this button is synchronised with the same button in the Comparison Chart section, meaning toggling the button in one section will also affect the other.
Clicking this button will replace the raw statistic values with percentile ranks for each statistic.
To revert to displaying the original raw statistic values in the Statistics section, simply click the Hide Percentiles button.

