Team Report · Sharpshooters (#32988) · League III.15, Brasil

Sharpshooters — team report

Auto-updated loading…
Context on the rebuild

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.

Live snapshot

Auto-updated daily
About the live snapshot below

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…

Investment trackerCalculated TCO = price paid + salary paid while owned. Salary is paid weekly, not continuously - one payment per Monday reset since acquisition, each recorded at that week's own salary (from the official API), so a later raise or skill-driven salary change doesn't retroactively change what earlier weeks cost. TCO/week divides TCO by the number of weekly payments recorded so far (floored at 1) - a run-rate figure comparable across players regardless of how long each has been tracked. [Inference] "Skill total" is a self-computed sum of the 12 rated skills from the official API, standing in for Buzzer Manager's proprietary TSP figure. Treat skill total as a progress signal, not a market valuation. [Inference] Rows marked "(estimated)" are drafted/home-grown players with no purchase to date from - salary-paid and TCO accrue from a manually-supplied acquisition date where one is known (e.g. a franchise takeover date), otherwise from the day this ledger first tracked them, so treat those figures as approximate rather than an official record.

Auto-updated daily
What counts as an "investment" here

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…

Investment knowledge guide

Reference · not auto-updated

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.

Season structure (both analyses below assume this)

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.

Bench-player acquisitions: which one is cheapest, long-run?

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.

The decay model

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:

  • A — $800/wk, $40,000 acquisition, starting age 32
  • B — $250/wk, $100,000 acquisition, starting age 50
  • C — $2,000/wk, $1,000 acquisition, starting age 30
SeasonA — cumulative costB — cumulative costC — 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.

Arena upgrade: payback and long-run surplus

Payback/surplus analysis of the real, already-executed $205,800 arena expansion, using this report's own live arena data.

Incremental revenue / full-value game
$10,716
($103,449 new sellout − $92,298 old) × 96.1% avg. utilization
Payback — baseline season
1.75 seasons
11 full-value-equivalent games/season
Payback — deep-run season
1.48 seasons
13 full-value-equivalent games/season
Where "11" and "13" games/season come from

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:

TypeHome gamesArena revenue treatment
Regular league (blank)9Full — counts
TV2Full — counts (treated as regular league)
Playoffs (PO, SF, F, TB)4Half — split with visitors
Cup (C)6Zero — excluded, confirmed by manual
Private League (PL)5Zero — excluded
B32Zero — excluded
Scrimmage (SC)0Zero — excluded (none occurred at home this season)
Total home games28

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:

Baseline season (11 games/yr)
GrowthSeason 5101520
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
Deep-run season (13 games/yr)
GrowthSeason 5101520
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.

Training priority: which skills are cheapest to develop, salary-wise

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.

Skill1→20 salary multiplierShape
Jump Shot5.21×Steep past ~rating 8
Rebounding4.42×Only skill with a real floor slope — costs something even at low ratings
Passing3.39×Steep past ~rating 11
Inside Def3.28×Steep past ~rating 9
Inside Shot2.93×Steep past ~rating 9
Outside Def2.45×Steep past ~rating 10
Jump Range2.38×Three-stage — a mid-rate step around 10–14
Handling1.70×Steep only past ~rating 12
Shot Blocking1.65×Gentle throughout
Driving1.23×Gentle throughout
Stamina1.00×Zero salary effect at any rating
Free Throw1.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.

Arena pricing: where we sit vs. our real Division III peers

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).

Revenue/game percentile
55th
of 256 Division III teams — $92,273/game vs. $80,520 median
Win% percentile
22nd
3–7 record — revenue is outperforming results
Bleachers price
$12
Div III median $10, mean $11.0
Courtside price
$119
Div III median $100, mean $119.1

