THE METHOD
How the tape is read.
What Whalescanr reads, and what makes a trade a whale print — market-relative, in plain words.
THE INSTRUMENT
Whalescanr reads Kalshi's public, anonymous trade feed — the same tape anyone can pull. It describes what large money did: how big, how fast, which side, and how unusual that is for the specific market it happened in. It does not know who traded, and it does not predict what settles.
Two independent legs (live WebSocket + a continuously verifying REST sweep) write one ledger; divergences are recorded, never overwritten — the tape you see has an audit trail.
WHAT COUNTS AS A WHALE PRINT
Thresholds are market-relative first. A $5K print in a thin weather market and a $200K print in a deep index market can both be whales — each is measured against its own market's usual large trade. That is the N× typical figure on every card. One absolute dollar floor rides alongside, so a giant print in a market too new or thin to have its own bar is never missed — floor-crossers are labeled as such, never dressed up as market-relative whales. Every flagged trade carries its reason in plain words: if we can't say why it's notable, it isn't.
Direction means the aggressor. Every contract has two sides — a YES holder and a NO holder — so "flow favored a side" would be meaningless if it only counted volume. It doesn't. Each trade on Kalshi's tape has a resting order (the maker) and a taker who crossed the spread to trade immediately, and the feed reports the taker's side. When a card says bought YES, that is the side that paid to get in now; when a market's lean reads 93%, that share of flagged dollars had the aggressor on that side. It is the same convention as buyer-initiated volume in equities or a sweep at the ask in options flow — a measure of urgency, and only that.
THE DETECTOR, EXACTLY
Every trade on the tape becomes a taker notional N = contracts × price paid, measured on the aggressor's side. A print flags as a whale event when it clears its own market's bar — never a flat cutoff:
N ≥ max( $500, 1% × ADV30d ) or size ≥ p99≥ 5 same-side prints, gaps ≤ 10s, Σ N ≥ 0.5% × ADV30dw = 0.25 when YES price ∉ [0.1, 0.9], else 1ADV30d is the market's own trailing 30-day average daily notional. Buying 95¢ favorites is how fake whales are manufactured — near-settled prints keep detecting but count for a quarter. Markets without a stable size history produce no events at all: unknown liquidity means no "relative" exists, and we never guess. The N× typical badge is the print against the market's typical large trade — its 95th-percentile trade notional, shown only after 100+ trades and capped at 25×+ where the number stops discriminating.
WHAT MAKES A PRINT NOTABLE
Whale events are common; notable is rare on purpose. An event trips the editorial layer only on descriptive signals, each adding to a score s:
N ≥ 15× typical and N ≥ 50% × ADV → s += min(N/ADV ÷ 0.5, 3)sweep total ≥ 50% × ADV → s += 1.5last-hour whale rate ≥ 4× its baseline, ≥ 3 recent → s += 1cluster flow ≥ 2× its prior window, ≥ $25K → s += 1HOW THE CARDS RANK
The notable wall shows only markets that are verified open and live in fact: resolution horizon still ahead, current price inside 3–97¢ (a "still open" final trading at 99¢ is settled in every way a reader cares about), and the whale's entry between 20¢ and 95¢ — the band where the outcome is genuinely in question. Among those, one card per market, ranked by signal strength times actionability:
rank = s · (0.25 + |lean|) · 2−age / 8h · chase(Δp) · window(t)lean is the market's 24-hour aggressor-side dollar imbalance — one-sided conviction outranks split flow. Freshness halves every 8 hours: a day-old print carries an eighth of the weight of a new one, because signal value decays with the tape. chase(Δp) is the stale-chase penalty: when the market has already repriced past the whale by 5¢ the multiplier falls, reaching 0.35 at 15¢ — a print the market already agreed with is a story, not a signal. window(t) favors markets resolving within 72 hours (1.2×) over ones months out (0.8× beyond 30 days). For a two-outcome game, both sides count as one market:
FOR(A) = YES$(A) + NO$(B) · share(A) = FOR(A) ⁄ (FOR(A) + FOR(B))