Vector Hoops Lab — MTNN v4 pipeline
The exact MTNN v4 behind all 8 games: 12,392 player-seasons 1996-2026 per-100 zσ → 17 families 120 feats cat([x·m,m]) → 17×160→32×2 =544 +12 =556→128→48 L2 ~224K → heads 8/5/14/18 → ONNX WASM 2MB. Glass-box explorer at /model. Novice on top, expert one click.
Manim — precise math animations
Turned static SVG flow (W1380 H780 truthful 1:1) into programmatic math animations: Manim turns Python code into precise vector graphics. Each video is code — class MTNNFlow(Scene) with Write(), Create(Rectangle), Arrow() LaTeX-ready, ffmpeg mux. Only MTNN-relevant videos kept.
Source: workspace/manim_dumbmodels/mtnn_flow.py + chimera_procrustes.py • Render: manim -ql mtnn_flow.py MTNNFlow && manim -ql chimera_procrustes.py ChimeraEquation → MTNNFlow.mp4 352KB + ChimeraEquation.mp4 153KB 480p15. Solo personal project, no connection to employer, built with public/free-tier only. MTNN v4 truthful flow W1380 H780 COLS 110/230/320/400/480/560/720/800/900/1120 1:1 input→tower
01 Gather — stats.nba.com → 120 feats 17 families era-z
We pull every season per-100 splits from stats.nba.com. Not raw points — sigmas vs that season (era-z) so 1999 and 2025 compare fairly. 12,392 seasons × 17 families: volume, playmaking, rebounding (OREB/DREB), defense (STL/BLK/DEF_RTG), efficiency (EFG%/TS%/OFF_RTG/NET_RTG), shotmix, bio (AGE/HEIGHT/WEIGHT/DRAFT), tracking (2013+ masked), form (FORM_DD), market, roster, career (YEAR_IN_LEAGUE/LAG1_COSINE/DELTA_NORM), competition (SOS_NET_RTG/B2B_RATE), team, pedigree, playoffs, honors. Mask m∈{0,1} → input cat([x·m,m]) so model knows "never measured" vs zero.
Files: archetype_assignments.json, drift.json (Procrustes 30 seasons), mtnn_arch.json v4_h160_t32_d48_mlp128, mtnn_embeddings.f32 48-d L2-norm, mtnn_heads.f32 (8/5/14/18), mtnn_meta.json. Season emb 12-d. Masking cat([x·m,m]) truthful. Flow viz W1380 H780 COLS 110/230/320/400/480/560/720/800/900/1120 1:1.
{
"model": "mtnn_v4_h160_t32_d48_mlp128",
"dTower": 32, "dEmb": 48, "blocks": 2,
"nFamilies": 17, "nFeats": 120,
"input": "cat([x·m,m]) 160→32 LN GELU res×2",
"fusion": "544 (17×32) +12 season =556 →128→48 L2",
"params": 224000,
"heads": {"archetype": 8, "pos":5, "next_profile":14, "skills":18},
"file": "mtnn.onnx 2MB WASM"
}
02 Clean — Era-honest σ ±4 + family masking + Procrustes root frame
Raw stats drift: pace 91 in 1999 vs 100 in 2025, 3PT rate 18% vs 41%. We z-score each stat within its season → era-honest ±4 clip. Then family masking cat([x·m,m]) preserves "never measured" vs zero. Procrustes: chain yearly rotations RᵀR=I back to 1996 root frame — lets 1999 directly compare 2025 without drift. Just honest geometry, no tricks.
- ✅ Per-season σ — every stat vs its league ±4σ cap
- ✅ Family mask cat([x·m,m]) — tracking pre-2013 masked not guessed
- ✅ Procrustes root frame 1996-97 — RᵀR=I rotation chain, drift measured in degrees
- ✅ Empirical-Bayes shrink % by attempts → shown as percentile not fake %
- ✅ Used by Chimera, Deadline, Fader, Arc, Twin, WhatIf, Pivot, Chem
03 Train — MTNN v4 17×160→32 towers 556→128→48 L2 224K behind every guess
17 towers
Families: volume, playmaking, reb, def STL/BLK, efficiency EFG/TS, shotmix, bio AGE/HT/WT, tracking (masked pre-13), form FORM_DD, market, roster, career LAG1_COSINE/DELTA_NORM, competition SOS, team, pedigree, playoffs, honors.
Heads powering 8 games
Glass box not black box
Solo personal project, no connection to employer, built with public/free-tier only • Free-tier Vercel cleanUrls • ONNX WASM • localStorage only • Okabe-Ito AAA triple-encoded shape+icon+text+pattern • 18px/1.65 readability • 56px tabs safe-area.
04 Eval — accuracy harness gates every deploy
| Game | MTNN v4 uses | Metric |
|---|---|---|
| Chimera | 48-d fusion + chemistry.json | 68% top-3 human guess • 2 donors + target |
| Deadline | has-been/contender • LAG1_COSINE | has-been framing validated |
| Fader | FORM_* 1st/2nd half deltas | rose/fell call verifiable |
| Arc | career order • LAG1_COSINE, DELTA_NORM | chronology shuffle |
| Chem | skills 48→16→1 ×18 coverage | 4 choices ×5 rounds |
| WhatIf | 14 profile per-100 forecast | sandbox nearest duo TYPES |
| Pivot | career inflection • YEAR_IN_LEAGUE | pivot season guess |
| Era Twin | Procrustes root nearest | cross-decade twin |
Every number recomputable from stats.nba.com — accuracy harness gates deploy. drift.json tracks archetype eras 1996-2026. 3P%/FG%/FT% empirical-Bayes shrunk → percentile shown not fake %.
EPOCH_DATE 2026-07-01 puzzle #1 • midnight UTC resets • ?+?=target tile
05 Deploy — daily puzzle + free-tier + best-app-ever polish
Pipeline
Domain
Design gate
- ✅ AAA Okabe-Ito triple encoding shape+icon+text+pattern
- ✅ 18px/1.65 readability • 16px anti-zoom
- ✅ 56px bottom tabs safe-area • 44px touch min
- ✅ Confetti canvas + XP toast • Sunni SCAD bar
- ✅ Solo disclaimer • public/free-tier only