Market data

Massive (formerly Polygon.io — same API host and key) is the primary market-data vendor. The backend code comments name the subscription the Advanced stocks plan; the stream is real-time, not delayed.

Massive (ex-Polygon)

Advanced plan · real-time
SourceWhatUsed byWrites to
Stocks WebSocket (single connection)Minute aggregates + trades for all tickers; quotes for a small capped watch set only. The LULD channel is no longer subscribed (removed 2026-09-14).Backend: volume/price catalyst detection, price-target tripwires, system healthin-memory bar + last-trade cache
Daily barsAfter the close an EOD job persists the session’s bars from the stream; a grouped-daily REST path backs acceptance and repair. Per-ticker aggregates serve history.Backend (EOD writer), pipeline (training/inference)daily_bars
Snapshots & referenceTicker snapshots, ticker reference/metadata, market status and holidaysBackend scanner and quote surfacesticker_data_cache
Ratios, float, income statementsValuation ratios and share float. Ratios come back empty for ADRs (foreign filers have no XBRL); Finnhub /stock/metric is the fallback for those names.Backend data collector, pipeline featuresticker_fundamentals
Short interest & short volumeFINRA bi-weekly short interest and daily short volumeBackend, pipeline model featuresticker_short_data, daily_short_volume
SplitsSplit events; prices are adjusted at query time rather than rewritten in placeBackend price and grading queriesstock_splits
DividendsCash dividends by ex-date, credited to Paper book positionsBackend paper ledgerbook_dividend_credits
Economy endpointsTreasury yields, inflation, inflation expectations, labor market. The pipeline has an optional FRED fallback that is skipped when no key is configured.Backend macro-environment snapshotmacro_snapshots

Fundamentals & estimates

Finnhub serves estimates and price targets as snapshots with no history, so the backend records each daily observation itself to build a point-in-time revision series going forward.

Finnhub

Plan unverified
SourceWhatUsed byWrites to
/stock/eps-estimate, /stock/price-targetEPS estimates and analyst price targets, swept daily; append-only, rows are never updated or deletedBackend daily estimates sweepanalyst_estimates_history
/stock/recommendationMonthly analyst recommendation counts (current snapshot plus point-in-time history)Backend consensus refresh; model featuresanalyst_consensus, analyst_consensus_history
/stock/upgrade-downgradeIndividual analyst rating changesBackend analyst-action collectionanalyst_action_events
/stock/insider-transactionsInsider buys and sells; also a pipeline gap-fill beside the Form 4 feedBackend backfill, pipeline sec_forwardinsider_transactions, sec_filings_form4
/calendar/earnings, /stock/earningsUpcoming earnings dates and past surprisesBackend data collector, pipelineearnings_calendar
/stock/metricValuation ratios for ADRs where Massive has none; also a pipeline fallbackBackend data collector, pipelineticker_fundamentals
/quote, /stock/peers, /stock/profile2Spot quote lookup, peer lists, industry classificationBackend market-data handler and backfills, pipeline—
/company-newsPer-ticker news gap-fill (see News)Pipeline news_forwardnews_articles

Filings & halts

SourceWhatUsed byWrites to
SEC filings via Massive8-K text and Form 4 insider transactions. The filings are SEC documents served pre-parsed by Massive’s filings API; the pipeline polls hourly for the active universe and labels new 8-Ks with DeepSeek.Pipeline sec_forward loop → filing featuressec_filings_8k, sec_filings_form4, ticker_features_daily
SEC EDGAR (direct)Fallback 8-K backfill straight from sec.gov, run on demand; not the routine pathPipeline backfill endpointsec_filings_8k
Massive 8-K disclosure labels PlannedVendor-labelled 8-K disclosures were chosen (2026-09-12) over building an in-house labeler. No code on main consumes the endpoint yet.——
Nasdaq Trader halts RSS LiveThe official trading-halt feed, polled about once a minute on market days. This is the halt source since 2026-09-14.Backend halt detector (halt / resume events)in-process events
Quote-based halt detection ShadowMassive quote indicators on a capped watch set, recorded for comparison against the Nasdaq feedBackend shadow watcherhalt_quote_detections

LULD messages are price-band publications for every stock, not halts. Reading them as halts (2026-05-25 to 2026-09-14) was a defect; that subscription is gone.

News

