Preston Choate
← CFB Data Mining

CFB 27 School Prestige From My School Grades

(updated )
cfb27 recruiting

Related: Recruiting tunables · NIL Offer → Recruiting Influence.

Executive summary

  • Main finding: program prestige (TeamPrestige, half-star units where 10 = 5★) comes from MySchoolTeamPrestigeTuning, not from averaging every My School grade.
  • Only five grades have nonzero weight: Championship Contender, Pro Potential, Brand Exposure (1.0 each), plus Program Tradition and Conference Prestige (0.75 each).
  • Coach Prestige, Academic Prestige, Athletic Facilities, Campus Lifestyle, Stadium Atmosphere, Playing Style, Proximity, Coach Stability, and Playing Time all weigh 0.
  • Each letter grade maps to points via GradeToPointsConversion (A+ = 5.25 through F = 0). Prestige is a weighted average of those points, then mapped to half-stars.
  • Best-fit star mapping from a fresh dynasty save: floor(score × 2) (clamped 0-10). About 68% of teams match exactly; 100% are within ±0.5★. Remaining misses line up with prestige lagging live grades.
  • My School grades have per-grade update frequencies (Weekly / Yearly / Static / ByPlayer). Working assumption: program stars refresh on a seasonal path, not every weekly grade tick.

Status: weights, grade-to-points, and grade ChangeFrequency values confirmed from dynasty-tuning-binary.FTC. Pro Potential aggregation, floor(score × 2), and seasonal star refresh timing are save-correlated / inferred, not yet decompiled.

Requested by Doug (MaxPlaysCFB Discord).


Why this matters

The UI shows many My School letter grades plus a separate prestige star rating. Only five of those grades feed the stars. Raising Coach Prestige or Academics can still help recruiting pitches, but it does not change program prestige under this tuning.


Core formula

From MySchoolTuning.TeamPrestigeTuning -> MySchoolTeamPrestigeTuning:

points(grade) = GradeToPointsConversion[LetterGrade]   # A+ through F

score = (
    points(ChampionshipContender) * 1.00 +
    points(ProgramTradition)      * 0.75 +
    points(ProPotential)          * 1.00 +
    points(BrandExposure)         * 1.00 +
    points(ConferencePrestige)    * 0.75
) / 4.5

TeamPrestige ~= floor(score * 2)   # half-star units; 10 = 5.0★

4.5 is the sum of the nonzero weights (mTeamPrestigeWeightsTotal in the binary).

Pro Potential is stored per position on MySchoolTrackingTable. The best save fit averages QB, RB, WR, TE, OL, DL, LB, DB (exclude K and P), converts each letter to points, then averages.


Grade weights

MySchoolTeamPrestigeTuning.GradeWeights (indexed by MySchoolGrade):

My School gradeWeight
Championship Contender1.00
Pro Potential1.00
Brand Exposure1.00
Program Tradition0.75
Conference Prestige0.75
Playing Style0
Proximity to Home0
Campus Lifestyle0
Stadium Atmosphere0
Academic Prestige0
Coach Stability0
Coach Prestige0
Athletic Facilities0
Playing Time0

Letter grade to points

GradeToPointsConversion (LetterGrade order A+ through F):

GradePoints
A+5.25
A4.833
A-4.417
B+4.00
B3.58
B-3.167
C+2.75
C2.333
C-1.917
D+1.50
D1.083
D-0.667
F0

Worked examples

Grades and saved TeamPrestige from a fresh CFB 27 dynasty save. Predicted stars use floor(score × 2) / 2.

Ohio State: 5.0★ (match)

InputGradePointsWeightContribution
Championship ContenderA+5.2501.005.250
Program TraditionA+5.2500.753.938
Brand ExposureA+5.2501.005.250
Conference PrestigeA+5.2500.753.938
Pro Potential (8-pos avg)5.0411.005.041

Pro Potential grades: QB B, RB/WR/TE/OL/DL/LB/DB A+.

sum = 23.416
score = 23.416 / 4.5 = 5.204
floor(5.204 × 2) = 10  ->  5.0★

Saved prestige: 5.0★.

Oregon: 4.5★ (match)

InputGradePointsWeightContribution
Championship ContenderA+5.2501.005.250
Program TraditionB+4.0000.753.000
Brand ExposureA4.8331.004.833
Conference PrestigeA+5.2500.753.938
Pro Potential (8-pos avg)4.9371.004.937
sum = 21.958
score = 4.880
floor(4.880 × 2) = 9  ->  4.5★

Saved prestige: 4.5★. Tradition at B+ is the main gap vs a full 5★ profile.

