Technology Skills – CS CUE Project

In my Computer Science CUE (Culminating Undergraduate Experience) course, I had the opportunity to complete a significant software project over the entire semester with a small group. My team chose to work with my idea, which was for a mock sports betting platform for NCAA D3 athletics using a virtual currency with no connection to real money. Our final deliverable was a full-stack web page, with a front-end environment created using Figma and Amazon Web Services and an automated back-end Python algorithm that collected recent results and created reasonable betting lines. I was one of two people working on the back-end script. My contributions were a web scraper to pull recent track and field times, designing the algorithm to create betting odds for five sports (track, m/w lacrosse, baseball, and softball), and creating a database of bets that was sent to our front-end to be displayed to users.

To create betting odds for the sports other than track and field, we incorporated an ELO ranking system that allowed us to estimate winning probability for any matchup. From there, the probability was converted to a straight-up (moneyline) betting odds as well as expected margin of victory (spread) odds. This entire script was as automated as possible, and allows us to create betting odds for any NCAA D3 institution in just minutes.

I created a web scraper for the tfrrs.org page that takes a link to any college page on the website and pulls the entire roster with links to each individual athlete page. From there, the scraper navigates to each athlete page and pulls every time/distance/height recorded for each athlete in a given time frame (for this project, we used the 2024 outdoor season).

Method to return a list of links to each individual athlete page given a team page:

Method to scrape an athlete page and return a dictionary containing athlete name, events that he/she competed in, and every time/distance/height recorded for a given season:

The algorithm that we created was able to generate multiple different betting lines for any given event within D3 baseball, softball, men’s lacrosse, women’s lacrosse, and track & field, using historical data collected from our web scraper. To do this, we incorporated different statistics techniques, conversions, and processing to generate betting lines, including moneyline, over/unders, and spreads. This process was seamless and could be ran in just a few minutes, and the algorithm automatically adjusted for differences between sports. Some example methods are below:

Calculate Times method to calculate estimated results for track and field, accomplished by utilizing a weighted average of previous results as well as a linear trend that was found from data aggregates.

Calculate Average Score method to calculate an estimate for over/under, using a weighted average of previous results in games including a given team, with adjustments based on testing to account for differences between sports.

We tested our algorithm in two different ways. First, the algorithm was tested on the original dataset that we collected and adjustments were made to ensure roughly 50% hit rates for over/under and spreads. Then, we calculated odds for an entire weekend of men’s lacrosse games, as well as the Muhlenberg women’s lacrosse game, and used that new dataset for further testing. Results are as follows:

While I was not primarily involved in the creation of our website user interface, I assisted the team with GitHub management and design considerations.

css.php