Skip to content
View RentoSaijo's full-sized avatar
🏔️
#GoAvsGo
🏔️
#GoAvsGo

Highlights

  • Pro

Block or report RentoSaijo

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
RentoSaijo/README.md

About

✉️ Email | LinkedIn | X | YouTube

I’m a Statistics & Data Science and Computer Science student at Connecticut College and a sports analytics builder focused on turning raw data into tools teams can actually use. My work combines statistical modeling, software engineering, and on-ice perspective: I’m the author/maintainer of nhlscraper, an R package for collecting, cleaning, modeling, and visualizing NHL/ESPN data; I’ve built expected-goals models, interactive dashboards, and D3 visualizations to study shot quality, player value, and tactical decision-making; and I’ve applied that toolkit professionally as a Data Analyst Intern at HockeySkytte. I’m especially interested in hockey data infrastructure, probabilistic modeling, player evaluation, and decision tools that help move analysis from “what happened?” to “what should we do next?”

Projects

🏒 nhlscraper | R / C / Developer Tools

nhlscraper is an R package I built to make NHL data easier to access and analyze with a lightweight, reproducible, and well-documented workflow. It scrapes, cleans, and visualizes data from the NHL and ESPN APIs, and I expanded coverage by reverse-engineering 50+ NHL EDGE endpoints through developer tools. The package has been inducted into the SportsAnalytics CRAN Task View, surpassed 3,500 downloads, and is supported by a pkgdown documentation and tutorials. It has since been referenced in academic papers (example), adopted in college course materials (example), and shared across statistics blogs (example) worldwide.

🏒 rentosrink | Python / R

Rento’s Rink is my ongoing hockey analytics “lab,” built as an interactive Streamlit app that now lets 650+ users explore skater and goalie shot profiles, free-agent contract scenarios, and forward/defense/goalie xG rankings with downloadable cards and data exports. Under the hood, I built a six-partition expected-goals pipeline that scores 241K+ shot events with a hybrid XGBoost/LightGBM model suite, expanding beyond shot geometry into pre-shot movement, game-state context, biometrics, and shift/rest workload features, and I documented a leakage-safe contract model that turns 4,200 historical contracts from 1,655 skaters into scenario-based term and AAV% forecasts. The project also includes R-based scraping and refresh pipelines, GitHub Actions plus Selenium uptime tooling for the Streamlit deployment, and a replay-tracking pass detector that infers completed passes from NHL EDGE goal-window data.

🏀 NBAxP | JavaScript / R

NBAxP is a project where I turned raw NBA shot data into an interactive “shot value map” for each team. I scraped and cleaned ~700,000 shots, built an expected-points model using shot context, and visualized results by court region in a D3-powered dashboard with interactive filters and hover tooltips for team-to-team comparisons.

Competitions

This submission focuses on a coaching-facing question in established 5v4 offensive-zone power-play play: how can we quantify quality beyond xG by measuring whether a unit creates and actually attacks exploitable mismatches? To answer that, I engineered Attempted Exploited Mismatch per State (AEM/state), a metric that combines threat modeling for puck-carriers and non-carriers with coverage geometry and a 1.5-second decision window. I then validated the metric against team outcomes, showing that AEM/state remained positively associated with PP goals/60 and added explanatory value beyond xG/60 alone. The project also examined how those mismatches are created by analyzing short puck-movement progressions, finding that most lift came from concise 2–3 event chains rather than long, harmless circulation.

Pinned Loading

  1. nhlscraper nhlscraper Public

    Scraper for National Hockey League Data on R

    R 14 2

  2. rentosrink rentosrink Public

    Rento's Rink

    Python 1

  3. NBAxP NBAxP Public

    Expected-points (xP) model for the NBA

    JavaScript 2