What you can ask
The closed 33-feature library behind Research: flow, book, open interest, positioning, liquidations, returns, volatility and candle formations, plus windows and sequences.
Queries are built from a closed, versioned feature library. No free-form formulas, no model-written fields: every id computes the same way for everyone, forever, under its pinned version. Today’s library covers 33 features:
| You ask about | Registry id | Example ask |
|---|---|---|
| Toxic flow (VPIN) | feature.vpin | ”vpin above 0.85 on majors” |
| VPIN regime flips | feature.vpin_regime | ”the vpin regime entered high or critical” |
| One-sided book | feature.book_imbalance | ”the book averaged half bid-sided for 15 minutes” |
| One-sided book, vs its own history | feature.book_imbalance_pctrank | ”book imbalance above its own 95th percentile” |
| Spread blowouts | feature.spread_norm | ”the spread blew out toward its cap” |
| Funding extremes, signed | feature.funding_rate | ”funding negative at settlement” |
| Funding extremes, normalized | feature.funding_norm | ”funding pinned at the extreme end of its range” |
| Open-interest velocity, vs its own history | feature.oi_velocity_pctrank | ”OI velocity above its own 95th percentile” |
| Liquidation bursts | feature.liq_intensity_norm | ”liquidation intensity above 0.5” |
| Clustered liquidations | feature.cascade_clustering_index | ”liquidations arriving in cascades rather than independently” |
| Liquidated notional, trailing hour | feature.liq_notional_usd_1h | ”at least $5 million liquidated in one hour” |
| Top-trader long account share | feature.top_trader_long_ratio | ”top traders at least 65% long” |
| Global long account share | feature.global_long_ratio | ”the crowd at least 60% long” |
| Top-trader vs crowd divergence | feature.top_global_long_skew | ”top traders 15 points more long than the crowd” |
| Short-horizon returns | feature.ret_15m | ”down 2% in 15 minutes” |
| Hour-scale returns | feature.ret_1h | ”down 5% on the hour” |
| Hour range | feature.range_pct_1h | ”a 3% high-to-low hour” |
| Realized volatility | feature.realized_vol_1h | ”1-minute vol elevated across the hour” |
| Volatility, vs its own history | feature.realized_vol_pctrank | ”vol above its own 90th percentile” |
| Distance from day VWAP | feature.vwap_dist | ”stretched 2% above the day’s VWAP” |
| One-sided tape | feature.taker_buy_ratio_15m | ”two-thirds of the tape hit the ask for 15 minutes” |
| Whale-sized prints | feature.large_trade_share_15m | ”whale prints carrying a third of volume” |
| Time to funding | feature.mins_to_funding | ”within 30 minutes of settlement” |
| Candle body, 15-minute | feature.candle_body_15m | ”a full-body 15-minute candle” |
| Candle body, hourly | feature.candle_body_1h | ”an hour that closed where it opened” |
| Upper wick | feature.candle_upper_wick_15m | ”a long upper wick” |
| Lower wick | feature.candle_lower_wick_15m | ”a hammer: two-thirds lower wick” |
| Range compression and expansion | feature.candle_compression_15m | ”the tightest candle in three hours” |
| Engulfing candles | feature.candle_engulfing_15m | ”a bullish engulfing candle” |
| Engulfing candles, hourly | feature.candle_engulfing_1h | ”an hourly bearish engulfing” |
| Sweep and reclaim | feature.candle_sweep_reclaim_15m | ”swept three-hour lows and closed back above them” |
| Sweep and reclaim, hourly | feature.candle_sweep_reclaim_1h | ”an hour that swept twelve-hour lows and reclaimed” |
| Inside and outside bars | feature.candle_containment_15m | ”an inside bar after a big move” |
Candle features read the last COMPLETED 15-minute or hourly candle as of each minute, never the one still forming, and boundary rules are strict: an equal low is not a sweep, an equal body edge is not an engulfing. When the record has no candle to reference (a market gap), the answer is absent, not improvised.
Two extensions multiply these:
- Windows: any numeric feature aggregated over the run-up to a moment (min, max, mean, last, delta; 5 minutes to 4 hours). “vpin rose at least 0.15 over 30 minutes.”
- Sequences: 2 to 4 conditions in strict order inside a bound. “A spread blowout, then a liquidation burst, within 30 minutes.” “A sweep of the lows that closed back above them, then a one-sided tape, within 30 minutes.”
An occurrence is counted when the whole condition becomes true after being false, so a state that persists for an hour counts once, not sixty times; repeat fires on the same market are consolidated and the consolidation is reported on the results line.
Plain words in, exact query out: everything you type becomes visible chips (exact fields, exact thresholds, exact window) before anything runs. Any value the interpreter guessed arrives marked INFERRED and blocks the run until you confirm or edit it. Nothing runs on prose.
What the result adds
The query selects setup-time occurrences only. The result then computes what followed every match and summarizes the full forward-outcome distribution before paging. Outcomes can be read, but never used as a predicate or sort key. For a where-only query, cohort comparison puts that matched distribution beside the distribution from every other eligible predicate-false bucket. It reports counts and caveats, not a win rate, lift claim or significance score.
Every occurrence includes a replay link. You can also read the whole feature registry as of one market minute, compare up to eight moments for their strict intersection, publish the result with its deterministic receipt, or arm the verified definition as a live alert in the browser.
Scope and speed
A query without a stated range scans the last 7 days across every recorded market by default, including crypto and TradFi perps tracking Nvidia, QQQ, gold, silver and crude oil. Widening is one phrase: say “last month” and the window chips update before anything runs, visible and editable like every other value. Typical scans return in seconds, and repeating a query serves the cached result without a rescan: same reproducibility key, same bytes.
Run the same contract in the browser, through the public API, or with your own AI agent over MCP.
FAQ
What is an “eligible symbol-bucket”? The record is evaluated on a fixed one-minute grid per market. A symbol-bucket is one market at one minute. It is eligible when every feature the query references was present and warm at that minute. Every count is reported against this denominator.
Occurrences describe only the recorded markets, dates and eligible buckets reported by the scan. They are observed examples, not a guarantee. Nothing here is trading advice.