View on GitHub

march-madness

Techniques for predicting the results of March Madness

March Madness

Terminal-based scripts for selecting March Madness Winners!

The project offers an Evaluation and a Prediction Mode for creating a bracket.

By default, the repo is set to guide the user through manually picking teams. This is done by running the following commands:

./run.py  # Go through selections
open NCAA_Tournament_Results.log  # Display selection results

More detailed usage information is provided below.

Usage

Database Generation

Data is scraped from external sources and stored in a Postgres database hosted on a Docker container. The database can be populated by importing the contents of db/march_madness.sql, or by running the generate_db_data.py script.

Run Evaluations

User-guided methods are defined as evaluation methods. Currently, the evaluation method works by presenting the user with some basic info, with the option to present more, such as recent games and more school info. The user then selects a team for each matchup, or defers to a random selection. This method runs by default for the latest march madness year, but can also be overridden for any year 2022 or later with the -y parameter.

Sample Usage

Run the evaluation for the current year
./run.py  

or

./run.py -e
Run the evaluation for a different year
./run.py -e -y 2022

Prediction Methods

Automated methods that use an algorithm to decide matchups are defined as prediction methods. The desired prediction method should be provided to the -p parameter from one of the methods listed below:

Sample Usage

Random Selection for the current year
./run.py -p random
Weighted LPTR selection for 2022
./run.py -p lptr -y 2022
Weighted Sigmodal selection with overriding value of k
./run.py -p sigmodal -k 0.5

Results

Results are stored in NCAA_Tournament_Results.log. The file is always appended to, so should be removed between subsequent runs. As of June 2023, there is no automated way to create a bracket on a site such as espn.com with these results, so they must be entered manually.

Future Work

This project is being actively worked and improved. See the GitHub Projects tab for details.