Powerwise

Document

Schedule building cheat sheet (ADs)

One-page guide for Missouri girls D1 lacrosse schedule clusters and risk matrix on Powerwise.


What to sort on

Use case Column Where
Schedule tiers (6–8 teams) projected_margin_rating Team strength / schedule clusters
Board vote line recommended_rank_adjusted Ranking board
Default slot (stable teams) Prior finish rank Same as last season's final order
Override slot (flagged teams) slot_rank Shift watchlist — model rank when flagged

Cluster method: fixed buckets of 8 teams on projected_margin_rating (strongest first). ~5 tiers for a 36-team league.


Shift watchlist (review queue)

~20–25 teams per season are flagged — not a full re-rank of the league.

Signal Meaning Slot direction
talent_loss_rebuild Heavy graduation + thin returning pool Down (worse tier)
sleeper_talent_pool Strong returning/margin vs low prior finish Up (better tier)
margin_overrated Prior finish much better than game margins Down
model_large_move_* Roster model proposes ≥4 rank move Up or down

Reading the risk matrix


Building a schedule

  1. Open Schedule risk for the forecast year (2027 forward, 2026 backtest).
  2. Review shift watchlist — confirm ★ teams are slotted where you expect.
  3. Use cluster cards — pick 6–8 opponents from the same tier for competitive blocks.
  4. Scan blowout pairs — don't stack multiple blowouts on the same team.
  5. Cross-check borderline teams against the ranking board if margin and roster disagree.

When to override the model

Override slot_rank manually when:

Document overrides on the ranking board (program_notes) so the next season's board sees the rationale.


Evidence / backtest


Quick commands (staff)

cd glax-pipeline
python3 scripts/run_seasonal_refresh.py              # standard: pipeline + audits + import
python3 scripts/run_seasonal_refresh.py --profile quick   # forward refresh only
python3 scripts/run_seasonal_refresh.py --profile full --with-tests  # end of season

Full runbook: docs/SEASONAL_REFRESH.md

Manual one-offs:

python3 run_glax_analysis.py --season 2025-26
python3 scripts/validate_schedule_clusters.py --forward
python3 scripts/audit_shift_detection.py --forward

After pipeline run, import to website:

cd website
uv run python scripts/import_data.py --only schedule_shift_watchlist backtest_grid --skip-migrations

Flag codes reference

Action flags trigger a board conversation; info flags are diagnostic only.

Code Severity Means Follow-up
award_talent_loss action Departing award points >= 10 Real talent loss vs quality returning class
high_returning_still_down action Returning >= 55% but model still moves down >= 3 Is the assist/feeder structure intact?
large_move_vs_prior action Model wants to move them >= 4 slots from last year Confirm the roster turnover is real
legacy_downgrade action Legacy >= 0.82 but model moves down >= 2 Coach interview, off-season program signals
low_returning_heavy_loss action Returning < 35% AND drop >= 17 / loss >= 32% Underclass video; replacement candidates
backtest_large_error info (Backtest only) projection missed by >= 5 Worth a future audit
roster_composite_split info Composite re-sort disagrees by >= 8 slots Diagnostic only - usually composite is wrong