One row per game. Moneyline = what a $1 Robinhood contract on each team costs (Robinhood's NBA contracts are Kalshi's), with the American odds, and Pinnacle's de-vigged fair chance under it. Spread = the favorite's line and price, the underdog's under it. Crowd $ on the spread = how the crowd's taker dollars split between the favorite and the underdog at Kalshi's main line (left bar = away team, same as the moneyline bar, so each team keeps its color), with the dollars on each; "crowd heavy" marks 65%+ on one side once $25k+ is in. Crowd $ on the moneyline = the same for who wins (left bar = away team). Both frozen at tip-off. Each pre-game trade is credited to the side the bettor actually backed. Book took / paid = once the game is final: took = the crowd's money on the losing side (all of it is lost); paid = the profit the winning side was paid at its price (the dollars on the winner x (1 - price) / price, so $102k on a 61¢ / −156 favorite is paid about $65k, not $102k); then the book's net. Robinhood/Kalshi is an exchange, so the 'book' is really the other side of each trade; the math is the same.
Both sides of every spread. Robinhood ask = what a $1 contract on that side costs. Pinnacle fair = the sharpest book's de-vigged chance at the same line; Edge = fair minus ask, in points. Crowd share / $ on side = how much of the crowd's taker money (each pre-game trade credited to the side the bettor backed) is on that side, frozen at tip-off. Crowd money alone was break-even on NBA spreads last season, so it's information, not a pick.
Scorecard every graded NBA game · click a column to sort
Rules, tested on all of last season (1,086 regular-season games, Kalshi's price at tip plus the fee):
BET on a spread = the team that won its last game by 20+. It covered 58% (+14%), and held in both halves of the season (+10% Oct-Jan, +18% Feb-Apr) and across favorites, underdogs, home and road. The market prices in a letdown after a blowout that doesn't come.
STRONG BET = the same, when its opponent also won its last game (+23%, about 125 games).
LEAN on a moneyline = the same team (+8%; the spread pays better). LEAN on a moneyline or spread also = the better team priced as the underdog: its season point differential is 4+ points a game better than its opponent's (5+ games each), yet it's the underdog. Last season: +39% on the moneyline, +22% on the spread, both halves of the season, and stronger as the gap grew, but only about 57 games all season, so it's a LEAN. LEAN on a total = the under when the total is below 220 (+18%, only 74 games). LEAN · fade the line move = when a spread's price moved 4¢+ toward one side between the first price we saw (6+ hours before tip) and tip-off, take the other side: last season 55% covered, +12% (+10% Oct-Jan, +14% Feb-Apr) on 94 games, while following the move lost 17%. The NBA spread market overreacts. Of the "smart money" signals tested on 1,305 games, it's the only one that held: following $1k+ trades lost 4%, following money in the last 2 hours lost 6%.
What did not work last season: fading the crowd's spread money (the NFL rule, +0.6% on 1,128 games), the crowd's moneyline money, back-to-backs, win streaks, home/road. The rule needs each team's previous game, so it starts with each team's second game. Regular season only: in the playoffs it was flat.