> ## Documentation Index
> Fetch the complete documentation index at: https://docs.centaur.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Signal Intelligence

> Six deterministic positioning views with shared REST and MCP calculations.

All six views require `stats.read`. Counts, cohorts, and rankings include only traders whose signals the caller can access.
These are current calculations, not generated narrative summaries or backtests.

## Views and controls

REST paths below start with `/v2/signals/`. Each ranked view accepts `limit`, which defaults to `50` and cannot exceed `50`.
There is no cursor pagination. Unknown parameters are rejected.

| View | REST path suffix | MCP tool | Additional controls and defaults |
| - | - | - | - |
| Trending | `trending` | `get_trending_signals` | `windowDays=7`, supports `1`, `7`, `30` |
| Specialist Ideas | `specialist-ideas` | `get_specialist_ideas` | `minEvaluations=5`, `minWinRatePercent=60`, `minSpecialists=2` |
| Early Opportunities | `early-opportunities` | `get_early_opportunities` | `windowDays=7`, `minTraders=2`, `maxTraders=3`, `movementThresholdPercent=10` |
| Crowd Fade | `crowd-fade` | `get_crowd_fade` | `minAbsNet=7` |
| Smart Money vs Crowd | `smart-money` | `get_smart_money` | `minLeaderEvaluations=10`, `minEvaluations=5`, `minWinRatePercent=60` |
| Leaders' Book | `leaders-book` | `get_leaders_book` | None, including no `limit` parameter |

Count thresholds are positive integers. Win rate ranges from `0` to `100`. Movement thresholds must be positive.
Early Opportunities supports `1`, `7`, or `30` days and requires `minTraders <= maxTraders`. Defaults select two or three same-direction holders.

## Calculation rules

* Trending ranks the change in net open trader count between now and the earlier cutoff. This is not activity across two adjacent windows.
* Specialist Ideas uses YTD positions and their earliest 30D evaluation. Only ready evaluations with a return count. Assets with qualifying clusters in both directions are excluded.
* Early Opportunities ranks start-to-current movement in the held direction, not the largest move within the window. `movementPercent` is signed market movement, so qualifying short rows have negative values.
* Crowd Fade ranks the crowded direction's open return, then shows the opposite `fadeDirection`. Missing returns sort last. A positive return is not required.
* Smart Money ranks traders by median 30D return on YTD positions, with at least 10 scored positions by default. `minLeaderEvaluations` changes this minimum without changing specialist eligibility. The top 20% of eligible traders and same-asset specialists form Smart Money, without double counting. Crowd is everyone else eligible. Each net percentage includes non-holders in its denominator. `gap` is the absolute percentage-point difference between opposing net positions.
* Leaders' Book uses a curated roster of 30 traders, independent of Smart Money's leaders. It includes each accessible listed trader who has an eligible open position and returns their full eligible open portfolio. Portfolios rank by median 30D return on YTD positions. Traders without scored positions have `medianReturnPercent: null` and `evaluatedCount: 0` and sort after all scored traders, including negative performers. Ties sort by trader ID.
* Leaders' Book confluence includes assets with at least two listed traders holding the same side and positive net positioning. Unscored traders contribute too. Groups rank by net trader count, then highest unrounded open return, with a cap of 10 applied after ranking. Missing returns sort last within equal net counts; remaining ties use asset ID and direction. It does not fill empty slots with another trader's positions. Ranking is recalculated on each request using the latest stored prices.

Leaders' Book reports `minLeaderEvaluations: 0` because its roster has no evaluation minimum. Its `leaderCount: 30` describes the roster size, not the number of returned portfolios. Missing performance, hidden traders, and closed positions do not cause substitutions from outside the roster.

The response echoes applied `parameters` and `calculationAt`. Rankings and thresholds use unrounded values. Display percentages use two decimal places.
Group `openReturnPercent` compares the average entry with the current price. It is null when any required entry or current price is missing.
Asset, trader, and position IDs use the same canonical IDs as the existing discovery and position reads.

## Prices and incomplete results

Current prices come from the latest-price table. `currentQuoteAt` preserves each quote's actual timestamp. The API does not refresh prices on demand.

Early Opportunities requests historical prices for candidate assets at one shared `historicalRequestedAt` minute.
End prices can have different timestamps, so effective window lengths can differ. `historicalQuoteAt` stays null when Core does not expose the actual quote timestamp.

`coverage` counts available, missing, failed, and explicitly known insufficient-history assets. Early Opportunities returns separate latest and historical coverage.
Unknown missing data is not labeled insufficient history. Missing prices do not become zero returns.

Partial coverage can return valid results. Early Opportunities omits groups that lack a required price and reports `missingPriceGroups`.
If every required retrieval fails, REST returns `503 SIGNAL_PRICES_UNAVAILABLE` and MCP returns an error result.
A calculation that exceeds its execution budget returns `504 SIGNAL_TIMEOUT` over REST or an MCP error result.
