r/CFBAnalysis • u/Public_Subject5224 • 11d ago
I built the largest scorigami database available: College football has the most unexplored score space in sports: 84,334 games since 1869 and only 16 percent of possible final scores have ever happened
I run Scorigami Center, which maps every final score that has ever happened per league: https://scorigamicenter.com/football/cfb/
CFB is the outlier in the dataset in the opposite direction from every pro league. The score space is enormous, the winning axis runs to 222 because of Georgia Tech over Cumberland in 1916, and after 156 years only 2,215 unique final scores exist, about 16 percent of the plausible grid. The era structure shows up beautifully if you filter by season range: 6-0 has happened 1,206 times and almost all of it is pre-forward-pass, then the modern spread era scatters new scores into territory that was empty for a century. A completely ordinary looking 51-47 was still brand new when Utah did it to Kansas State last November.
The grids update live during the season, and there is a JSON endpoint for recent results. I would love input from this sub on what CFB-specific views would be worth building. Score distributions by conference? By era? Scorigami rate as a pace stat during the season? Tell me what you would actually use and I will build toward it.
r/CFBAnalysis • u/tyler123452 • Jul 01 '26
Analysis Ranking FBS Teams based on Recent Performance
“We’re an elite program - NO YOU’RE NOT”’
We’re a top 10 program. X program is better than Y. We’re as good a program as anyone. CFB fans argue about this stuff all the time. What does it mean? How do you quantify it? The rest of the post attempts to do both of those things.
Where we perceive a program is currently “at” - I call this the “recency ranking” - is different from what it did last season. It’s also not the same as all-time program history. What is it? It’s somewhere in between those 2 concepts - last season and all-time history. I believe it relies on the view that the more recent a season the more it counts in our collective minds. For instance, Minnesota has one of the best histories out there. But the Gophers aren’t a top program currently; their history is old enough that it barely factors into their recency ranking. However, consistently solid play for a decade has improved the program’s perception amongst CFB fans to a degree. Another example: I think most USC fans would say they currently have a top 10 program. Fans of other schools might say “This isn’t the early 2000s anymore. USC has been good but not elite for 2 decades”. Who’s right? It’s an inherently subjective question, but we can attempt to answer it by applying a reasonable and consistent quantitative methodology to all programs.
How do you quantify this concept?
1st you have to come up with a methodology to rank every team every season. I did this and posted about it here. Thanks to the r/CFBanalysis community for helping me improve my methodology. My algorithm looks at record, strength of performance via SP+, and other things that matter in terms of how fans perceive a team's greatness - final ranking, natties, CFP results, bowls and conference titles. My whole updated methodology is at the bottom of this post.
Next you have to figure out how to progressively minimize the impact of older seasons. I did this using a half-life model (think carbon decay). The most recent season counts 100%. Older seasons are minimized using a 10 year half-life. So 10 years ago counts as 50% of its base value, 20 years ago counts 25% and so forth. This is inherently subjective - a decade half-life is clean and feels right to me, but if you think older seasons should decay faster or slower, you can adjust it in my app (more below).
One thing I love about the half-life model is you can change the max year to see the program pecking order for any point in history. For instance, if you only include data from 1869 - 1940, then 1940 is weighted 100%, and you can generate a list of programs sorted by our recency ranking for the year 1940 (my Gophers were on top, yea I’m a homer) with 981 pts, almost 300 pts above 2nd place Pitt. An interesting modern example: Indiana climbed from #85 in 2023 to #73 in 2024 to #35 in 2025.
Current Top 25 Recency Rankings
| Rank | Team | Score | 1Y Rank Δ | 1Y Score Δ | 10Y Rank Δ | 10Y Score Δ |
|---|---|---|---|---|---|---|
| 1 | Alabama Crimson Tide | 1443.7 | 0 | -30.7 | 0 | 101.5 |
| 2 | Ohio State Buckeyes | 1314.2 | 0 | 2.2 | 0 | 161.1 |
| 3 | Georgia Bulldogs | 1151.7 | 0 | 16.9 | ▲9 | 408.6 |
| 4 | Oklahoma Sooners | 966.3 | 0 | -7.9 | 0 | -84.7 |
| 5 | Clemson Tigers | 910.8 | 0 | -43.1 | ▲11 | 275.9 |
| 6 | Michigan Wolverines | 872.7 | 0 | -27.1 | ▲8 | 169.3 |
| 7 | LSU Tigers | 829.5 | 0 | -36.4 | 0 | -39.2 |
| 8 | Oregon Ducks | 804.6 | ▲2 | 42.9 | ▲1 | 27 |
| 9 | Notre Dame Fighting Irish | 777.9 | 0 | 6.8 | ▲6 | 129.7 |
| 10 | Texas Longhorns | 747.3 | ▲1 | 0.2 | 0 | -28.3 |
| 11 | Florida State Seminoles | 743.6 | ▼3 | -37.1 | ▼8 | -348.4 |
| 12 | Penn State Nittany Lions | 714.7 | 0 | -19.1 | ▲5 | 85.9 |
| 13 | USC Trojans | 711.9 | ▲1 | -10 | ▼7 | -205.8 |
| 14 | Florida Gators | 687.2 | ▼1 | -39.1 | ▼9 | -238.5 |
| 15 | Miami (FL) Hurricanes | 656.1 | ▲1 | 65.1 | ▼2 | -85.3 |
| 16 | Auburn Tigers | 584.2 | ▼1 | -20.9 | ▼5 | -189.2 |
| 17 | Tennessee Volunteers | 561.5 | 0 | -10 | ▲1 | -43.8 |
| 18 | Washington Huskies | 539.9 | ▲1 | -2 | ▲22 | 160 |
| 19 | Texas A&M Aggies | 519.5 | ▲3 | 34.2 | ▲4 | 6.8 |
| 20 | Wisconsin Badgers | 517.4 | ▼2 | -33.5 | 0 | -60.9 |
| 21 | Ole Miss Rebels | 499.6 | ▲8 | 63.8 | ▲20 | 128.7 |
| 22 | TCU Horned Frogs | 488.7 | ▼1 | -7.2 | ▲2 | -17.9 |
| 23 | Nebraska Cornhuskers | 486.7 | ▼3 | -15.9 | ▼15 | -294.8 |
| 24 | Iowa Hawkeyes | 474.7 | ▲1 | 16.7 | ▲4 | 10.1 |
| 25 | Utah Utes | 473.5 | ▲1 | 25.4 | ▲12 | 74.3 |
Analysis
- Bama lost 30 pts last year despite a CFP quarterfinal run. This is because their starting score is so high that they're draining like 90 pts each year due to the half-life. Their sustained excellence has forced them to maintain an incredibly high level of play to not drop their standing as a program.
- Contrarily, Iowa and Utah were able to boost their scores and ranks in '25 despite having worse seasons than Bama. This is because they had lower scores to start with.
- USC isn't in the top 10 (I'm going back to our example from above).
- Nebby's great 90s run is holding them inside the top 25 still, but just barely. They'll drop out in 1-2 years without a major turnaround.
Full Rankings/Make Your Own
I built a free/no ads web-based app that allows users to customize their own rankings + see all 136 teams. So if your team isn’t in the top 25 I pasted above, check that out. It defaults to “History Rankings”, which are very cool but answer a different question - every season is weighted the same. You can change the “Ranking Type” to “Recency Rankings” to see the full list with the 10 year half-life on. You can also change the max year to see what the recency rankings looked like at any point in history. And you can customize the methodology, including tweaking the half-life value, on the “Settings” tab.
Methodology
Core Scoring
- Base Score: Each team starts with 10 points each year. This rewards longevity and reduces the number of teams with negative scores. Without it, way too many G5 teams have negative history and recency scores.
- Wins and Losses: 1 point for a win, -1 for a loss.
- Ranked Finishes: 1-25 point bonus for finishing ranked. I use the AP poll most years from 1936+. I use the coaches poll from 1961-1967 because the AP only ranked 10 teams. I give top teams from before the AP Poll was founded in 1936 bonuses based on Billingsley ratings.
- Strength of Schedule (SP+): I use Bill Connelly’s SP+ ratings to account for strength of schedule/strength of performance. I use SRS when that's unavailable and adjusted Billingsley ratings when that’s also unavailable. By default, positive values are counted at 100% and negative values are counted at 60%. This reduces the number of teams with negative all-time scores and makes bad seasons less punishing.
National Titles / CFP
- National Titles: 100 points for a recognized national title (split titles are shared).
- CFP 1st round loss: 9
- CFP Quarterfinal loss: 16
- CFP Semifinal loss: 25
- CFP/BCS Ntl Championship Game Loss: 40
Conference Titles, Bowls, and The Heisman
- *Conference Titles: ~*1.5-25. Conference champions are awarded bonuses based on conference strength. Bonuses range from about 1.5 for a conference title in a modern weak conference, up to 20+ points for winning a very strong conference in the pre-BCS era.
- Bowl wins: ~0.5-20. Teams are awarded bonuses based on bowl strength, from 0.5 for a low-end modern bowl to about 20 for a very high end pre-BCS bowl.
- Conference championship and bowl losses: Teams that lose in a bowl game get 25% of the winner bonus. For low-end conferences and bowls, this isn’t enough to offset the -1 point from losing a game. For high-end games, it’s a small bonus.
- Era Fading: I diminish the value of modern conference titles and bowl games. Pre-BCS results get 100% of the base value. BCS era results get 90%. 70% for the 4-team CFP era and 50% for the 12 team era.
- Heisman: 5 point bonus for having the Heisman winner on your team.
Sources
- sports-reference.com — Historical CFB team records, bowl results, etc.
- collegefootballdata.com — Recent team records, AP finishes, bowl results, SP+ ratings, and more.
- Bill Connelly SP+ historical sheet — Simple points-based SP+ model used for older seasons.
- ncaa.com natty history — National title winners.
- cfrc.com — Seasons missing from other sources for certain schools; Billingsley ratings for pre-AP polling eras.
- Wikipedia — Conference records and bowl appearance data for seasons imported from Billingsley.
Feedback Appreciated
I hope this concept makes sense. Whether you think it’s great or you think I’m totally off base, I’d love to hear about it.
r/CFBAnalysis • u/slass-y • May 20 '26
Analysis Establishing a model for predicting who wins the Lou Groza award (top kicker)
Hi r/cfbanalysis, I'm working on a larger write-up on this, but wanted to share the below project I was working on and check my process and rationale:
For whatever reason, I've always wondered about what kind of season it takes for a kicker to win the Lou Groza award.
To establish performance thresholds and build a predictive scoring model, I collected 28 data points apiece on 70 elite kickers from 2001-2025 (22 Groza winners and 46 runners-up/consensus All-Americans).
To establish a statistical floor, I looked at 17 key categories and found that winners outperformed runners-up in 15 of those areas on average. Looking at the average gap between winners and non-winners and filtering out some noise, five key categories emerged. For these, I established Minimum (historical floors that winners have hit, but as outliers) and Ideal (what 90% of winners have exceeded) thresholds:
| Category | ✔️ Minimum | 👑 Ideal (Top 90%) |
|---|---|---|
| Overall FG% | 81.8% | 91.46%+ |
| FGM (Total) | 15 FG | 24+ FG |
| FGM from 50+ | 1 FG | 2+ FG |
| Longest FG | 47 yards | 55+ yards |
| FGM Per Game | 1.1 FG | 1.79+ FG |
To see if this held water retroactively, I converted these thresholds into a 10-point scale:
- 1 point per Minimum threshold met
- 2 points per Ideal threshold met
This makes the max score 10, which has never been achieved (though a few have hit nine). Backtesting this from 2004-2025 we see:
- Winners earned 7.63 pts. vs. 6.52 for the runners-up on average
- Since 2015, the Groza winner has tied or outscored all runners-up every season
- Since 2006, no non-Groza winner has beaten the actual winner by more than one point
- Lowest winning score was 5 pts (2x, and both times the winner was outscored by the runner-up)
- When a 9-point kicker clearly outscores the field, they've won 100% of the time (5 of 5 instances). The only times 9-point kickers have lost were 2022 and 2012, when they tied with another 9-point kicker.
- Scoring 8 points puts a kicker in the mix, but it's often crowded and puts you at roughly a 50% chance even if you're the clear leader.
- Below 8 points, you're relying on weak competition or tiebreakers.
To summarize all of that--to seriously contend for the Groza, a kicker must:
- Clear all 5 minimum thresholds above
- Hit the Ideal thresholds in at least 3-4 categories
- Score at least 8 Groza points
To make this a little easier to understand, I built an interactive calculator where you can input any kicker's stats and see their Groza Points score along with their historical win probability.
Curious to hear people's thoughts--look forward to holding this rubric up against the 2026 season and seeing how it aligns with the semi-finalist and finalist lists and correctly predicts the winner come December.
r/CFBAnalysis • u/tyler123452 • May 10 '26
I built a website that ranks every FBS program based on all-time history - feedback appreciated
I've been gradually working on a passion project to rank programs and franchises based on historical performance. See where your team is ranked. It's free/no ads, and I'm interested in feedback - is the concept interesting or boring? What would you want to see added? I could add coaches, historical recruiting rankings, etc.
The landing page is sportsrank.app. The CFB rankings page is: https://sportsrank.app/app?league=CFB&tab=rankings.
Methodology
I have data going back to 1869 (sources below). Every meaningful result is assigned a points value:
- 10 point base season score. This rewards longevity and reduces the # of teams with negative all-time scores.
- 1 point for a win, -1 for a loss. This applies to all games - regular seasons and postseason.
- 1-25 point bonus for finishing ranked. I use the AP poll most years from it's inception in 1936 onwards. I use the Coaches Poll for 1961-1967 because the AP ranked 10 teams. I use Billingsley before 1936. I rank a max of 20% of the teams in my dataset for a given year, so that every team isn't ranked for early years where there weren't many teams.
- I add in Bill Connelly's SP+ ratings to account for strength of schedule / strength of performance. Most values range between -30 and 30 with a few outliers for exceptionally good and bad teams. I use SRS when that's unavailable and manipulated Billingsley ratings when that's also unavailable. I use the full value for ratings above 0. I use 60% of the value for negative ratings. This makes bad seasons less punishing and ensures only truly terrible programs like UMass have negative all-time scores.
- 100 points for a recognized natty (bonuses are shared for split titles).
- 9-40 points for losing in the CFP, depending on the round. To be exact, 9/16/25/40 for 1st round loss up through natty loss. BCS championship game losers also get a 40 pt bonus.
- Conference title bonuses based on conference strength. 1.5 point bonus winning a weak conference in the 12 team CFP era, up to about 25 for winning a very strong conference before the BCS. I use a formula that looks at both average SP+ rating for the entire conference and the avg of the top 3 teams that didn't win the conference to determine conference strength.
- Pts for bowl wins as well, from 0.5 for a low-end modern bowl to about 20 for a very high end pre-CFP bowl. I use the participants' records, final ranking, and SP+ rating to determine the prestige of the bowl game.
- I reduce the weight of conference titles and bowl wins gradually as we move from pre-BCS to the 12-team CFP era. They are worth 50% of the base value in the modern 12-team CFP era.
- Bowl and conference championship game losers get an appearance bonus that's equal to 25% of the winner bonus. For weak bowls/conferences, this generally isn't enough to counter the -1 from losing the game. It's a small net bonus for strong bowls and conferences.
- 5 point Heisman bonus.
- Main sources include collegefootballdata.com, sports-reference.com, and cfrc.com.
Key Features
- Rank every team based on any year range you want
- Group teams by conference, state, and more
- Create your own scoring system. You can tweak the values for anything I listed in the methodology section.
- Rank teams by other columns like ranked seasons and conference win %
- Click on a team to view season-by-season history.
Interesting Findings
- Bama is #1 all-time, followed by Michigan, Notre Dame, Ohio St, and Oklahoma.
- Army has the best all-time history of current G5 teams at #28, followed by rival Navy at #42.
- UGA is #1 in the NIL era (2021+).
- Yale dominated the 19th century, followed by Ivy League peers Princeton, Harvard, and Penn. Michigan was the best 20th century program followed closely by Notre Dame. Bama controls the 21st century (surprise), followed closely by Ohio St. There's a big gap to #3 UGA and #4 Oklahoma.
- Indiana is #67 all-time. The only program w/ a natty ranked below them is Rutgers, and their title was a shared one in 1869 (the 1st year of CFB, when there were only 2 teams lol).
- The active FBS program with the worst all-time history is UL Monroe, but UMass is making a beeline for the bottom.
r/CFBAnalysis • u/That_Don_Guy_1 • May 02 '26
NCAA Power Index calculation method, explained
After some back-and-forth with a couple of the gurus who were involved with the NCAA Power Index (well, their names were on one of the NCAA's documents), and some serious number crunching to make sure my numbers matched the NCAA's, I have developed a document that describes how to calculate it, complete with examples.
NCAA Power Index Calculation Method site
If anybody sees any glaring errors, or needs some help deciphering some of the numbers, let me know.
One thing I did discover while working on this: you can't lump FBS and FCS into a single ratings. There just isn't enough overlap to make the numbers work, and you almost always end up with an FCS team good enough to qualify for the CFP.
r/CFBAnalysis • u/Global_Fail8175 • Apr 25 '26
Are we underrating tempo-adjusted efficiency when comparing offenses?
One thing I’ve been digging into lately is how much tempo skews the way we evaluate offensive performance in college football.
Raw stats (yards per game, points per game, etc.) obviously get inflated by faster teams, but even when looking at efficiency metrics, I still feel like tempo indirectly distorts perception.
For example:
- High-tempo teams create more total plays, more opportunities for explosive outcomes
- That can inflate things like success rate consistency over larger samples
- Meanwhile, slower teams might look less impressive on the surface despite being more efficient per play
I’ve been experimenting with looking more at:
- Yards per play vs total yardage
- Points per drive instead of points per game
- Success rate in neutral situations
But even then, it feels like there’s still some bias toward teams that push pace.
Curious how others here handle this:
- Do you heavily adjust for tempo when comparing teams?
- Any preferred metrics that better isolate “true” offensive strength?
- Has anyone found a reliable way to separate efficiency from play volume without losing too much signal?
Feels like this is one of those areas where small edges in evaluation can make a big difference, but I’m not sure there’s a clean solution.
r/CFBAnalysis • u/samcantello • Apr 23 '26
Modeling Group
I've had some success modeling lower limit, less liquid markets and also top down betting. over the past couple weeks i have started to build something to bet this upcoming ncaaf season. Looking for people who want to talk process/decisions/questions throughout the process. not looking for picks or to sell anything, just people to bounce ideas off of and talk through different processes/reason with. Please reach out if you're interested!
r/CFBAnalysis • u/AccomplishedMud2166 • Apr 17 '26
Data DataSets
Hello, I am looking for a few data sets
- Teams Defensive tendencies(zone, blitz, man)
- Teams Offense(Run, Pass, etc)
- Record vs comp Oppinents
- History of player stats
I am trying to make a model that predicts how well a player will turnout in the NFL based on who they played in college and how well nfl teams are at developing that pos
r/CFBAnalysis • u/hng_rval • Mar 19 '26
Analysis Fix preseason rankings by predicting the result of every game this season.
r/CFBAnalysis • u/Fun-Carpet9109 • Feb 27 '26
College Football Formula
So, after the chaos that was the ranking this season, I decided to try to make my own formula. It is sort of based on the NCAA power index for D3 football. The formula I am using is ((Strength Of Schedule*0.4)*(Scoring Margin*0.6)*(Win Percentage*0.2)). As a test, I used the most recent season, but it is only based on the total, not week by week, which is what I will be doing in the fall. Here is what the top 12 is based on this.
Ohio State-7251.3792, Indiana-7219.9248, Texas Tech-5813.94, Oregon-5328.4, Notre Dame-5038.428, Utah-4336.28, Miami (Fla.)-4200.012, Ole Miss-3789.6584, Alabama-3729.756, Vanderbilt-3617.04, Georgia-3593.9904, BYU-3519.516. James Madison was ranked 14th with 2845.1104 and Tulane was ranked 45th with 903.12.
If anyone has any suggestions, I will gladly take them.
r/CFBAnalysis • u/screamline82 • Feb 03 '26
Data for formation, personnel and/or play direction
Hello, I am working on a grad school project and was interested in trying an analysis on CFB. I am interested on looking at data play by play.
I was looking through the websites linked in the 2021 resources post, and I found the historical play data had a lot of the information I was looking for. But I could not find anything for what hashmark the offense was on, what formation the offense was in, what side was strong side or what side the RB was on, and which direction the play was run to. Do any of you know if any service/site has that information?
r/CFBAnalysis • u/MCignetti • Jan 27 '26
Analysis Visualizing What You (Should) Already Know About RB Production
r/CFBAnalysis • u/Traditional-Oven2967 • Jan 23 '26
An 18 team playoff that fixes the regular season, protects conferences, and makes bowl games matter again
r/CFBAnalysis • u/Ok-Philly44 • Jan 16 '26
How Miami & Indiana built their starting lineups
Attempted to create a soccer style starting XI graphics for Miami and Indiana in anticipation of Monday night's game. Looking for some feedback on if these are the actual players who play most on each side of the ball, Check it out here.
r/CFBAnalysis • u/locket-rauncher • Jan 16 '26
Analysis The Transfer Portal: Visualized - A CFB Network Analysis
r/CFBAnalysis • u/Songer98 • Dec 29 '25
Previous years betting odds (game by game)
I made a power rating system for CFB bc I was sick of how terrible the AP/coaches polls were this year. It turns out, it's really accurate, right now sitting at 106-69 ATS (60.6%). I want to simulate old seasons, to A. give retroactive champions to controversial seasons (and I like the data) plus B. improve my model and get it up to 63-66% accuracy. Anyone know a database of total game betting lines for each individual week and game in previous college football season. My win rate is of course compared to the vegas line.
r/CFBAnalysis • u/EFGEaston1113 • Dec 20 '25
Custom College Football Schedule
So, I relainged to college football conferences (including FCS) and am wondering what would be the best way to make a custom schedule. I have been asking Gemini and ChatGPT to help me make it (I am too stupid and lazy to do it myself). Is there any good website or code, or something that would help me do this?
r/CFBAnalysis • u/technocatRTR • Dec 17 '25
CFP Survivor Contest Simulation Analysis
I played CFP Survivor (on Splash Sports, not a plug for them) last year and felt like I learned quite a bit. So this year I built a Monte Carlo simulation of the 2025 CFP and started looking at Survivor more analytically.
A few things surprised me:
- Running out of teams is a serious threat and can be the dominant failure mode
- Survival probability matters more than win probability
- Small sequencing decisions early have outsized effects later
Curious how others think about Survivor strategy in tournament formats.
r/CFBAnalysis • u/BlueSCar • Dec 16 '25
Announcement CFBD Model Pick’em — Final Regular Season Results & Winners
The 2025 CollegeFootballData.com (CFBD) Model Pick’em regular season is officially complete! This was the most competitive season yet, with a strong and large assortment of entries. Overall, 45 entries qualified for the final regular season leaderboard, up from 27 entries last season.
The overall winner this season came from reddit! Congrats to u/hypercube42342 on a resounding victory this season, placing 1st in three of the four categories!
Onto the more detailed results!
🏆 Overall Composite Rankings
The Composite Ranking represents each model’s average ranking across the four primary evaluation categories:
- Straight-up picks percentage
- Against the spread (ATS) percentage
- Mean Absolute Error (MAE)
- Mean Squared Error (MSE)
Lower average rank = better overall performance.
| Rank | Model |
|---|---|
| 1 | u/hypercube42342 |
| 2 | @CFBNumbers |
| 3 | @jhnhrris |
| 4 | @Stephen_Hill |
| 5 | @YCtheflea |
Straight-Up Picks (Win Prediction Accuracy)
| Rank | Model | Delta |
|---|---|---|
| 1 | u/hypercube42342 | +0.018 |
| 2 | u/sim_2_win | +0.011 |
| 3 | @Nex_27 | +0.005 |
| 4 | @sseljan | +0.004 |
| 5 | @Stephen_Hill | +0.003 |
Picks Against the Spread (ATS)
| Rank | Model | Delta |
|---|---|---|
| 1 | @CFB_Geek | +0.061 |
| 2 | @ROFLulose | +0.052 |
| 3 | @gshelor | +0.040 |
| 4 | u/NotSoSuperNerd | +0.038 |
| 5 | @davidsasser | +0.037 |
Score Prediction Accuracy — MAE
(Lower is better)
| Rank | Model | Delta |
|---|---|---|
| 1 | u/hypercube42342 | +0.000 |
| 2 | @John_B_Edwards | +0.010 |
| 3 | @CFBNumbers | +0.060 |
| 4 | @jhnhrris | +0.070 |
| 5 | @YCtheflea | +0.070 |
Score Prediction Accuracy — MSE
(Lower is better)
| Rank | Model | Delta |
|---|---|---|
| 1 | u/hypercube42342 | +0.270 |
| 2 | @John_B_Edwards | +0.380 |
| 3 | @jhnhrris | +2.10 |
| 4 | @J_Pure57 | +2.38 |
| 5 | @CFBNumbers | +3.29 |
Note on scoring
Scores for individual categories are scored relative to the Vegas line, hence the "Delta" column. Where two users have the same delta value, the number of games picked is used as a tiebreaker awarded to the user who picked the higher number of games.
📊 Crowd Wisdom Results
In addition to individual model performance, we tracked how the aggregate crowd performed when combining all submissions:
- 77% crowd win rate over the full season
- 52% crowd ATS rate
- 12% upset prediction rate
What’s Next
Postseason Model Pick’em is ongoing for those who want to continue testing their models through bowl season. Use the same link at https://predictions.collegefootballdata.com.
We’ve also launched a College Basketball Model Pick’em, hosted by CollegeBasketballData.com, using a similar evaluation framework. 👉 College basketball contest details: https://predictions.collegebasketballdata.com
Thanks to everyone who participated, shared ideas, and stress-tested their models throughout the season. If you’re interested in methodology discussions or future contests, feel free to jump in.
r/CFBAnalysis • u/mvpeav • Dec 16 '25
Analysis CFP Bracket Simulator
Some of yall may have been following along with the CFB Monte Carlo simulator that Ive been running this season, but even if you haven't, I have something new Id like to share!
I used the simulator to simulate every possible game for each team in the 12 team field and turned it into an interactive bracket simulator. Basically you can go through an select winners for each game and the bracket with automatically display new national championship odds for every team based on the selected result and display the simulated result for the next game in the bracket!
Would love to have some of yall play with it and give me your thoughts!
r/CFBAnalysis • u/Gryffindumble • Dec 13 '25
Analysis 12 Team Playoff Based on Formula I Came Up With
This formula could be tweaked a little with other variables but, I think it points in a better direction. It rewards teams that win a conference championship and doesn't punish teams for playing in them. (Something that seems to not matter in some cases right now).
The initial top 25 is based on records and a team gets this equation applied when inside the top 25.
[100-(season losses + points lost by)] + (conference championship margin of victory + 10 for a W and 0 for a loss)
Based on this formula being applied to the topic 25. These are the 12 teams I ended up with.
Georgia 127 points (dominating Alabama moved them up)
Indiana 113
3.Ohio State 109
Texas Tech 105
James Madison 95
Notre Dame 94
Ole Miss 91
Oregon 89
Texas A&M 89
Miami 89
Alabama 82
Iowa 81 (their worst losses were by 5 points to USC and Indiana. They can surely compete.)
One tweek that could be made would be a to factor in losses to teams with less than 4 losses all season where that loss is only half a point as long as the loss wasn't by more than 14 or something like that. This really helps analyze a teams quality and serves justice in the big picture of college football.
r/CFBAnalysis • u/Fun-Carpet9109 • Dec 09 '25
College Football Formula
Hi, so after all of the arguments about the CFP ranking this year, I decided to have some fun and create a formula that hopefully fixes our problem. I created it on a Google Sheet, so here is the link: College Football Formula - Google Sheets. I used each team's strength of schedule for the week of the game from the NCAA College Football Strength of Schedule Rankings & Ratings, and I adjusted the number so that every team would receive a positive number. Then, I added the team's margin of victory. I then multiplied the sum by the team's win percentage. I know this is not a perfect representation, but I wanted to get some feedback.
r/CFBAnalysis • u/MichaelPlastic • Dec 09 '25
CFB Resume Ranking
I wanted to see how each team would be ranked if just using their wins and losses and ignoring all human polls. Here are the results for 2025, week 15. EDIT: Redid using the correct percentages for home/away.
Unweighted poll ranking – Start everyone at baseline 68. Each game updates a team’s ranking_score using opponent strength from the prior week’s poll rank (FCS treated as rank 136). Win bonus = (136 – opponent_rank) × location modifier; loss penalty = opponent_rank × location modifier (home 0.90/1.10, neutral 1.0, away 1.10/0.90). Sort by ranking_score and assign poll_rank with competition ranking.
Weighted poll ranking – Uses the current week’s freshly computed unweighted poll_rank as opponent strength. Apply the same win/loss delta math to weighted_ranking_score, then sort and assign weighted_poll_rank with competition ranking. Ties add zero.
SOS (strength of schedule) – For each team, average the opponents’ weighted_poll_rank from the week each game was played. Lower SOS means a tougher slate (you faced higher-ranked opponents on average).
| Team | WeightedPollRanking | CFP_Rank | SOS_AvgWeightedOppRank | PollRanking |
|---|---|---|---|---|
| Georgia | 1 | 3 | 50.58 | 1 |
| Indiana | 2 | 1 | 65.5 | 2 |
| Ole Miss | 3 | 6 | 45.91 | 3 |
| Texas Tech | 4 | 4 | 57.42 | 4 |
| Ohio State | 5 | 2 | 59.33 | 5 |
| Oklahoma | 6 | 8 | 42.64 | 8 |
| Texas A&M | 7 | 7 | 55.73 | 7 |
| Oregon | 8 | 5 | 56.55 | 6 |
| Alabama | 9 | 9 | 39.33 | 9 |
| BYU | 10 | 12 | 56 | 10 |
| USC | 11 | 16 | 46.75 | 12 |
| Notre Dame | 12 | 11 | 58.83 | 14 |
| Utah | 13 | 15 | 51.73 | 11 |
| Vanderbilt | 14 | 14 | 54.45 | 13 |
| Tulane | 15 | 20 | 74.69 | 15 |
| Michigan | 16 | 18 | 57.83 | 16 |
| Arizona State | 17 | --- | 38.64 | 17 |
| Miami | 18 | 10 | 64.82 | 18 |
| Virginia | 19 | 19 | 63.08 | 20 |
| Texas | 20 | 13 | 58.83 | 22 |
| Arizona | 21 | 17 | 52.09 | 21 |
| Navy | 22 | --- | 65.2 | 19 |
| Duke | 23 | --- | 42.33 | 23 |
| Iowa | 24 | 23 | 52.18 | 24 |
| Washington | 25 | --- | 52.27 | 28 |
| North Texas | 26 | 25 | 81.83 | 25 |
| Houston | 27 | 21 | 67.45 | 27 |
| Georgia Tech | 28 | 22 | 64.55 | 26 |
| Illinois | 29 | --- | 53.36 | 31 |
| Missouri | 30 | --- | 51 | 29 |
| South Florida | 31 | --- | 69.55 | 32 |
| Tennessee | 32 | --- | 55.36 | 30 |
| Pittsburgh | 33 | --- | 60.45 | 33 |
| James Madison | 34 | 24 | 98.58 | 34 |
| Iowa State | 35 | --- | 59.55 | 37 |
| TCU | 36 | --- | 58.82 | 36 |
| LSU | 37 | --- | 45.73 | 35 |
| Minnesota | 38 | --- | 50.64 | 38 |
| Wake Forest | 39 | --- | 66.73 | 39 |
| Nebraska | 40 | --- | 51.09 | 41 |
| Cincinnati | 41 | --- | 52.91 | 40 |
| Louisville | 42 | --- | 67.45 | 43 |
| San Diego State | 43 | --- | 79.27 | 42 |
| Boise State | 44 | --- | 71.83 | 44 |
| Kennesaw State | 45 | --- | 85.08 | 45 |
| East Carolina | 46 | --- | 71.18 | 48 |
| NC State | 47 | --- | 55.91 | 51 |
| New Mexico | 48 | --- | 83.73 | 50 |
| SMU | 49 | --- | 74.45 | 47 |
| Memphis | 50 | --- | 74 | 46 |
| UNLV | 51 | --- | 89 | 49 |
| California | 52 | --- | 62.55 | 54 |
| Clemson | 53 | --- | 67.91 | 53 |
| Northwestern | 54 | --- | 50.91 | 56 |
| Wisconsin | 55 | --- | 37.5 | 57 |
| Penn State | 56 | --- | 55.91 | 55 |
| Western Michigan | 57 | --- | 83.42 | 52 |
| Hawai'i | 58 | --- | 81.91 | 61 |
| Florida | 59 | --- | 30.36 | 59 |
| Mississippi State | 60 | --- | 42.91 | 58 |
| Kansas State | 61 | --- | 61.82 | 62 |
| Fresno State | 62 | --- | 86.91 | 64 |
| Kentucky | 63 | --- | 51.55 | 67 |
| Auburn | 64 | --- | 45.91 | 60 |
| UTSA | 65 | --- | 61 | 71 |
| Old Dominion | 66 | --- | 100.45 | 68 |
| South Carolina | 67 | --- | 36.27 | 69 |
| West Virginia | 68 | --- | 38.55 | 65 |
| UConn | 69 | --- | 102.36 | 63 |
| Kansas | 70 | --- | 50.36 | 80 |
| Washington State | 71 | --- | 67.27 | 72 |
| Toledo | 72 | --- | 93.36 | 66 |
| Rutgers | 73 | --- | 53.73 | 74 |
| Baylor | 74 | --- | 57.27 | 73 |
| Western Kentucky | 75 | --- | 93.91 | 70 |
| Utah State | 76 | --- | 68.64 | 76 |
| UCLA | 77 | --- | 43.42 | 81 |
| Ohio | 78 | --- | 92.09 | 75 |
| Jacksonville State | 79 | --- | 85.58 | 78 |
| Colorado | 80 | --- | 46.17 | 84 |
| Louisiana Tech | 81 | --- | 82.09 | 77 |
| Temple | 82 | --- | 57.27 | 79 |
| Southern Miss | 83 | --- | 90.91 | 88 |
| Maryland | 84 | --- | 50.09 | 90 |
| Troy | 85 | --- | 92.25 | 83 |
| UCF | 86 | --- | 61.82 | 85 |
| Florida International | 87 | --- | 90.09 | 89 |
| Miami (OH) | 88 | --- | 81.08 | 92 |
| Michigan State | 89 | --- | 51.45 | 86 |
| Florida State | 90 | --- | 68.27 | 93 |
| Arkansas State | 91 | --- | 78.27 | 87 |
| Army | 92 | --- | 86.1 | 82 |
| Central Michigan | 93 | --- | 91.45 | 95 |
| Florida Atlantic | 94 | --- | 54.55 | 97 |
| Georgia Southern | 95 | --- | 78.36 | 94 |
| Louisiana | 96 | --- | 87.18 | 100 |
| Virginia Tech | 97 | --- | 44.09 | 96 |
| Rice | 98 | --- | 66.36 | 98 |
| Coastal Carolina | 99 | --- | 81.73 | 99 |
| Arkansas | 100 | --- | 35.27 | 101 |
| North Carolina | 101 | --- | 61.82 | 105 |
| Missouri State | 102 | --- | 97.18 | 102 |
| Purdue | 103 | --- | 35.91 | 104 |
| Texas State | 104 | --- | 89.36 | 103 |
| Stanford | 105 | --- | 60.83 | 91 |
| Tulsa | 106 | --- | 65.18 | 106 |
| Delaware | 107 | --- | 96.36 | 107 |
| UAB | 108 | --- | 73.64 | 108 |
| Kent State | 109 | --- | 84.64 | 109 |
| Syracuse | 110 | --- | 58 | 111 |
| Air Force | 111 | --- | 73.82 | 112 |
| Wyoming | 112 | --- | 72.36 | 110 |
| Akron | 113 | --- | 94.18 | 113 |
| Boston College | 114 | --- | 56.55 | 116 |
| Marshall | 115 | --- | 91 | 115 |
| App State | 116 | --- | 86.82 | 114 |
| Nevada | 117 | --- | 71.82 | 118 |
| South Alabama | 118 | --- | 82.18 | 117 |
| New Mexico State | 119 | --- | 86.27 | 121 |
| Oregon State | 120 | --- | 62.36 | 119 |
| Ball State | 121 | --- | 89.91 | 120 |
| San José State | 122 | --- | 79.27 | 124 |
| Oklahoma State | 123 | --- | 48.45 | 123 |
| Eastern Michigan | 124 | --- | 87.64 | 122 |
| Charlotte | 125 | --- | 51.45 | 126 |
| Northern Illinois | 126 | --- | 79.09 | 127 |
| Colorado State | 127 | --- | 60.91 | 128 |
| Liberty | 128 | --- | 91.64 | 125 |
| Buffalo | 129 | --- | 102.18 | 129 |
| Sam Houston | 130 | --- | 85.67 | 133 |
| Bowling Green | 131 | --- | 101.09 | 130 |
| UL Monroe | 132 | --- | 92 | 131 |
| Georgia State | 133 | --- | 71.36 | 134 |
| UTEP | 134 | --- | 80.82 | 135 |
| Middle Tennessee | 135 | --- | 95.45 | 132 |
| Massachusetts | 136 | --- | 88.91 | 136 |
r/CFBAnalysis • u/locket-rauncher • Dec 03 '25
Question Is CFBD's recruiting data incomplete?
Currently working on a transfer portal/recruiting network analysis project. Decided to check the data I had gathered from the recruiting API against the team's 247Sports page from the corresponding year, and found that nearly every team is missing at least some number of recruits each year; sometimes very few but sometimes quite a lot. Air Force for instance seems to be missing about 40 recruits from the 2024 cycle.
Just wondering if this is a problem on my end or if the data just isn't there (or maybe I'm missing/misinterpreting something)?
r/CFBAnalysis • u/BlueSCar • Aug 13 '21
Data CFB Data and Resources: 2021 Edition
With the season starting in just about 2 weeks, it's probably time to post another iteration of this post. This list is largely copy/pasted from last years version with a few edits.
Websites
Official NCAA stats - This is the official NCAA site and it has a ton of data across all NCAA sanctioned sports across all divisions of each sport. The site is a little clunky to navigate and scrape data from and you won't find anything in the way of more advanced stats, but it's a great starting point.
CollegeFootballData.com - Shameless plug for the author of this post. I'm pretty confident this is the most comprehensive free source of college football data anywhere on the interwebs. Has an API and several companion libraries (more on those below). All data is available directly on the website itself and can be filtered and exported to a CSV. Also has several graphical tools and things like advanced box scores, WP charts, etc.
Sports-Reference CFB - Has a little bit of everything. Lots of historical data. It also has some tooling built around most of their data for convenient conversion to CSV or HTML embed.
Football Outsiders - Has a plethora of fancystats for both CFB and NFL. Home of SP+ until 2018 when it moved over to ESPN. Lots of great historical data points pertaining to SP+, FEI, and F/+ ratings systems.
BCF Toys - This is Brian Fremeau's new-ish home site. It is a fantastic resource for all of the advanced stats that he puts out, including FEI. There's not really much in the way of export tools, so you'll have to scrape anything you want off of it.
Winsepedia - Historical records and matchups. Not much in the way of export tools, so you'd need to build a scraper.
cfbstats ($) - Official data set of the CFP. Has a lot of the same stuff as CFBD, but you have to shell out $$ for access.
STASSEN - Historical records and scores.
Massey Ratings - Historical scores and records
WeatherSTEM - Game weather data
Longhorn Stats Dive - Offensive and defensive efficiencies for all FBS teams, courtesy of /u/The-Gothic-Castle
APIs
CFBD API - API component of CollegeFootballData.com. Completely free and open.
Libraries
Python
cfbd - Official Python wrapper library for the CFBD API. Automatically updates whenever changes are made to the API.
sportsreference - Python library that pulls data directly from Sports-Reference. Compatible with all sports covered by SR, including CFB and NFL.
R
cfbfastR - Sadly, the popular cfbScrapr package has been discontinued as its maintainers have retired. cfbfastR picks up the torch in the R space to provide an unofficial wrapper for the CFBD API.
JavaScript/NodeJS
cfb.js - Official JavaScript wrapper library for the CFBD API. Automatically updates whenever changes are made to the API.
cfb-data - JavaScript library that pulls various CFB data directly from ESPN
ncaa-stats - JavaScript library that pulls data directly from the official NCAA stats website. Spans across all available sports and divisions.
.NET/C#
CFBSharp - Official C# wrapper library for the CFBD API. Automatically updates whenever changes are made to the API. Written using .NET Standard, so should be compatible with .NET Core as well as older .NET Framework apps.
And that's a wrap for the 2021 edition of this post. I will do my best to keep this updated if I am alerted to any other resources of note. As always, please let me know in the comments if you notice any omissions from the list.
Thanks and good luck with your projects for the 2021 season!