On the tagging of fast bowlers into categories, I think the implementation should be simply based on the Speed value attribute. If its 90+, the bowler should be able to bowl average speeds of late 140 (combined with the stamina/confidence value). If its 85-90, the mean speeds should be 140-145, again depending on the value of confidence/stamina. an attribute of 80-85 must achieve average speeds of 135ish. Off course each of these would follow some sort of a bell curve distribution with the rare deliveries faster or slower. Tagging by name is very arbritrary and leads to unwanted complication. In fact, based on the speed attributes of the bowler, the in-game scorecard should be able to classify the bowler automatically. If I had a bowler speed distribution for all top bowlers of different speed categories, there should be a straight forward way to implement this. If we had a dataset of 1000-odd deliveries (the more the better) bowled by Rabada, Anderson, Bumrah, Shami, Bhuvaneswar, Broad, Gabriel, Starc, Cummins, Hazelwood, Stokes, Woakes, Yadav, Ishant etc and look at the mean speed distribution for each of them, you can assign attributes for the bowling speed based on it. Even, on the stamina front, if we had numbers for these speeds in the 2nd/3rd spells in test cricket or the fag end of a spell, one can assign a scaling factor that depends on bowler stamina. I think we must do away with the tag of FM, MF, F etc entirely. Currently, a speed attribute of 90 results in a different sort of a bowling speed for a bowler tagged FM versus fast within the academy. Why all that when a simpler model should give you a decent gradation? When numbers can capture something, why use words? As anyone who has worked on designing models to simulate complex processes would tell you, the fewer parameters you have in your model the better.