WHALE WATCH

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

{{ whales.length }} whales tracked
Latest quarter: {{ latestQuarter }}
Loading whale roster…
Upgrade required
Whale Watch is part of the paid plans — start a trial or contact sales →
Session expired
Your sign-in lapsed while this page was loading. Sign in again or refresh the page.
No whale data yet
The 13F roster is being populated — check back shortly.
Click any whale to open their full portfolio. Cards show latest-quarter AUM, position count, new / exited positions, top-5 holdings, and the clone return — what copying their disclosed book would have earned (13F-derived, 45-day filing lag, long positions only).
Sort:
{{ 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(' / ') }}
Clone return: insufficient history
13F data is on its way — check back after the next refresh.
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).

Two independent, informed signals on the same name: a federal-award surge (USAspending QoQ jump) and tracked-whale accumulation (13F adds). Whale votes are performance-weighted — a fund whose disclosed book has been compounding counts more than one that's been losing. Public-data correlation — research signal, not advice.

Loading convergence board…
No convergence right now — no tracked name shows both a federal-award surge and fresh whale accumulation.
#TickerScore Whales addingGov QoQ Top agencyAward
{{ r.rank }} {{ r.ticker }} {{ r.score }} {{ r.n_whales }} · {{ r.n_new }} new {{ (r.holders || []).join(', ') }} {{ r.jump_ratio }}× {{ r.top_agency || '—' }} USAspending →—
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 || 'engagement').replace(/_/g, ' ') }} 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.
Which two whales hold the same book. Overlap sums the smaller of each pair's portfolio weight across every security both funds report, so 100 means identical portfolios at the percentage level and 0 means no shared name. Long 13F positions only, one quarter at a time — it says nothing about who copied whom.
Computing overlap…
{{ clonesError }}
No pairs at this threshold
No two whales overlap by {{ clonesMinOverlap }}% or more in {{ clonesResolvedQuarter || 'the latest quarter' }}. Lower the threshold to widen the net.
Quarter {{ clonesResolvedQuarter || '--' }} · {{ clonePairs.length }} pair{{ clonePairs.length === 1 ? '' : 's' }} at ≥ {{ clonesMinOverlap }}%
Whale A Whale B Overlap Shared names
{{ p.a.name || p.a.slug }} {{ p.a.manager_name }} {{ p.b.name || p.b.slug }} {{ p.b.manager_name }} {{ p.overlap_pct }}% {{ p.shared_positions }}
One fund, quarter by quarter: assets, the top five holdings, and what it bought and sold. Where both quarters have an embedded snapshot we also show drift, the cosine distance between consecutive quarters' narratives. High drift usually means a strategy pivot or a big rebalance. Drift is blank when a snapshot has not been embedded, which is not a zero.
Loading timeline…
{{ trajectoryError }}
Pick a whale above to see their quarter-by-quarter timeline.
No quarters on file
This whale has no 13F positions ingested yet.
{{ trajectory.whale.name }} · {{ trajectory.whale.manager_name }} · {{ trajectory.quarters.length }} quarter{{ trajectory.quarters.length === 1 ? '' : 's' }}
{{ q.quarter }}
AUM {{ fmtAUM(q.aum_usd) }} Positions {{ q.n_positions }} +{{ q.new_positions }} new −{{ q.exits }} exits Drift {{ q.drift_from_prev }} Drift n/a
Top holdings
{{ h.ticker || '--' }} {{ Number(h.pct_portfolio).toFixed(1) }}% {{ h.issuer }}
+ New ({{ q.new_positions }})
none this quarter
{{ h.ticker || '--' }} {{ h.issuer }}
+ {{ q.new_positions - (q.new_positions_list || []).length }} more
− Exits ({{ q.exits }})
none this quarter
{{ h.ticker || '--' }} {{ h.issuer }}
+ {{ q.exits - (q.exits_list || []).length }} more