[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.

TierCurrent fillTop price scenario testedEst. revenue/gameEst. delta
Bleachers82.1%$12 → $16 (+33%)$68,526+$9,225
Courtside100.0%$119 → $155 (+30%)$16,740+$3,888
Lower Tier96.8%$44 → $57 (+30%)$27,243+$3,395
Luxury62.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:

BudgetRecommended allocationEst. 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.

Season-end cash projection

Auto-updated daily
About this projection

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…

Recent cash movement

Auto-updated daily
About this ledger

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…

This week's live category breakdown

Auto-updated daily
About this breakdown

The official API's own category breakdown for the current and prior week, refreshed daily.

Loading live data…

Arena & attendance

Auto-updated daily

Loading live data…

Current prices vs. the game's allowed max

Loading live data…

Expansion cost per seat
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
Sellout revenue math

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).

Roster changes since last automated check

Auto-updated daily

Loading live data…

Skill ratings (as shown in-game)Official · Game Manual, rules.aspx?nav=Nomenclature + contentbox.css Word labels (on hover) are the manual's verbatim 1–20 adjective scale; colors are the exact hex values from the game's own stylesheet (.lev1–.lev20). Dark-mode colors are lightness-boosted for legibility, since the game has no dark theme of its own to match. Calculated The trailing Train?/Minutes/Status columns are filled in live by this page's own script from whichever training combo is currently selected above (see the training minutes calculator, Training Strategy tab) - not part of the daily snapshot.

Auto-updated daily
About the Train?/Minutes/Status columns

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…

Minutes vs. money — this weekCalculated Live total minutes (any position) this training week vs. each player's salary, sorted by salary — a quick check on whether the highest earners are actually playing. This resets on the Friday training-week boundary, same as the training-threshold minutes elsewhere in this report.

Auto-updated daily
About this section

Live total minutes (any position, not just the training-focused ones) via boxscore.aspx across this training-week's played matches.

Loading live data…

Staff, training & scouting

Auto-updated daily

Loading live data…

Training focus, scouting

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.

Roster by position group

Auto-updated daily

Loading live data…

Training minutes calculator

Calculated · updates instantly
How this works

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…

Training candidates & skills[Inference] Laid out like the in-game player page, live from the official API each run. A few fields shown in-game aren't exposed by the API and are left out rather than guessed. Word labels and colors use the Game Manual's exact 1–20 scale and stylesheet. Weekly minutes are computed live each run by summing boxscore.aspx across matches played since the most recent Friday reset. Per Tom Only minutes played at one of the focused positions count toward the threshold. Training focus is still static, carried over from the last screenshot check, since training.aspx has no API endpoint. The Clears/Short/Well-short bucketing is our own heuristic, not an official in-game label.

Auto-updated daily
About these skill ratings

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…

General training priorities

Your stated doctrine
Standing training doctrine

Recorded here as the standing framework for training decisions going forward, not just for the current cohort.

Big men (C / PF)
  1. ISP first — Inside Shot, Inside Defense, Rebounding are the priority group.
  2. Shot Blocking deliberately lower than those other three ISP skills — it adds too much salary for the value it returns.
  3. Passing and Driving are important — next tier.
  4. Shooting (Jump Shot) and Outside Defense — after that.
  5. Jump Range — generally not a priority.
Guards (PG / SG)
  1. OSP first — the outside-skill group.
  2. Jump Range deliberately lower than the other outside skills — same salary-cost logic as Shot Blocking for bigs.
  3. Passing is important — even more so for point guards.
  4. Inside Scoring and Rebounding also matter for guards.
Universal training targets

Universal targets, regardless of position: Stamina 6–8, Free Throw 7+.

Team Training vs. individual skills

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.

Sources

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.

  1. buzzerbeater.com official API (bbapi.buzzerbeater.com) — teaminfo, roster, economy, schedule, standings, arena, staff, boxscore endpoints, fetched daily.
  2. buzzerbeater.com/manage/training.aspx and fanSurvey.aspx — no API endpoint; update these sections by hand when you check them in-browser.
  3. buzzerbeater.com/community/rules.aspx?nav=Nomenclature — Game Manual: full 20-level skill adjective scale and full potential scale, verbatim.