US Equities Buy/Sell Pressure and Retail Indicators Minute Bar
One row per ticker per trading minute with volume and trade-count splits, spread statistics and probabilistic estimates of retail buy/sell activity (sub-penny TRF prints and odd-lot trades), plus derived pressure, ratio, net-flow, imbalance and sentiment indicators (37 columns).
How to use it
Times are local US Eastern clock times (DST-aware), not UTC. Treat TRADE NB / NBBO-flagged rows as the backtest-grade subset. Cancellations reference earlier trades and can arrive hours later, so aggregate only after the session closes. Prices are unadjusted unless the dataset name says Adjusted; join us-equities-*-adjustment-factors on SecId for adjustment.
Typical use
Backtesting, execution and microstructure research, feature engineering for US equities.
Limitations
Delivered as recorded from the source feed: AlgoSeek does not remove crossed or locked quotes, bad prints, or out-of-sequence packets unless contracted to. Consumers own cleaning. Bars are half-open [TimeBarStart, next bar start): OpenBarTime equals the bar start (.000000000) and CloseBarTime is the last nanosecond of the bar (.999999999). The guide's wording ('greater than start') is looser than this. 'Blank' means an empty CSV field (no NULL token). Trade-derived price/time/size fields are blank when the bar has no qualifying trade; share-volume counters are 0 per the guide (see discrepancies for sample deviations). Primary key (Date, Ticker, TimeBarStart) is inferred from the one-file-per-symbol-per-day layout; the files carry no security identifier, so symbol changes/re-use across days are not resolved by this dataset. Continuous minute bars: a row for every minute from 04:00 ET until the last exchange closes; the guide's carry-forward and quote price-filter rules apply to the underlying NBBO but the file exposes only MinSpread/MaxSpread and RelativeSpreadAverage.
Coverage
All listed stocks, ETNs, ETFs, ADRs and funds from 15+ US exchanges and marketplaces via the consolidated SIP (CTA Tape A/B, UTP Tape C); the product page says the full universe of exchange-listed equities (common stocks, ETFs, ETNs, ADRs, funds). Includes FINRA/TRF-reported trades (venue names in 'venues' are only the guide's examples). Page: full historical archive plus daily updates; history start not stated. Guide release 1.0.0 effective 4 Feb 2025.
Venues (5)
- NASDAQ
- BATS
- NYSE
- ARCA
- FINRA TRF
Answers to common questions
- What time zone are the timestamps in?
- US Eastern local time with daylight saving (the guides label it EST/ET).
- Are prices adjusted for splits and dividends?
- Only in datasets whose name contains Adjusted; all others are as traded.
Usage constraints
- Licensed vendor data: never export raw rows to a tenant-local destination or include them verbatim in a public artifact; serve only through entitlement-checked platform reads.
- Do not treat the vendor's `Ticker` as a stable identity across time; join on an AlgoSeek security key (SecId or ASID, which are distinct) or the platform symbol mapping.
Known issues (11)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyPage and catalog describe a 'Minute Bar' of indicators without a column count; the guide's field table (Table 2), the guide sample and the CSV header all give 37 columns (the counts agree). Table 1 in this guide is a sample-data table and Table 2 the schema.
- Documentation discrepancyTimeBarStart: sample and Table 2 agree on HH:MM. The FAQ cites HHMMSSmmm / HHMMSSmmmiiinnn, which matches neither; Table 2 is treated as authoritative.
- Documentation discrepancyBar Notes describe a minute bar as 'greater than 11:04 to less than 11:05', but OpenBarTime is exactly HH:MM:00.000000000; bars are treated as half-open [start, next start).
- Documentation discrepancyThe ExchangeVolume description says 'TotalVolume = Volume + FinraVolume', but there is no Volume column in this file (ExchangeVolume replaces it); sample rows satisfy ExchangeVolume + FinraVolume = TotalVolume.
- Documentation discrepancySentiment horizon: the field table describes the Sentiment indicators as pressure 'cycles' with '1-week cycles' as the example, while the Additional Indicators section defines them over 1-hour cycles as MovingAverage(relative net flow); the window and averaging method are not specified.
- Documentation discrepancyOddLotTradeCount and OddLotTotalShares are described as odd lots 'from public exchanges only' (Trade-X), but OddLotTradeCount exceeds ExchangeTradeCount in all 100 sampled bars (e.g. 6754 vs 1844), so they evidently include TRF-reported odd lots.
- Documentation discrepancyTRFRetailPress (and the other metrics) are 'Blank' when not calculable per Table 2, but TRFRetailPress is 0 (not blank) in sampled bars where RetailTRFBuySize and RetailTRFSellSize are both blank, and OddLotTRFRetailRatio is 1 there.
- Documentation discrepancyTRFRetailBuySellRatio is blank in 5 sampled bars where RetailTRFBuySize is blank and RetailTRFSellSize is positive, although RelNetTRFRetailFlow is -1 and TRFRetImbalance 0 in the same bars; the guide does not define a rule for a zero numerator.
- Documentation discrepancyTRFRetSentiment is non-blank (e.g. 1) in sampled bars whose own TRF retail sizes are both blank and blank only in the first bar, so it is carried from earlier bars; the guide does not describe this.
- Documentation discrepancyBar Notes cite VolumeWeightSpread and SpreadValidTime (apparent leftovers from the Extended guide), which are not columns of this dataset.
37 columns in delivery order · file or table name eq_ret_indic_1min. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| Date | dateyyyymmdd | Key 1 · Required | Trading date of the bar (yyyymmdd); also the trading day of the file the row came from. Missing values: Never · Source: vendor guide and sample |
| Ticker | string | Key 2 · Required | Symbol name of the security. The guide documents no other identifier or symbology for these files. Missing values: Never · Source: vendor guide and sample |
| TimeBarStart | timeHH:MM | Key 3 · Required | Bar start time in ET; HH:MM for a minute bar (Table 1). Missing values: Never · Source: vendor guide and sample |
| OpenBarTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the bar open, i.e. the bar start (e.g. 11:03:00.000000000 for a minute bar). Missing values: Never · Source: vendor guide and sample | |
| MinSpread | number | Required | Smallest NBBO bid-ask spread in the bar; a crossed market or negative back-quote spread is floored to 0. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| MaxSpread | number | Required | Largest NBBO bid-ask spread seen in the bar. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| ExchangeVolume | integeri64 | Shares traded on public exchanges only, excluding FINRA/TRF-reported trades. 0 when none. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| FinraVolume | integeri64 | Shares in FINRA/TRF-reported trades (dark pools, broker-dealer internalization, OTC); 0 when none. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TotalVolume | integeri64 | Total shares traded in the bar across public exchanges and FINRA/TRF (Volume + FinraVolume). Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| TotalTrades | integeri64 | Total number of trades in the bar (exchange plus FINRA/TRF where the dataset carries both). Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| TotalQuoteCount | integeri64 | Total count of top-of-book bid and ask updates from public exchanges during the bar. Unit: count · Missing values: Blank · Source: vendor guide and sample | |
| ExchangeTradeCount | integeri64 | Number of trades on public exchanges in the bar. Unit: count · Missing values: Blank · Source: vendor guide and sample | |
| FinraTradeCount | integeri64 | Number of FINRA/TRF-reported trades in the bar. Unit: count · Missing values: Blank · Source: vendor guide and sample | |
| OddLotTradeCount | integeri64 | Number of odd-lot (under 100 shares) trades during the bar. Unit: count · Missing values: Blank · Source: vendor guide and sample | |
| OddLotTotalShares | integeri64 | Total shares traded in odd-lot trades during the bar. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| RelativeSpreadAverage | number | Mean over the bar's trades of max(ask - bid, 0) / midpoint, using the last NBBO before each trade (unitless fraction). Missing values: Blank · Source: vendor guide and sample | |
| TradeCumulDistributionToBid | string10 colon-separated cumulative integers (thresholds 0:0.05:0.1:0.2:0.4:0.6:0.8:0.9:0.95:1) | Ten colon-separated cumulative share totals by trade position from bid (0) to ask (1) at thresholds 0, .05, .1, .2, .4, .6, .8, .9, .95, 1. Missing values: Blank · Source: vendor guide and sample | |
| RetailTRFBuySize | integeri64 | Estimated retail buy shares: TRF trades priced just below a round penny (sub-penny fraction in (0.6, 1)); blank when none. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| RetailTRFSellSize | integeri64 | Estimated retail sell shares: TRF trades priced just above a round penny (sub-penny fraction in (0, 0.4)); blank when none. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| RetailOddLotBuySize | integeri64 | Estimated retail buy shares from odd-lot exchange trades priced above the NBBO midpoint. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| RetailOddLotSellSize | integeri64 | Estimated retail sell shares from odd-lot exchange trades priced below the NBBO midpoint. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| TRFRetailPress | number | TRF retail pressure: (RetailTRFBuySize + RetailTRFSellSize) / TotalVolume. Missing values: Blank · Source: vendor guide and sample | |
| OddLotPress | number | Odd-lot pressure: (RetailOddLotBuySize + RetailOddLotSellSize) / TotalVolume. Missing values: Blank · Source: vendor guide and sample | |
| TRFRetailOddLotPress | number | Combined pressure: (TRF retail buy+sell + odd-lot retail buy+sell) / TotalVolume. Missing values: Blank · Source: vendor guide and sample | |
| OddLotTRFRetailRatio | number | Odd-lot retail size divided by (TRF retail size + odd-lot retail size), buys plus sells. Missing values: Blank · Source: vendor guide and sample | |
| TRFRetailBuySellRatio | number | RetailTRFBuySize / RetailTRFSellSize. Missing values: Blank · Source: vendor guide and sample | |
| OddLotBuySellRatio | number | RetailOddLotBuySize / RetailOddLotSellSize. Missing values: Blank · Source: vendor guide and sample | |
| TRFRetailOddLotBuySellRatio | number | (RetailTRFBuySize + RetailOddLotBuySize) / (RetailTRFSellSize + RetailOddLotSellSize). Missing values: Blank · Source: vendor guide and sample | |
| RelNetTRFRetailFlow | number | (TRF retail buy - sell) / (buy + sell); positive means retail buying pressure, range -1 to 1. Missing values: Blank · Source: vendor guide and sample | |
| RelNetOddLotFlow | number | (odd-lot retail buy - sell) / (buy + sell); positive means buying pressure, range -1 to 1. Missing values: Blank · Source: vendor guide and sample | |
| RelNetTRFRetailOddLotFlow | number | Combined TRF-retail plus odd-lot net flow: (buys - sells) / (buys + sells); range -1 to 1. Missing values: Blank · Source: vendor guide and sample | |
| TRFRetImbalance | number | TRF retail buy share = RetailTRFBuySize / (RetailTRFBuySize + RetailTRFSellSize); near 1 buy-dominant, near 0 sell-dominant. Missing values: Blank · Source: vendor guide and sample | |
| OddLotImbalance | number | Odd-lot retail buy share = RetailOddLotBuySize / (buy + sell); near 1 buy-dominant, near 0 sell-dominant. Missing values: Blank · Source: vendor guide and sample | |
| TRFRetOddLotImbalance | number | Combined TRF-retail plus odd-lot buy share of total retail size; near 1 buy-dominant, near 0 sell-dominant. Missing values: Blank · Source: vendor guide and sample | |
| TRFRetSentiment | number | Moving average of RelNetTRFRetailFlow (a rolling sentiment gauge; window length is described inconsistently in the guide). Missing values: Blank · Source: vendor guide and sample | |
| OddLotSentiment | number | Moving average of RelNetOddLotFlow (a rolling sentiment gauge; window length is described inconsistently in the guide). Missing values: Blank · Source: vendor guide and sample | |
| TRFRetOddLotSentiment | number | Moving average of RelNetTRFRetailOddLotFlow (a rolling sentiment gauge; window length is described inconsistently in the guide). Missing values: Blank · Source: vendor guide and sample |
- errorrow_count_positivecompleteness
Every delivered partition (trade date, or snapshot) carries at least one row.
rowCount must be greater than 0
- errorprimary_key_uniqueuniqueness
The declared primary key is unique within each delivered partition (one file or table snapshot).
duplicateValues (properties: Date, Ticker, TimeBarStart) must be 0
- errorExchangeTradeCount_non_negativeaccuracy
ExchangeTradeCount is never negative.
SELECT COUNT(*) FROM {object} WHERE ExchangeTradeCount < 0 - errorExchangeVolume_non_negativeaccuracy
ExchangeVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE ExchangeVolume < 0 - errorFinraTradeCount_non_negativeaccuracy
FinraTradeCount is never negative.
SELECT COUNT(*) FROM {object} WHERE FinraTradeCount < 0 - errorFinraVolume_non_negativeaccuracy
FinraVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE FinraVolume < 0 - errorOddLotTradeCount_non_negativeaccuracy
OddLotTradeCount is never negative.
SELECT COUNT(*) FROM {object} WHERE OddLotTradeCount < 0 - errorRetailOddLotBuySize_non_negativeaccuracy
RetailOddLotBuySize is never negative.
SELECT COUNT(*) FROM {object} WHERE RetailOddLotBuySize < 0 - errorRetailOddLotSellSize_non_negativeaccuracy
RetailOddLotSellSize is never negative.
SELECT COUNT(*) FROM {object} WHERE RetailOddLotSellSize < 0 - errorRetailTRFBuySize_non_negativeaccuracy
RetailTRFBuySize is never negative.
SELECT COUNT(*) FROM {object} WHERE RetailTRFBuySize < 0 - errorRetailTRFSellSize_non_negativeaccuracy
RetailTRFSellSize is never negative.
SELECT COUNT(*) FROM {object} WHERE RetailTRFSellSize < 0 - errorTotalQuoteCount_non_negativeaccuracy
TotalQuoteCount is never negative.
SELECT COUNT(*) FROM {object} WHERE TotalQuoteCount < 0 - errorTotalTrades_non_negativeaccuracy
TotalTrades is never negative.
SELECT COUNT(*) FROM {object} WHERE TotalTrades < 0 - errorTotalVolume_non_negativeaccuracy
TotalVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE TotalVolume < 0
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Plain-text CSV with a fixed header row and one data row per bar. By default one file per symbol per trading day (e.g. all AAPL bars for 3 Mar 2020 in one file). Files are gzip-compressed (.csv.gz, roughly 8:1). The guide gives no bucket or path naming pattern.
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
REST API
AlgoSeek Datasets REST API (X-API-KEY header; JSON, CSV or gzipped CSV). Returns AlgoSeek's normalized API layout, which differs from the flat-file columns in this contract's schema.
https://api.algoseek.com/v1/data/us-equity/ret-indic-1min/:identifier
- Authentication:
- X-API-KEY header issued by AlgoSeek
- Response formats:
- json, csv, csv_gzip
- Pagination:
- offset + limit; tick endpoints take trade_date and identifier (Ticker or ASID) in the path
Service levels
- Update frequency
- Daily
- Retention
- Bounded by the license term
- Retention of landed copies is bounded by the AlgoSeek license; purge on termination.
- History starts
- Not stated in the vendor documentation
Service levels describe the vendor feed as documented. They are draft values, not a commitment by AlphaSwarm.
Data Contract Editor · read-only preview — edits are not saved
Open-source Data Contract Editor (MIT). Changes stay in this browser tab: Cancel restores the published contract, and Download copy saves your edited YAML to your device only.
Contracts follow the Open Data Contract Standard (Bitol, LF AI & Data).
Vendor names are trademarks of their owners.