Rutgers: 2.0★ (match)

InputGradePointsWeightContribution
Championship ContenderC-1.9171.001.917
Program TraditionD1.0830.750.812
Brand ExposureC-1.9171.001.917
Conference PrestigeA+5.2500.753.938
Pro Potential (8-pos avg)2.2281.002.228
sum = 10.812
score = 2.403
floor(2.403 × 2) = 4  ->  2.0★

Saved prestige: 2.0★. Conference prestige is strong; contender, brand, and tradition keep the stars down.

Oregon State: 2.0★ (match)

InputGradePointsWeightContribution
Championship ContenderD1.0831.001.083
Program TraditionC2.3330.751.750
Brand ExposureD+1.5001.001.500
Conference PrestigeB3.5800.752.685
Pro Potential (8-pos avg)2.2811.002.281
sum = 9.299
score = 2.066
floor(2.066 × 2) = 4  ->  2.0★

Saved prestige: 2.0★.

Alabama: predicted 4.5★, saved 5.0★

InputGradePointsWeightContribution
Championship ContenderA-4.4171.004.417
Program TraditionA+5.2500.753.938
Brand ExposureA+5.2501.005.250
Conference PrestigeA+5.2500.753.938
Pro Potential (8-pos avg)4.6251.004.625
sum = 22.167
score = 4.926
floor(4.926 × 2) = 9  ->  4.5★

Saved prestige: 5.0★. Contender at A- instead of A+ puts the live score just under the 5.0★ cut. See prestige lag for why the HUD can still show five stars.


How often grades update

From MySchoolGradeInfo.ChangeFrequency:

GradeFrequency
Playing StyleWeekly
Championship ContenderWeekly
Program TraditionWeekly
Stadium AtmosphereWeekly
Brand ExposureWeekly
Coach StabilityWeekly
Athletic FacilitiesWeekly
Playing TimeWeekly
Conference PrestigeYearly
Coach PrestigeYearly
Pro PotentialYearly
Campus LifestyleStatic
Academic PrestigeStatic
Proximity to HomeByPlayer

Of the five prestige inputs, Contender / Tradition / Brand are weekly; Conference Prestige and Pro Potential are yearly.

MySchoolGradeEval exposes both UpdateSeasonalGrades and UpdateTeamPrestige, which is consistent with stars being rewritten on a seasonal pass rather than every weekly grade update.


Prestige lag vs live grades

Examples above come from DYNASTY-Fresh-for-hard-sell-testing (2026 PreSeason, week 0).

Working assumption: TeamPrestige is calculated when preseason starts (or on another seasonal My School pass), then held. Live My School grades keep updating on their own schedules, so the star rating on the team can disagree with a live recompute from current grades until the next seasonal refresh.

That fits Alabama here:

  • Live formula with current grades -> 4.5★
  • Saved TeamPrestige -> 5.0★
  • Championship Contender (a weekly prestige input) is already A-, enough to miss the 5.0★ cut
  • On a brand-new preseason save, stars may still be the dynasty-start seed (Alabama as a default 5★ program) or the last seasonal write, while Contender has already moved

We have not yet proven the exact calendar hook or whether blue bloods are seeded to 5★ at dynasty create. The grade frequencies plus this preseason mismatch are the evidence so far.


Grades that do not move prestige stars

Improving these alone does not change TeamPrestige:

  • Coach Prestige / Coach Stability
  • Academic Prestige
  • Athletic Facilities / Campus Lifestyle / Stadium Atmosphere
  • Playing Style / Proximity to Home / Playing Time

They still matter for pitch bonuses, dealbreakers, and other systems. They just are not inputs to the program star rating.


Open questions

  • Exact Pro Potential rollup (average-of-positions shape fits; K/P exclusion is best-fit).
  • Exact score-to-half-star quantization (floor(score × 2) vs a threshold table).
  • Confirm when TeamPrestige is written (preseason start vs other seasonal event), and whether dynasty create hard-seeds some schools.

Sources

  • Schema: MySchoolTeamPrestigeTuning (GradeWeights, GradeToPointsConversion), referenced from MySchoolTuning.TeamPrestigeTuning
  • Grade schedules: MySchoolGradeInfo.ChangeFrequency; seasonal hooks on MySchoolGradeEval (UpdateSeasonalGrades, UpdateTeamPrestige)
  • Enum order: MySchoolGrade, LetterGrade (A+ through F)
  • Values: dynasty-tuning-binary.FTC (CFB 27)
  • Cross-check: data/DYNASTY-Fresh-for-hard-sell-testing school grades vs Team.TeamPrestige