Bracket Oracle

NCAA March Madness basketball tournament bracket generator. Pull college basketball team ratings from Bart Torvik, simulate tournament matchups with log5 win...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
1 · 164 · 2 current installs · 2 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the implementation: code fetches Bart Torvik JSON, optionally KenPom (requires credentials), and ESPN public picks; simulation, optimizer, and data/model modules implement the described functionality. There are no requests for unrelated services or credentials.
Instruction Scope
SKILL.md directs the agent to run the included Python modules. The runtime instructions and code perform network calls only to the stated data sources (barttorvik.com, ESPN public picks URL, and optional KenPom). The code reads/writes cache files under a local data/ directory and does not instruct reading unrelated system files or environment variables beyond the optional KenPom creds.
Install Mechanism
No install spec is provided (instruction-only at registry level), and the README lists minimal Python dependencies (requests, optional kenpompy). No downloaded archives, URL shorteners, or remote installers are used by the bundle itself.
Credentials
No required environment variables are declared; only optional KENPOM_EMAIL and KENPOM_PASSWORD are referenced for the KenPom pathway which legitimately requires credentials. No other SECRET/TOKEN/PASSWORD variables are requested.
Persistence & Privilege
Skill does not request always:true and does not modify other skills. It creates a local data/ cache directory for fetched data (expected behavior) but does not escalate privileges or alter system-wide agent settings.
Assessment
This skill appears coherent and implements what it claims: it will make outgoing HTTP requests to Bart Torvik, ESPN (and optionally KenPom), and it caches JSON under a local data/ folder. If you plan to use KenPom features, provide only a dedicated KenPom credential and be aware those credentials are used for logging into that service. If you have concerns about network access or local caching, run the skill in an isolated environment (virtualenv/container) or review the included source files (they are small and readable). Finally, the SKILL.md references a GitHub repo for agent competitions — check that external repo if you intend to submit brackets.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.2
Download zip
basketballvk97db6few0mgftqkcgmwg7vc018314czbracketvk97db6few0mgftqkcgmwg7vc018314czcollege-basketballvk97db6few0mgftqkcgmwg7vc018314czlatestvk97db6few0mgftqkcgmwg7vc018314czmarch-madnessvk97db6few0mgftqkcgmwg7vc018314czncaavk97db6few0mgftqkcgmwg7vc018314czpredictionvk97db6few0mgftqkcgmwg7vc018314czsportsvk97db6few0mgftqkcgmwg7vc018314czsports-analyticsvk97db6few0mgftqkcgmwg7vc018314cztournamentvk97db6few0mgftqkcgmwg7vc018314cz

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

Bracket Oracle 🏀

March Madness bracket optimization tool. Combines Torvik T-Rank statistical data with Monte Carlo simulation and pool-aware strategy to generate winning brackets.

What It Does

  • Team Ratings: Pull live efficiency data from Bart Torvik (free) or KenPom (premium)
  • Tournament Simulation: Monte Carlo simulator runs 10,000+ tournament outcomes
  • Pool Optimizer: Generates brackets tuned to your pool size and scoring system
  • Strategy Engine: Chalk, contrarian, balanced, and chaos strategies
  • Public Pick Analysis: Compare model probabilities to ESPN ownership percentages
  • Historical Calibration: 10 years of tournament data (2015-2025) inform the model

Quick Start

# Get current rankings
python3 -c "
from core.adjustments import generate_adjusted_rankings
for r in generate_adjusted_rankings(2026)[:25]:
    print(f'#{r[\"adjusted_rank\"]:>2} {r[\"team\"]:<25} AdjEM={r[\"adj_em\"]:>+6.2f}  Score={r[\"adjusted_score\"]:>.2f}')
"

Architecture

core/
├── models.py       — Team, Bracket, Pool data structures
├── data.py         — Torvik (free) + KenPom (premium) data pipelines
├── adjustments.py  — Tournament-weighted composite rankings
├── calibration.py  — Historical tournament calibration (2015-2025)
├── simulator.py    — Monte Carlo tournament simulator
└── optimizer.py    — Pool-aware bracket optimization

Data Sources

SourceCostWhat You Get
Bart TorvikFreeAdjEM, AdjOE, AdjDE, Barthag, tempo, four factors, WAB
KenPom~$20/yrSame metrics, different methodology, premium features
ESPN Public PicksFree"Who Picked Whom" ownership % (available after Selection Sunday)

Pool Strategy Guide

The optimizer selects strategies based on pool size:

Pool SizeStrategiesWhy
≤10 (family)Chalk + BalancedSmall pool = pick the best teams, avoid busts
≤50 (office)Chalk + Balanced + ContrarianNeed some differentiation
≤200 (big)Balanced + Contrarian + ChaosMust stand out from the crowd
200+ (mega)Contrarian + Chaos onlyChalk brackets can't win in huge pools

Scoring Systems

  • Standard (ESPN): 10-20-40-80-160-320 points per round
  • Upset Bonus: Standard + bonus for picking lower seeds
  • Seed Weighted: Points = seed of winning team (upset = more points)
  • Custom: Define your own per-round point values

Dependencies

pip install requests
# Optional: pip install kenpompy  (for KenPom premium data)

Environment Variables (Optional)

KENPOM_EMAIL=your@email.com      # For KenPom premium data
KENPOM_PASSWORD=your_password     # For KenPom premium data

How It Works

  1. Data Pull: Fetches latest Torvik T-Rank efficiency ratings (JSON API, no scraping)
  2. Composite Score: Weights metrics by historical tournament predictiveness (AdjEM dominant at ~23%)
  3. Simulation: Runs N tournament simulations using log5 win probability model
  4. Optimization: Generates candidate brackets, simulates opponent brackets from public picks, maximizes P(finishing in target percentile)
  5. Output: Returns optimal bracket(s) with pick explanations

Compete 🏆

Agent Bracket League 2026 (Agents Only)

Open bracket competition for AI agents. Submit via GitHub PR, scored with upset-edge formula that rewards contrarian picks and conviction.

  • Repo: https://github.com/lastandy/bracket-league-2026
  • Submit: Fork → fill brackets/your-agent.json → PR
  • Scoring: Sᵢ = Wᵣ · σₛ · φ(Oᵢ) · η(cᵢ, c̄) — round weight × seed upset × ownership discount × confidence efficiency
  • Deadline: March 17, 2026 23:59 ET
  • Auto-validated, auto-merged. Max 10 brackets per GitHub account.

Agents vs Humans 2026 (ESPN)

AI agents competing directly against human players in ESPN's Tournament Challenge.

Key Formula

Win probability between teams uses the log5 model:

P(A wins) = 1 / (1 + 10^(-(AdjEM_A - AdjEM_B) * k))
where k = 0.0325 (calibrated to NCAA tournament data)

Extending

The model is designed to be extended with custom adjustment layers:

from core.adjustments import generate_adjusted_rankings

rankings = generate_adjusted_rankings(2026)

# Add your own adjustments
for team in rankings:
    # Example: boost teams with strong recent form
    # Example: penalize teams with key injuries
    # Example: coach tournament history modifiers
    team["adjusted_score"] *= your_modifier(team)

Limitations

  • No injury tracking (manual override needed)
  • No conference tournament results weighting (pre-Selection Sunday)
  • ESPN public pick data only available after March 15
  • KenPom requires paid subscription for premium metrics
  • Model is calibrated on men's tournament data (2015-2025, excluding 2020)

License

MIT — use it, extend it, win your pool. 🏆

Files

8 total
Select a file
Select a file to preview.

Comments

Loading comments…