Transparency · Methodology
An alternative data intelligence layer for US small-caps
// historical observations · same outputs for every subscriber · not investment advice
BullAlert is not an exchange data feed. We are an intelligence layer over historical data patterns and public information — price/volume history, SEC EDGAR filings, news, social momentum, and AI sentiment — run through a proprietary 20-gate scoring algorithm. Everything we publish is our own derived analytic, never raw market data. We surface what's moving; you decide what to do with it.
What we ARE
- A pattern-detection intelligence layer
- A publisher of our own derived analytics
- An algorithmic, impersonal scorer
- An educational & informational source
What we are NOT
- An exchange data feed
- A real-time quote provider
- A personalized advisor
- A raw market data redistributor
- A licensed broker, dealer, or RIA
The three layers — signals, watchlist, alerts
People ask us this all the time: what's the difference between the watchlist and an alert? Everything we publish flows through one funnel that narrows from broad to high-conviction. Each layer is also a public API endpoint — use the app, or build your own AI agent on the feed.
GET /v1/signals Every $0.20–$20 ticker that cleared our basic filters this session — the price band plus scam / pump-and-dump screening. No gates, no ranking here: a signal is a raw data input (identity and catch-time only). Pass it to your agent, backtest, or risk layer and let it decide — the gates and the ranking come next.
GET /v1/watchlist Our proprietary ranking of that pool into a board, scored 0–100 from momentum and price action. Momentum (green) = the name cleared our momentum bar this refresh; Watch (yellow) = on the radar, not all the way there. The “what's worth attention right now” layer.
GET /v1/alerts The handful that passed all of our gates — our highest-conviction layer. Identity and catch-time only on the public record; the full catch→peak story lives in the app.
// signals (breadth) → watchlist (ranking) → alerts (conviction)
· SEC EDGAR (/v1/edgar) adds filing context to any of them
Where BullAlert fits in your stack
BullAlert is the first step, not the whole stack. We're the quality data layer — we do the universe-filtering and the scam / pump-and-dump screening so the $0.20–$20 names you start from are signal, not noise. You bring the rest: pair our derived intelligence (score, status, tier, catalyst, volume band) with your own broker for execution and your own strategy for the edge. Infinite strategies, your alpha, on a clean base.
We deliberately don't redistribute raw Level 1/2 market data or quotes — that stays with your broker or market-data provider. What we publish is our proprietary intelligence layer: the derived outputs above, never the underlying feed. The point is to take the hardest, noisiest part — which small-caps are worth your attention without drowning in pump-and-dumps and bot-spam — off your plate, so the strategy you build starts from quality data we've backtested, and the alpha you add is genuinely yours.
How we operate — in one paragraph
BullAlert is informational and educational only. Nothing we publish is investment advice or a recommendation to buy, sell, or hold any security. Every subscriber receives the same outputs at the same time — our scoring is algorithmic and impersonal, with no personalization to any individual.
We publish only our own derived analytics — momentum scores, tier badges, volume bands, pattern labels, and historical catch→peak observations — never raw prices, quotes, or volume. Market data is used solely to identify patterns internally; it is never re-exposed or redistributed, and our outputs cannot be reverse-engineered back into the underlying feed. (Licensing specifics live in our Terms and disclaimer.)
What we actually do
We build pattern intelligence from historical data and public information. Each ticker's price/volume history, SEC EDGAR filings, news, social momentum, and AI-derived sentiment run through a proprietary 20-gate scoring algorithm. The ones that clear the bar surface on the app, the public alert history, and our channels — tagged with the session the pattern was identified in, the score it earned, and the subsequent observed peak.
We never claim to predict tops; we surface historical patterns and let subscribers decide what, if anything, to do with them. We are an intelligence layer — not a real-time data vendor, not a broker, and not a redistributor of any exchange feed.
Our data inputs
// Historical data + public inputs · used solely for internal pattern identification · never re-exposed
Five input categories. All feed our internal scoring — none are re-exposed to subscribers as a market-data feed.
- Historical price/volume patterns — prior-session price action plus 10-day trailing volume baselines. Used for relative-volume context, gap detection, and catch→peak observation.
- SEC EDGAR filings — 8-K, S-1, S-3, 13D/G, Form 4, dilution filings. Public, freely available, often the strongest small-cap catalyst signal.
- News feeds — aggregated press releases, headlines, and ticker-tagged stories. Used for catalyst detection and recency scoring.
- Social momentum signals — mention density across independent public social sources, with cross-source confirmation and recency decay. Used for attention and sentiment context.
- AI-derived sentiment — structured sentiment tags computed from the inputs above. Internal context, never the sole reason for surfacing a ticker.
We do not publish our provider stack. The categories are public on purpose; the plumbing stays private. The market data is held under a commercial internal-use license — processed internally only, never displayed, shared, or redistributed. All inputs feed our scores, tiers, bands, and pattern observations; the raw data stays inside the algorithm, cannot be reverse-engineered from our outputs, and is not a substitute for it.
How the scoring works
Before a ticker becomes a surfaced signal, it passes through twenty internal gates. Each gate evaluates our historical-data and catalyst inputs against pattern criteria. Below is what each group checks — not the thresholds, formulas, or weights. The recipe stays opaque on purpose; the categories are public on purpose.
Liquidity & structure
- Active session — the ticker is inside an open US small-cap session in the historical record
- Volume floor — turnover sufficient that historical prices reflect real demand, not a single print
- Float guardrails — share structure within a band where momentum patterns historically sustain
- Price band — the universe is constrained to small-caps where catalysts historically move price meaningfully
- Dollar-turnover floor — daily dollar volume large enough that a position could be entered and exited cleanly
- Spread & depth — historical bid/ask gap is tight and real shares sit on both sides, not a thin print
Momentum & flow
- Relative volume regime — today is structurally heavier than the 10-day historical baseline at this time of day
- Momentum acceleration — recent move is expanding rather than fading across daily bars
- Session-aware change — the move is measured against the correct prior-session historical reference
- Trend confirmation — multi-bar agreement, not a one-print spike
Quality & catalyst
- Sentiment density — multiple independent social sources have surfaced the ticker recently
- Catalyst presence — a fresh news item, SEC EDGAR filing, or event tied to the ticker, with sane recency
- Scoring threshold — internal momentum score crosses a session-aware bar
- Tier eligibility — the historical catch quality earns S, A, B, C, or D classification
Late-catch & fader rejection
- Late-catch guard — the move has not already exhausted in the historical window (no chasing local tops)
- Fader rejection — patterns that historically reverse quickly are filtered out
- Drawdown brake — early-cycle weakness disqualifies before it becomes a loss
- Per-session cap — a finite number of catches per session prevents over-firing
Pattern grading (S / A / B / C / D)
Once a candidate clears the gates, the resulting signal is graded on a five-level scale based on how many confirming layers stack up. Grades are outcome-described, not recipe-described:
Highest conviction. Multiple catalyst signals, clean structure, strong session context.
High conviction. Catalyst plus structure, with one fewer confirming layer than S.
Medium conviction. Either catalyst or structure dominates, not both.
Low conviction. The signal crossed gates but the structure is thin.
Marginal. Surfaced for completeness; treat as watchlist context, not a setup.
How catch% and peak% are computed
// Backward-looking historical observations · Same outputs for every subscriber · Not predictions · Not advice
Every signal we publish is described by two numbers, scoped to a single (ticker, session) historical row. Both are backward-looking observations from the historical record — not predictions, not real-time prints.
- catch% — the price change at the moment the scoring algorithm identified a setup in the historical record, measured against the correct prior-session reference (typically T-1, the previous trading day's close). Frozen at identification. Once written, it never updates.
- peak% — the highest subsequent price observed within a defined historical window after the catch. Window is bounded by the session in which the setup was identified, with EOD bar-truth reconciliation. For swing setups the window extends T+1 to T+5 trading days. Neither projection nor forecast — just what historically happened.
The three sessions — pre-market, regular hours, and after-hours — are independent. A pre-market identification does not carry forward into regular hours. Each session opens with its own catch and its own observed peak.
Why two numbers, not one? catch% tells you how early in the historical move the algorithm identified the setup; peak% tells you how far the ticker went afterward in the historical record. The gap between them is the only honest measure of historical edge. We sort every leaderboard by this delta, and you can verify each row yourself on the public alert history.
How volume context works
Any volume figure you see on BullAlert is a 10-day trailing baseline ratio, not a live exchange volume number. When we tag a ticker with a relative-volume category, it means today's daily volume relative to the prior 10 trading days' average.
We render volume as a 5-tier badge — Light, Moderate, High, Heavy, Extreme — not as a raw multiple. The point is to communicate how unusual the day is in historical context, not to leak a live tape reading.
We do not display live exchange volume, live bid/ask, live quotes, or order-book depth. Those would require an exchange data license and a real-time redistribution agreement; that is not the product.
Multi-day swing setups vs same-session catch→peak observations
We surface two flavors of pattern, both backward-looking.
- Swing setups — multi-day patterns identified from daily-bar history. The catch is the close (or session-aware reference) of the identification day; the peak is the highest subsequent close within a defined T+1 to T+5 historical window.
- Same-session catch→peak observations — identified within a single session against the T-1 historical reference. The catch is the price when the gates cleared in the historical record; the peak is the highest subsequent observed price within that same session's historical window.
Both are historical. Both surface on the same dashboard, tagged with their session and their observation window. Subscribers decide what to do with the pattern.
What we don't do
- We do not redistribute real-time exchange data, intraday bars, or live quotes.
- We do not execute trades. We are not a broker.
- We do not manage portfolios, hold customer funds, or place orders on anyone's behalf.
- We do not provide personalized investment advice or position sizing.
- We do not guarantee returns. We never claim past performance predicts future results.
- We do not show charts, order-book depth, or raw price tapes.
- We do not use insider data, off-exchange flow, or anything that is not public.
- We do not predict tops. We observe historical patterns and publish the observation.
Why this approach
The value isn't the live tape — anyone with a terminal has that. It's the pattern work: which historical setups have repeatedly preceded measurable moves in US small-caps, how they score against our 20-gate algorithm, and how they behaved afterward.
It also keeps us focused: engineering goes into pattern quality, not low-latency plumbing — an informational layer that complements whatever broker or charting tool you already use.
Verify it yourself
Every signal we have ever published is on the public alert history. catch% and peak% are byte-identical across the in-app feed, email digests, social posts, and the landing page — the same historical (ticker, day, session) row drives all of them. If you find a mismatch, email adrian@bullalert.ai and we will fix it.
Educational and informational only
BullAlert is an educational and informational data tool. We are not a registered investment advisor, not a broker, and not a financial planner. Nothing on this page, in our alerts, on the watchlist, or on the public history is investment advice. Past performance does not guarantee future results. Always do your own due diligence. See our full disclaimer and privacy policy.