Documentation
Method
How every number here is produced, where it comes from, how often it changes, and what it cannot tell you.
The sectors
one taxonomy across both modulesThe Council and Smart Money speak the same language on purpose: the eleven GICS sectors, each with its reference ETF, plus three buckets that only appear inside 13F portfolios. Without that, comparing what the market does against what the managers do would not close.
| Sector | Reference ETF | Classification | Cycle character |
|---|---|---|---|
| Technology | XLK | Offense | Cyclical / growth |
| Consumer Discretionary | XLY | Offense | Cyclical / early cycle |
| Communication Services | XLC | Offense | Cyclical / growth |
| Industrials | XLI | Offense | Cyclical / mid cycle |
| Materials | XLB | Offense | Cyclical / late cycle |
| Financials | XLF | Neither | Cyclical / early cycle |
| Energy | XLE | Neither | Cyclical / late cycle |
| Real Estate | XLRE | Neither | Rate sensitive |
| Utilities | XLU | Defense | Defensive / recession |
| Consumer Staples | XLP | Defense | Defensive / recession |
| Health Care | XLV | Defense | Defensive / recession |
| Gold | GLD | Defense | Store of value |
| ETFs & funds | — | Neither | Indirect exposure |
| Unclassified | — | — | Issuer not in the CUSIP map |
Energy and Financials sit outside both offense and defense deliberately: each leads in an opposite phase of the cycle — Financials early, Energy late — and folding either into one side would erase precisely the signal this site is looking for.
Smart Money — from filing to chart
For each manager on the list, the pipeline reads data.sec.gov/submissions/CIK…json and picks out the most recent 13F-HR filings, one per quarter, discarding repeated amendments.
From the filing directory it takes the information table — the larger XML, never primary_doc.xml — and reads every row: issuer, class, CUSIP, value, share count, and whether the line is an option.
The sum of the values is compared against the filing's own tableValueTotal, and the row count against its tableEntryTotal. If either misses by more than 1%, the filing is flagged as divergent and does not reach the site.
Why it matters: until 2022 the value field came in thousands and from 2023 in whole dollars — but some filers still use thousands. The unit is inferred from the cover page rather than assumed from the date. Without this check a portfolio would show up a thousand times larger than it is.
Each CUSIP is translated into a sector through a map versioned in the repository. Anything not in the map becomes Unclassified and appears on the coverage page with the weight it represents — never hidden, never nudged into the nearest sector.
With percentage allocations for two quarters, the pipeline computes the change per sector. A manager's dominant move is the pair formed by the largest fall and the largest rise, and it only exists when both clear half a percentage point. That pair is the arrow the wheel draws.
Put options are excluded from the sector reading. A put against a sector is protection, not allocation, and counting it as a long position would invert the signal.
Aggregation: the two curves
Equal weight
Every manager counts once. This is the conviction read: what most desks decided, regardless of how large any of them is. It is the site's default view.
The quarter-over-quarter change is computed only across managers that filed both quarters. Comparing different samples would measure a change of roster, not a rotation of money.
Weighted by value
Weight proportional to portfolio size. This measures flow in dollars — but with Berkshire accounting for roughly three quarters of the total value tracked, the curve is close to its portfolio alone.
Both are available on the Flows page because they answer different questions. Neither is "the right one".
The Council
Nine agents analyse the same market without seeing each other's conclusions, then a meta-agent consolidates them at fixed weights: Sector Rotation 20%, Macro/Liquidity/Credit 15%, Market Breadth 15%, Earnings & Valuation 10%, Quantitative Probability 10%, Wyckoff 10%, Sentiment & Positioning 10%, Gann 5%, Elliott Wave 5%. The weighted score maps to 0–100 through 50 + score × 5.
Hierarchy when agents disagree
When sector rotation and price disagree, rotation takes precedence on the regime read — an index can rise for three months after the composition has already turned defensive. Price keeps precedence on immediate risk and on operating levels.
When credit and equities disagree, credit takes precedence. Spreads widening while stocks rise is a first-order alert; spreads compressing while stocks wobble is the benign version of the same disagreement.
The coherence test
No cycle read counts on leadership alone. Nine independent ratios have to agree: XLY/XLP, IWM/SPY, IWF/IWD, SPHB/SPLV, RSP/SPY, SOXX/SPY, XLI/XLU, copper/gold and HYG/LQD.
Seven or more agreeing means a coherent rotation. Fewer than five means an incoherent one, and the sector signal loses weight in the final matrix. The count is always published, including when it fails — in round 01 it came in at 3 of 9.
What this site cannot tell you
A 13F is a photograph of the last day of the quarter, published up to 45 days later. Between the photograph and your reading, a full quarter of market has gone by.
The form covers only long positions in US-listed equities and some derivatives. It shows no shorts, no cash, no bonds, no currencies, no physical commodities and nothing held offshore. A 13F portfolio is not the manager's portfolio.
A position taken to zero may be a change of view, a client redemption, a rebalance or tax harvesting. The form records what, never why.
A manager can request confidential treatment for a position still being built, and it disappears from the form until the SEC releases it. Portfolios with a declared omission are marked as such.
Nothing here is a suggestion to buy, sell or hold any security. Copying a manager's portfolio on a 45-day lag, without knowing how large it is relative to their total capital or what sits on the other side of it, is an expensive way to learn that lesson.
Reproducibility
Every number on this site comes out of three scripts and three configuration files kept under version control: pipeline/fetch_13f.py downloads and checks the filings, pipeline/build_data.py classifies and aggregates, pipeline/verificar.py gates publication, and pipeline/managers.json, pipeline/sector_map.json and the raw files in data/raw/ hold the rest. Every portfolio on the site links straight to the original XML on SEC EDGAR — it can be checked line by line.