SourceWhatUsed byWrites to
Massive news LiveRoughly hourly sweep of symbol-tagged news for the active universePipeline news_forward loopnews_articles
Finnhub company news LiveGap-fill for universe tickers the Massive sweep did not surface; rows are source-taggedPipeline news_forward loopnews_articles
DeepSeek labelerLabels fresh articles regardless of source; every label is appended, then aggregated into article-level model featuresPipeline labeling + feature aggregationnews_article_labels, ticker_features_daily
Ticker news displayReads the store first; falls back to a live Massive call only when the store has nothing for a tickerBackend → iOS and webread-only
Brave Search DisabledDisabled 2026-06-01: free-text search attributed news to the wrong ticker. Dormant code only, no live caller.——
Reddit Not a sourceNo Reddit client remains in the pipeline source; only legacy data-model definitions survive——

Crypto

Crypto is data-only. The LLM crypto verdict loop was removed in 2026-08; no crypto verdicts are produced. The one crypto Paper book (42, btc_trend, rules-based, no model) is active.

SourceWhatUsed byWrites to
Massive crypto snapshotsPrices and day bars for a fixed 30-token universe, refreshed every 10 minutesBackend market-refresh loop → crypto feedcrypto_analysis (market-data columns)
CoinGecko, OKX, Hyperliquid, DefiLlama, Fear & GreedOptional enrichment: market cap and supply, funding rate, open interest, TVL and stablecoin supply, sentiment index. A miss logs a warning and the sweep continues.Same loopcrypto_analysis
Coinbase holdingsSnapTrade’s Coinbase connection is primary; a direct Coinbase CDP read is the fallback during bridge outages. No Coinbase order code exists.Backend portfolio syncuser_portfolio_positions

Brokerage & auth

SourceWhatUsed byWrites to
SnapTrade — portfolio sync LiveBrokerage connection and periodic holdings sync; accounts are tagged by asset classBackend → portfolio surfacesuser_brokerage_connections, user_portfolio_positions
SnapTrade — user ordersA user-initiated order path (market / limit) exists for trade-enabled connections and can be restricted to an allowlistBackend order endpointsuser’s own brokerage account
SnapTrade — Auto-Pilot live routing Gated offThe code path exists behind two separate switches and is off by default. Auto-Pilot places no live orders; every Auto-Pilot book is a Paper book.——
Firebase AuthThe backend verifies Firebase JWTs; auth-required routes fail closed when auth is not configured. The web client wires Google, Apple and email/password sign-in.Backend middleware, web, iOS—

Models

Verdicts are pure quant: no LLM sits in the verdict path (the per-decision reviewer was removed 2026-06-14). LLMs label, narrate and flag.

SourceWhatUsed byWrites to
LightGBM ensemble (in-house)Two production cohorts: tradeable_v2 (market cap ≥ $300M) and tradeable_mid_large (market cap ≥ $2B plus an average-volume floor). Horizons served: 1d / 5d / 20d / 60d. Only cohorts whose universe contains a ticker contribute to its prediction.Pipeline serves; backend requests predictions and ranksaction_decisions
Feature substratePer-(ticker, date) feature cache built by the backend from the sources above; the pipeline adds news and filing aggregates and reads it for training and inferenceBackend writes, pipeline readsticker_features_daily
DeepSeek (direct API)Two backend tiers addressed by alias: worker (deepseek-v4-flash) and analyzer (deepseek-v4-pro); pipeline labelers send deepseek-chat. Roles: labeler, narrator, risk flagger.Backend, pipelinellm_calls, news_article_labels
Anthropic No callerNo production path has called Opus since 2026-09-14. The provider client and a legacy alias remain in code.——
OpenAI Fallback onlyNo declared role targets a GPT model; the last one (a macro-news classifier) was removed 2026-09-12. The client remains as the router’s fallback when the DeepSeek key is absent.——

Model names are vendor aliases. DeepSeek retired V4-Flash on 2026-09-10 and temporarily routes the legacy name to a successor model, so the name sent is not proof of the model that answered.

Costs

Only line items that a source in the repositories names are listed. No amount is printed without a verifiable source, and there is no total.

Line itemPlan, as named in sourceAmount
Massive stocks dataAdvanced plan, real-timeunverified
Finnhubunverifiedunverified
DeepSeek APIusage-basedunverified
SnapTradepaid per connected userunverified
Anthropic, Brave Searchno production caller—

Verified against vibebullish-docs@0a4edb1, vibebullish-backend@07c641de, vibebullish-data-pipeline@ee230ea, vibebullish-web@ce8ec92 on 2026-09-29. Runtime observations are dated inline; a source sha does not vouch for deployed configuration or database contents.