get_float
Get Float Data
What it does
Get float data for a company: floatShares, floatDefinition, as-of date and, when the headline float is WITHHELD, the bounds and labelled stand-ins that replace it. CARDINAL RULE: null / absent / withheld means NOT MEASURED, never "no float", "no restricted shares" or zero.
A numeric 0 is a MEASURED zero and passes a null check, so decide from the reason/marker fields ("floatWithheldReason", "restrictedBlockCount", "provenance", "direction"), never from the value alone.
The share count the float was judged against ("basisSharesOutstanding") is DATED by "sharesOutstandingAsOf" + "sharesOutstandingAsOfKind" ("stated" / "checked" / "none" = date not recorded) and "sharesOutstandingSource"; never present the count without its date. "floatDefinition": "tradeable" (shares outstanding minus affiliates minus restricted/unregistered blocks; filing-derived snapshot tickers), "non_affiliate" (the SEC I.B.6 figure, which INCLUDES restricted shares held by non-affiliates; not a trader's float), "non_affiliate_estimate" (from ownership filings), "free_float" (vendor). "floatDefinition" and "source" appear only on snapshot results; read an ABSENT floatDefinition as "not a filing-derived tradeable float". "nonAffiliateFloatShares" (snapshot tickers) is the ONLY correct input to baby-shelf / I.B.6 math; never use the tradeable float there, and never present the non-affiliate figure as tradeable supply.
PRECEDENCE: when the snapshot carries ANY figure ("floatEstimate", "tradeableFloatCeiling", an "affiliateBasis" range), "floatShares" stays null and THAT figure is the answer.
A lower tier fills "floatShares" (its own "source" and definition, with "snapshotFloatWithheldReason" as provenance context, not a second refusal) only when the snapshot has no figure, or its only figure is a trivial ceiling (>= 99% of the share count), which is stripped. Floors, points, every "shares_outstanding_ceiling" and an "affiliate_sizing_estimate" (quote its "reason" and "unsizedAffiliates") are kept.
A lower tier that also answered rides "otherSourceFloat" {floatShares, source, provenance:"other_source", floatDefinition, asOfDate} as a secondary "other source" line, never the float, never arithmetic.
A lower-tier figure that predates a split the snapshot names, predates recorded issuances >= 10% of it, or falls outside the snapshot's bounds is REFUSED: "fallbackRefusal" {reason, refusedSource, detail}; do not fetch it from a vendor to fill the gap. "floatShares":null with "floatWithheldReason" set and no lower-tier figure means nothing could answer; do not substitute a vendor float of your own.
RENDERING: print no "~", "<=" or ">=" glyph. A point (bound "point", or a "floatEstimate" with "statedAsOf" {asOf, source, events[]}) is the plain number + "as of <asOf>" + the caveat (the unsized later issuances in "statedAsOf.events"). A ceiling, floor or range is NOT a figure: write "float not stated (the filings put it at most / at least N; <reason>)". STAND-INS on a withheld result.
NONE is a float and NONE may feed a market cap, percent-of-float, short-interest ratio, screen, sort or comparison. (1) "tradeableFloatCeiling": the tradeable float is AT MOST this (null = no bound, never 0). (2) "affiliateBasis.floatLowerBound" / "floatUpperBound": a range for the NON-AFFILIATE float (still includes non-affiliate restricted shares); each end is null independently.
On a published float it is context only. (3) "floatEstimate" {shares, basis, direction, confidence, rung, bound, asOf, reason, qualifier, offBasis, statedAsOf, staleness}: quote "basis"; "direction" "overstates" = true float at most shares, "understates" = at least, "unknown"; "rung" names the ladder step; rung "best_estimate" is the most likely figure when every filing rung withheld ("basisKind" = what it rests on, "assumptions" = how each unsized holder was treated): report it AS an estimate with its assumptions, never a measurement.
Quote "qualifier" with the figure. "offBasis": "pre_split_as_filed" (as of asOf, BEFORE "splitsAfter" [{ratio, effectiveDate, status}]), "ordinary_shares_unconverted" (ordinary shares, NOT ADSs), "count_predates_issuances" (dated cover count "countSource", later issuances uncounted); an offBasis figure is true ONLY with its label, so never state it without the label or compare it with a price, market cap, another float or a threshold. "staleness" flags a point older than 12 months or post-dated by a known issuance.
An estimate never becomes floatShares; present shares WITH basis and direction.
Unrelated to the boolean "floatEstimated" (a published floatShares back-derived from a USD public-float disclosure). (4) "vendorFallback" {floatShares, provenance:"vendor", floatDefinition:"free_float", asOfDate, splitAdjusted}: a third-party free float, not ours; present it as the vendor free float as of its date, never in the "Float" slot. "restrictedShares":null = NOT MEASURED (a block exists whose size the filings do not state), never zero; "restrictedBlockCount":0 is an answer. "affiliateBasisStale" (basisSpanDays, affiliateAnchorDate) labels an affiliate table materially older than the share count. "tradeableBasis":"convention_conservative" = a published convention resolved it (see "tradeableConvention"); do not present the figure as exact.
Ask your AI
With the Signal8 MCP server connected, your assistant calls this tool when a question needs it. For example:
Using Signal8, get float data for $TICKER.
Parameters
| Name | Type | Description |
|---|---|---|
tickerrequired | string | Stock ticker symbol (e.g., "AAPL", "TSLA") |
Other Market data tools
- get_accumulation_snapshotIntraday accumulation/distribution metrics.
- get_float_historyPoint-in-time float per trade date, with source.
- get_historical_pricesHistorical OHLCV candles (daily/weekly/monthly).
- get_intraday_barsIntraday candles at 1/5/15/30/60-minute resolution.
- get_market_breadthAdvance/decline counts and breadth ratio.
- get_market_metricsVolume averages, volatility, and trend for a company.
- get_quoteCurrent quote (price, volume, change) for one company.
- get_short_interestShort volume, short ratio, and days to cover.
- get_stock_price_changePercent price change across multiple timeframes.
- get_top_moversTop gainers, losers, or most-active by volume.
- get_trading_haltsCurrently-active NASDAQ/NYSE/AMEX trading halts.
- get_volume_profileVolume distribution across price levels for a day.