WHALE WATCH

13F holdings of HNW individuals and hedge funds — append-only time series.

{{ whales.length }} whales tracked
Latest quarter: {{ latestQuarter }}
Loading whale roster…
No Whale Data Yet
Run python -m src.whale_watch --seed && python -m src.whale_watch --fetch-all to seed and populate.
Click any whale to open their full portfolio. Cards show latest-quarter AUM, position count, new / exited positions, and top-5 holdings.
{{ w.name }}
{{ w.manager_name }}
{{ w.tier || 'generalist' }}
AUM: {{ fmtAUM(w.total_aum_usd) }} ({{ w.latest_quarter }})
Positions: {{ w.n_positions }} +{{ w.n_new }} new -{{ w.n_exit }} exited
Top: {{ w.top_holdings.map(h => h.ticker || '?').slice(0, 5).join(' / ') }}
No 13F fetched yet — run --fetch {{ w.slug }}
Pick a whale above to see their full portfolio.

{{ portfolio.whale.name }}

{{ portfolio.whale.manager_name }} · {{ portfolio.whale.tier || 'generalist' }}
{{ portfolio.whale.description }}
{{ fmtAUM(portfolio.total_aum_usd) }}
13F AUM · {{ portfolio.quarter }}
{{ portfolio.n_positions }} positions
New Positions This Quarter ({{ portfolio.new_positions.length }})
No new positions.
{{ p.ticker || p.issuer }} {{ fmtAUM(p.value_usd) }} · {{ Number.isFinite(p.pct_portfolio) ? p.pct_portfolio.toFixed(1) + '%' : '--' }}
Exits This Quarter ({{ portfolio.exited_positions.length }})
No exits.
{{ p.ticker || p.issuer }} -{{ Math.abs(p.shares_delta).toLocaleString(undefined, {maximumFractionDigits: 0}) }} sh
Portfolio — {{ portfolio.quarter }}
#TickerIssuer Shares Δ Shares Δ% Value % Port
{{ i + 1 }} {{ p.ticker || '--' }} {{ p.issuer }} {{ fmtShares(p.shares) }} {{ p.shares_delta ? (p.shares_delta > 0 ? '+' : '') + fmtShares(p.shares_delta) : '--' }} {{ p.shares_delta_pct ? (p.shares_delta_pct > 0 ? '+' : '') + p.shares_delta_pct.toFixed(1) + '%' : '--' }} {{ fmtAUM(p.value_usd) }} {{ Number.isFinite(p.pct_portfolio) ? p.pct_portfolio.toFixed(1) + '%' : '--' }} NEW
Stocks held by multiple tracked whales in the latest quarter. Shows implicit consensus — when 3+ whales are simultaneously in the same name, that's a conviction-weighted signal.
· {{ trending.length }} matches for {{ trendingQuarter }}
No tickers pass the {{ minWhales }}-whale threshold yet — once more whales are fetched, consensus names will surface.
#TickerIssuer # Whales Combined Value Holders
{{ i + 1 }} {{ t.ticker }} {{ t.issuer }} {{ t.n_whales }} {{ fmtAUM(t.total_value_usd) }} {{ h.name }}+
+ next to a holder = new position this quarter (coordinated accumulation signal).
Schedule 13D filings from tracked whales — triggered when an investor crosses a 5% stake with intent to influence. Every Item 4 "Purpose of Transaction" is classified by LLM into passive, engagement, board change, strategic review, or proxy fight.
· {{ activist.length }} filings
{{ cls.replace('_', ' ') }} {{ n }}
No 13D filings ingested yet. Run --fetch-activist to populate.
DateWhaleFormTarget Stake % IntentSummary
{{ c.filing_date }} {{ c.manager_name }} {{ c.form }} {{ c.target_ticker || '--' }} {{ c.target_name }} {{ Number.isFinite(c.stake_pct) ? c.stake_pct.toFixed(1) + '%' : '--' }} {{ c.intent_class.replace('_', ' ') }} hostile {{ c.intent_summary }} view →
Classification by Groq Llama 3.3 70B on Item 4 body (Gemini fallback). Delta amendments may classify as passive when the new content only reports a share sale or price update — check the original 13D for full activism thesis.