Tom took over this team recently, and the aggressive rebuild — new Trainer, 5 new players, an arena expansion, then 6 more players cut — reads as the start of his tenure, not a mid-season pivot. The early results (see the live record in the Overview tab) predate that rebuild settling in. Training is set to Rebounding (C/PF), matching this report's own recommendation. This note is hand-written context, not auto-updated — see the Overview and Roster tabs for what's actually live right now.
Straight from the official API, refreshed every day by a GitHub Actions job — the stat cards above are the dated manual analysis and stay fixed until the next full manual refresh.
Loading live data…
Loading live data…
Every dated capital outlay pulled from the official economy ledger — player transfer purchases (and sales, if any) and lump-sum facility spend like the arena expansion — accumulated into a running ledger each time this report runs, since the API only ever shows the current and prior week. Recurring weekly costs (salaries, scouting) are operating expenses, not investments, but they do roll into each player's TCO (total cost of ownership: price paid + salary paid while owned) below, so cost-per-player is measured against the full bill, not just the transfer fee. Arena spend is tracked the same way against real gate revenue, bucketed automatically by capacity/price regime as arena.aspx changes.
Loading live data…
Two worked-through analyses of what actually pays off fastest, kept here as reference for future decisions rather than recomputed each run. Static — edit this section by hand if the underlying assumptions change.
Official · game schedule mechanics A season runs 14 weeks, but its two weekly resets don't both land 14 times: 13 Monday resets (TV money, merchandise, and player salaries are all paid on this reset — this is what a "season" of salary cost actually means below) and 14 Friday resets (training progress and weekly minutes tracking reset here instead). Any dollar figure below scaled per-season uses 13, not 14 — a season's salary bill is one payday short of what a flat 14-week count would suggest.
A total-cost-of-ownership comparison of three hypothetical bench-player acquisitions, with salary projected forward rather than held flat — using a decay curve fit from 15 real players' actual season-by-season salary histories.
Player salaries peak around age 33–34, then decline. Fit from the 15-player sample (log-linear regression, R²=0.24 — larger salaries drop sharper): each season past the peak, % change ≈ 14.1% − 4.02%×ln(salary). A $200/week floor applies (no tracked player was ever observed below it). Age advances 1 year/season; each season's salary cost is that season's rate × 13 (Monday paydays, not a flat 14 — see "Season structure" above).
[Inference] The $200 floor is empirical, drawn from the sample's observed minimum — not a documented game rule, and could be wrong for a large enough roster.
The three options modeled:
| Season | A — cumulative cost | B — cumulative cost | C — cumulative cost |
|---|---|---|---|
| 2 | $60,800 | $105,742 | $53,000 |
| 5 | $84,866 | $113,542 | $126,722 |
| 10 | $110,283 | $126,542 | $195,337 |
| 15 | $126,032 | $139,542 | $229,907 |
| 20 | $139,032 | $152,542 | $250,015 |
| 30 | $165,032 | $178,542 | $276,651 |
Calculated A is cheapest from season 3 onward, indefinitely. Both A and B eventually hit the $200 floor — A by season 16, B already by season 3 — and once both are floored, the gap between them (B's larger acquisition price) never closes. C is only competitive in the first two seasons, on the strength of its near-zero acquisition price alone; its high starting salary catches up fast once decay hasn't yet had time to bite.
Payback/surplus analysis of the real, already-executed $205,800 arena expansion, using this report's own live arena data.
Modeled via a proxy schedule (Velotrol Metalizado, Season 72 — a completed league-finals-plus-tie-breaker season, i.e. a deep playoff run), broken down by home-game type and the BuzzerBeater Game Manual's own arena-revenue rules:
| Type | Home games | Arena revenue treatment |
|---|---|---|
| Regular league (blank) | 9 | Full — counts |
| TV | 2 | Full — counts (treated as regular league) |
| Playoffs (PO, SF, F, TB) | 4 | Half — split with visitors |
| Cup (C) | 6 | Zero — excluded, confirmed by manual |
| Private League (PL) | 5 | Zero — excluded |
| B3 | 2 | Zero — excluded |
| Scrimmage (SC) | 0 | Zero — excluded (none occurred at home this season) |
| Total home games | 28 |
Full-value-equivalent games/season: 9 + 2 + (4 × 0.5) = 13 in this deep-run season. A baseline season without a playoff run drops the 4 half-value playoff games, leaving 9 + 2 = 11.
[Inference] That's a different team's schedule, used as a structural proxy — not the Sharpshooters' own game mix. The 96.1% fill rate is also assumed, not confirmed, to hold on the newly added seats specifically.
Cumulative surplus (cumulative incremental revenue − $205,800), assuming revenue grows at a flat annual rate:
| Growth | Season 5 | 10 | 15 | 20 |
|---|---|---|---|---|
| 0% | $383,580 | $972,960 | $1,562,340 | $2,151,720 |
| 3% | $420,020 | $1,145,516 | $1,986,566 | $2,961,572 |
| 5% | $445,539 | $1,276,832 | $2,337,795 | $3,691,882 |
| 8% | $485,731 | $1,501,818 | $2,994,783 | $5,188,437 |
| 10% | $513,845 | $1,672,840 | $3,539,413 | $6,545,548 |
| Growth | Season 5 | 10 | 15 | 20 |
|---|---|---|---|---|
| 0% | $490,740 | $1,187,280 | $1,883,820 | $2,580,360 |
| 3% | $533,805 | $1,391,210 | $2,385,177 | $3,537,458 |
| 5% | $563,965 | $1,546,401 | $2,800,267 | $4,400,552 |
| 8% | $611,464 | $1,812,294 | $3,576,707 | $6,169,208 |
| 10% | $644,689 | $2,014,411 | $4,220,361 | $7,773,066 |
Calculated The expansion pays for itself within its second season in every scenario tested. Growth rate barely moves the payback timing (it's a near-term, low-compounding effect at that horizon) but compounds long-run surplus substantially — the 20-season gap between 0% and 10% growth is roughly 3x the baseline surplus itself.
[Inference] Growth rates (0/3/5/8/10%) are illustrative, not verified against any real trend. Two of the four current price tiers are already near their game-imposed ceiling, which caps how much of that growth could plausibly come from further price increases rather than attendance/demand growth.
Every point in a skill costs a different amount in weekly salary. Ground-truth curves pulled from buzzer-manager.com's salary estimator (each of the 12 rated skills queried at every rating 1–20, holding age/nationality/potential and the other 11 skills fixed at 10) — cross-validated against a separate 266-player real-market regression, which independently ranked the same skills the same way. Full data: salary-model/skill-curves-reference.md and salary-model/formula-history.md in the GitHub repo.
| Skill | 1→20 salary multiplier | Shape |
|---|---|---|
| Jump Shot | 5.21× | Steep past ~rating 8 |
| Rebounding | 4.42× | Only skill with a real floor slope — costs something even at low ratings |
| Passing | 3.39× | Steep past ~rating 11 |
| Inside Def | 3.28× | Steep past ~rating 9 |
| Inside Shot | 2.93× | Steep past ~rating 9 |
| Outside Def | 2.45× | Steep past ~rating 10 |
| Jump Range | 2.38× | Three-stage — a mid-rate step around 10–14 |
| Handling | 1.70× | Steep only past ~rating 12 |
| Shot Blocking | 1.65× | Gentle throughout |
| Driving | 1.23× | Gentle throughout |
| Stamina | 1.00× | Zero salary effect at any rating |
| Free Throw | 1.00× | Zero salary effect at any rating |
Calculated Every skill except Stamina/Free Throw follows the same two-regime shape — a nearly flat "low regime" up to a per-skill breakpoint, then a much steeper "high regime" for the rest of the range (not a smooth power law). Baseline weekly salary with everything at rating 10 is $17,609 — every curve passes through that exact value, confirming the isolated-skill queries are internally consistent.
[Inference] Stamina and Free Throw training is essentially "free" salary-wise — push those to the 6–8 / 7+ targets already in this team's training doctrine without hesitation. Jump Shot and Rebounding are the two skills where a big push has the largest, most convex salary consequence — worth being deliberate about timing (e.g. concentrated pushes rather than a slow drip once past each skill's breakpoint). The separate 266-player market regression (pooled model, R²=0.891) found Age has no real effect on salary once current skills are controlled for — BuzzerBeater recalculates salary once per season from current skills only, so an apparent "age discount" on a young, still-training player is really just salary that hasn't been recalculated since their last training gains, not a market age premium.
336 Brazil teams scraped from public buzzerbeater.com pages (Liga Nacional + Div II + all 16 Div III conferences) — Sharpshooters' actual peer group, not a top-division benchmark. Full data and scripts: arena-model/ in the GitHub repo (brazil_leagues_all.csv, brazil_league_analysis.py, sharpshooters_arena_optimizer.py).
[Inference] A same-snapshot check across all 336 teams found win% and fill rate negatively correlated (−0.17 to −0.18) — losing teams (win% ≤ 0.4) average 90.3% fill vs. 84.5% for winning teams (win% ≥ 0.6), a −5.9 point gap. Plausible confound: winning teams tend to run bigger arenas that are harder to fill 100%, while many bottom-table teams sit at the 6,000-seat capacity floor and sell out easily regardless of form. Fill rate alone is not a clean price-demand signal without controlling for capacity and form.
| Tier | Current fill | Top price scenario tested | Est. revenue/game | Est. delta |
|---|---|---|---|---|
| Bleachers | 82.1% | $12 → $16 (+33%) | $68,526 | +$9,225 |
| Courtside | 100.0% | $119 → $155 (+30%) | $16,740 | +$3,888 |
| Lower Tier | 96.8% | $44 → $57 (+30%) | $27,243 | +$3,395 |
| Luxury | 62.5% | Excluded — fill already dropped after the last expansion; not recommended to add more or raise price until it recovers | ||
Calculated Ranked expansion scenarios by budget, from the optimizer's own recommendation engine:
| Budget | Recommended allocation | Est. added revenue/game |
|---|---|---|
| $50,000 | +25 courtside seats | +$2,975 |
| $150,000 | +40 courtside, +100 lower tier | +$9,019 |
| $500,000 (only $185,000 usefully spent) | +40 courtside, +150 lower tier | +$11,148 |
[Inference] Price-change and expansion estimates assume a flat −0.4 elasticity (not fitted from real data) and, for the percentile comparisons, use the closer 256-team Division III comp set rather than the top-division benchmark used earlier in this guide's arena-expansion payback analysis above. Re-run sharpshooters_arena_optimizer.py / brazil_league_analysis.py periodically — prices, capacity, and the comp set all drift as the season progresses.
Projects current cash forward at a flat weekly run rate for however many of the season's 13 Monday resets remain — derived from the schedule's own last currently-listed match, not a hand-maintained number, so it self-updates (and grows) if the league adds more fixtures later. Falls back to a config value only if the schedule returns nothing. Doesn't know about one-time events that haven't happened yet.
Loading live data…
Itemized transactions from the official API's economy ledger (last week and this week), running balance computed from each week's confirmed opening balance. Zero-amount placeholder entries (e.g. an unplayed match's revenue row) are omitted.
Loading live data…
The official API's own category breakdown for the current and prior week, refreshed daily.
Loading live data…
Loading live data…
Loading live data…
| Bleachers (+162 seats) | $200 |
| Lower Tier (+42 seats) | $700 |
| Courtside (+48 seats) | $2,000 |
| Luxury Boxes (+3 boxes) | $16,000 |
| Total expansion cost | $205,800 |
Calculated At today's prices and full capacity, one sellout ≈ $92,298 in gate receipts (5,438×$12 + 500×$38 + 60×$106 + 2×$841). Once the expansion lands, the new max sellout ≈ $103,449 at these same prices (5,600×$12 + 542×$38 + 108×$106 + 5×$841, 6,255 total seats).
Loading live data…
Check any player to mark them a training candidate - that's saved in this browser only (not synced anywhere, not part of the daily snapshot), so it's private to whoever's viewing and sticks around on this device across reloads. Minutes/threshold/status for every player use whichever training type and position combo are currently selected in the training minutes calculator (Training Strategy tab) - change that selection there and this table updates too, they share the same live combo rather than each needing their own.
Loading live data…
Live total minutes (any position, not just the training-focused ones) via boxscore.aspx across this training-week's played matches.
Loading live data…
Loading live data…
Official · training.aspx Training is set to Rebounding, C/PF — an individual skill focus for Centers and Power Forwards, not Team Training. training.aspx has no API endpoint, so this line is carried over from the last screenshot check, not live.
Loading live data…
Pick any training type and position combo from the live training.aspx dropdowns, and every roster player who'd be affected is recalculated instantly against this week's actual minutes (via boxscore.aspx) - no page reload, no waiting on tomorrow's snapshot. This is independent of whatever training is actually set in-game right now (see "What's actually being trained right now" below for that).
Loading live data…
Cards below are pulled live from the official API each run, laid out the same way the game shows a player page. Thresholds: 45min (18–19yo), 48min (20–26yo), 40min (27+yo). Skill ratings use the Game Manual's full 20-level scale and exact color coding (1 atrocious … 20 legendary).
Loading live data…
Recorded here as the standing framework for training decisions going forward, not just for the current cohort.
Universal targets, regardless of position: Stamina 6–8, Free Throw 7+.
Official · training.aspx mechanics Stamina and Free Throw are only trainable through Team Training mode (alongside Game Shape), which is mutually exclusive with the 10 individual position-skill categories — only one training focus is active for the whole team at a time. Hitting the Stamina 6–8 / Free Throw 7+ targets means periodically rotating into Team Training, which pauses individual skill development for everyone while it's active.
The sections tagged "Auto-updated daily" above are filled in from a SQLite snapshot fetched from this page's own report.db (written once a day by a GitHub Actions job talking to the official BuzzerBeater API). Everything else on this page is hand-written analysis, kept as-is until you update it manually.
buzzerbeater.com official API (bbapi.buzzerbeater.com) — teaminfo, roster, economy, schedule, standings, arena, staff, boxscore endpoints, fetched daily.buzzerbeater.com/manage/training.aspx and fanSurvey.aspx — no API endpoint; update these sections by hand when you check them in-browser.buzzerbeater.com/community/rules.aspx?nav=Nomenclature — Game Manual: full 20-level skill adjective scale and full potential scale, verbatim.