FlooorGang

paused

Automated NBA betting analysis tool that identifies players who consistently hit stat thresholds (FlooorGang) by comparing historical performance to betting lines

Tech Stack

Pythonnba_apipandasmatplotlibThe Odds API

TL;DR

Calculate floors, store picks, generate graphics

scanner_v2.py
# player_stats_v2.py

def calculate_floor(games: list) -> int:
    """Floor = minimum value"""
    return min(games)

# Anthony Edwards - Last 10 games
pts = [32, 28, 41, 24, 35, 29, 27, 31, 26, 33]

floor = calculate_floor(pts)  # 24
line  = 22.5

if floor > line:
    print("✓ FLOOORGANG")  # 100% hit rate

Game history visualization:

vs LAL
32
vs GSW
28
vs DEN
41
vs PHX
24
vs LAC
35
vs BOS
29
Floor (24)
Line (22.5)

Floor = min(recent games)

Supabasepicks
playerstatlinefloorodds
A. EdwardsPTS22.524-226
N. JokicAST8.59-306
T. MaxeyPTS24.526-189
L. BallAST6.57-177

INSERT INTO picks

(player, stat, line, floor, odds)
VALUES (...)
-- 224 rows inserted
Total picks:224
Scored:126 W / 60 L

Picks stored in Supabase

NBA @FlooorGang - Nov 26

Odds from DraftKings • Up to 10 recent games shown

ODDSTEAMPLAYERLAST 10
+102MIN

Minnesota Timberwolves

PTS 109.5 OVER

112
113
120
120
112
124
-177HOU

Houston Rockets

PTS 108.5 OVER

114
109
114
117
140
135
-189CHA

LaMelo Ball

AST 6.5 OVER

7
9
8
10
8
13
-229SAS

Dylan Harper

PTS 9.5 OVER

12
13
11
20
13
15

Floor > Line = 100% hit rate

Auto-generated Twitter pick card

💀

Project Killed

67.7% win rate sounds good until you factor in the juice. The books always win.

What We Built — a lesson in why the house always wins

Phase 1

The Floor Concept

A player's "floor" is their minimum performance over the last 10-20 games. If Anthony Edwards has scored at least 24 points in every single game, his floor is 24. Simple.

The theory: sportsbooks set lines based on averages. But if a player's floor exceeds the line, they've hit it 100% of the time recently. That's not a prediction — that's a pattern.

The catch: The books know this too. Lines below floors come with heavy juice (-200 to -400), eating your edge.

Phase 2

The Pipeline

A Raspberry Pi woke up at 8 AM, checked the NBA schedule, and calculated when to run — 3 hours before the first game. It fetched alternate lines from The Odds API (DraftKings), pulled game logs from the NBA API, and calculated floors for every player with lines.

When a floor exceeded an available line, it was a pick. The system generated a mobile-optimized graphic and posted it to Twitter automatically. A second cron job scored yesterday's picks at 9 AM.

The verdict: Cool automation, bad business. Shut down after 23 days.

Final Results

224

total picks generated

67.7%

win rate (126-60)

23

days running

$0

profit (juice ate it all)

Tech Stack

Pythonnba_apiThe Odds APIpandasmatplotlibRaspberry PiSupabaseTwitter API

The pipeline worked flawlessly. Free NBA stats, $30/month for odds data, automated on a Raspberry Pi. The engineering was solid — the edge wasn't. Check out the picks archive at @FlooorGang.