Why existing tools don't answer it
Two kinds of tool already try, and each is built for a slightly different job:
Predictors: Prediction tools need a real fixture to point at. They can tell you something useful about Saturday's match but they can’t tell you anything about how a Liverpool team from 2024/25 might have performed against a PSG team from 2025/26. That match isn't on any fixture list and never will be.
Rating-based simulations: Ratings systems will happily play any match you like, and the good ones are genuinely sophisticated with highly detailed match engines, tactical instruction and squad management.
But they are built to be played.
This means they require every player to be legible as a set of attributes (a figure for finishing; a figure for pace; a figure for composure; etc…). This constrains the data to acting as assessments rather than measures. While they may often be well informed carefully composed (Football Manager’s database is excellent, for example), every result a ratings-based simulation produces ultimately sits downstream of these assessments. That isn't a flaw. It's the right design for a game.
However, it is simply a different question from the one I wanted answered. If the argument is about what a player would actually produce, I'd rather the inputs were things that had been counted than things that had been judged.
What the Football Apptitude Simulator does differently
The Simulator builds the match out of the same per-90 data the rest of the app runs on. No player is handed a rating.
A real player carries his own actual output (e.g.: goals, assists, shots, shots on target, xG, fouls, cards) from his actual team, in his actual league, in his actual season. Those counted rates are the foundation the match is played from, which means the result is traceable: you can always follow it back to the players you picked and what they really did.
Team Selection
Team selection within the simulator allows you to select from any existing team within the database, or create a completely custom team template based around a chosen league and season. Any team from the supported leagues and seasons can be set against any other: an ordinary fixture, or one that could never appear on a fixture list (e.g.: a Liverpool side from 2024/25 against a PSG side from 2025/26). Alternatively, you can create a team template from scratch using a league and season so you can compare the real impact of players without accounting for team form.
Choose your Starting 11 and Substitutes
Choose from any player in the database: A real player arrives with the genuine stats (e.g.: goals, shots, xG, assists…) that he actually recorded, in his real team, league and season. You are not limited to his club's squad, either: any player in the supported leagues and seasons can be pulled into either side, so a single team can be drawn from several leagues at once.
You can also adjust a real player's form: Every player sits on a dial that moves him up or down relative to the others in his position that season. This is the same z-score logic used across the app. Left alone, the dial changes nothing and you keep his real record. Moved, it plays him through a poor run, or the best spell of his career. You get to use your judgement, laid over his data.
Players not in the database: You can also create a player who is not in the database at all. As custom players have no real data for the app to draw on, the Simulator takes a slightly different approach. Rather than invent numbers for him, the Simulator starts him at the average for his position in the chosen league and season. If you place him in a real team, he also picks up context from that team’s form. Finally, you customise his form using the dial. This allows you to simulate the impact of signings from outside the database with the impact you expect them to have, or create your own wonderkid.