Research is a work in progress. Estimated release: 1 December 2026. Our goal is to make it a search engine for trading setups in recorded crypto markets.

Understanding research markers

Understand a marker, inspect its readings, and test comparable moments.

Markers show conditions at detection time, not recommendations or probabilities. “Why this marker?” shows readings and the exact query. “Find comparable moments” opens an editable study.

What does the rulebook version mean?

A rulebook is a versioned set of explicit conditions, not an AI model. Version 4 added market-relative flow, liquidity and positioning markers. Version 4.1 added activity and dollar gates to liquidation clustering. Version 5 adds directional turnover expansion and reported liquidations alongside rising or falling contract OI. These new thresholds are descriptive starting policies, not validated trading signals.

A range break can be useful before liquidation reports become large. Event annotations now separate range recovery, the break, expanding participation and later failure or retracement. The eventual extreme selects the archived sequence retrospectively; each observation also states when its closed-minute reading became available. Live watchlist prompts use the same sequence definition with exchange candles. Native archive counts can differ from exchange counts, so their confirmation minute can differ.

What is a sweep and reclaim?

If the preceding three-hour low was $100, a completed 15-minute candle that trades to $99 and closes at $101 has swept the low and reclaimed it. The opposite pattern sweeps the high and closes below it. Version 3 also requires the candle body to be at least 40% of its range in the reclaim direction. The marker becomes knowable at the candle close.

Inspect real examples

These examples were regenerated from August 2026 BTC and T market data with rulebook v3. Expand one to inspect the evidence. Replay access depends on your plan and available tick history.

4 of 4 moments · 4 episodes

  1. 00:30:00TUSDT · Swept highs and rejected

    Research detection2026-08-21 00:30 UTC

    Why this marker?

    A completed 15-minute candle swept a prior three-hour extreme and closed back through it.

    A candle pattern does not establish stop hunting or predict a reversal. Older rulebooks did not require the body filter.

    Detected
    2026-08-21 00:30 UTC
    Rule
    km.sweep_reclaim
    Version
    key_moments.rulebook.v3
    Data revision
    10f8357e21342fef5e66ab6e86b1a2b5ab32b2df3e791f55f64e1920fdbdb065
    Query hash
    b0ecc5f8fd7e4cb6354f4216284e8ab27f3d58582b805328d6c40d4e8e10dbe7
    Display severity
    0.44 (not a probability)
    • feature.candle_sweep_reclaim_15m: observed "bearish"; condition eq "bearish" · 2026-08-21T00:30:00.000Z · setup_point_in_time
    • feature.candle_body_15m: observed -0.440000000000009; condition between {"lte":-0.4} · 2026-08-21T00:30:00.000Z · setup_point_in_time
    Exact query definition
    {
      "feature_version": "feature_defs.v1",
      "normalization_version": "archive_normalization.v1",
      "page": {
        "cursor": null,
        "limit": 50
      },
      "schema_version": "research_query.v2",
      "sort": [
        "times.anchor_time",
        "asc"
      ],
      "target": "record_occurrences",
      "where": {
        "all": [
          [
            "feature.candle_body_15m",
            "lte",
            -0.4
          ],
          [
            "feature.candle_sweep_reclaim_15m",
            "eq",
            "bearish"
          ],
          [
            "identity.symbol",
            "in",
            [
              "btcusdt",
              "tusdt"
            ]
          ],
          [
            "times.anchor_time",
            "between",
            [
              "2026-08-21T00:00:00.000Z",
              "2026-09-03T23:59:00.000Z"
            ]
          ]
        ]
      }
    }

    Read the definition · Find comparable moments

  2. 13:00:00BTCUSDT · Price ranges compressed

    Research detection2026-08-22 13:00 UTC

    Why this marker?

    Both the completed one-hour and four-hour candles have unusually narrow ranges relative to their recent candles.

    Compression does not predict the direction or timing of a subsequent move.

    Detected
    2026-08-22 13:00 UTC
    Rule
    km.range_compression
    Version
    key_moments.rulebook.v3
    Data revision
    10f8357e21342fef5e66ab6e86b1a2b5ab32b2df3e791f55f64e1920fdbdb065
    Query hash
    b8dbae4e11c737771aa83f38ed4d6411d96352618100ae04886607d1d9e686ba
    Display severity
    0.56 (not a probability)
    • feature.candle_compression_1h: observed 0.4395599173062788; condition between {"lte":0.5} · 2026-08-22T13:00:00.000Z · setup_point_in_time
    • feature.candle_compression_4h: observed 0.48107009376434606; condition between {"lte":0.5} · 2026-08-22T13:00:00.000Z · setup_point_in_time
    Exact query definition
    {
      "feature_version": "feature_defs.v1",
      "normalization_version": "archive_normalization.v1",
      "page": {
        "cursor": null,
        "limit": 50
      },
      "schema_version": "research_query.v2",
      "sort": [
        "times.anchor_time",
        "asc"
      ],
      "target": "record_occurrences",
      "where": {
        "all": [
          [
            "feature.candle_compression_1h",
            "lte",
            0.5
          ],
          [
            "feature.candle_compression_4h",
            "lte",
            0.5
          ],
          [
            "identity.symbol",
            "in",
            [
              "btcusdt",
              "tusdt"
            ]
          ],
          [
            "times.anchor_time",
            "between",
            [
              "2026-08-21T00:00:00.000Z",
              "2026-09-03T23:59:00.000Z"
            ]
          ]
        ]
      }
    }

    Read the definition · Find comparable moments

  3. 19:12:00TUSDT · Sustained aggressive selling

    Research detection2026-08-22 19:12 UTC

    Why this marker?

    Aggressive buying or selling dominates the trailing hour and agrees with the four-hour flow.

    Executed aggressor flow is not trader intent, resting liquidity or a price forecast.

    Detected
    2026-08-22 19:12 UTC
    Rule
    km.directional_flow
    Version
    key_moments.rulebook.v3
    Data revision
    10f8357e21342fef5e66ab6e86b1a2b5ab32b2df3e791f55f64e1920fdbdb065
    Query hash
    2aad5627543f132abd2a97e374a94b9dafedf8af43bd5c3f11ca2cfab0c0d882
    Display severity
    0.30 (not a probability)
    • feature.taker_net_ratio_1h: observed -0.30045887653946174; condition between {"lte":-0.3} · 2026-08-22T19:12:00.000Z · setup_point_in_time
    • feature.taker_net_ratio_4h: observed -0.21196599368139768; condition between {"lte":-0.2} · 2026-08-22T19:12:00.000Z · setup_point_in_time
    Exact query definition
    {
      "feature_version": "feature_defs.v1",
      "normalization_version": "archive_normalization.v1",
      "page": {
        "cursor": null,
        "limit": 50
      },
      "schema_version": "research_query.v2",
      "sort": [
        "times.anchor_time",
        "asc"
      ],
      "target": "record_occurrences",
      "where": {
        "all": [
          [
            "feature.taker_net_ratio_1h",
            "lte",
            -0.3
          ],
          [
            "feature.taker_net_ratio_4h",
            "lte",
            -0.2
          ],
          [
            "identity.symbol",
            "in",
            [
              "btcusdt",
              "tusdt"
            ]
          ],
          [
            "times.anchor_time",
            "between",
            [
              "2026-08-21T00:00:00.000Z",
              "2026-09-03T23:59:00.000Z"
            ]
          ]
        ]
      }
    }

    Read the definition · Find comparable moments

  4. 13:00:00BTCUSDT · Descending resistance broken

    Research detection2026-08-24 13:00 UTC

    Why this marker?

    The resistance detector recorded a new break of a long or short descending line.

    A line disappearing or missing data is not a break. The short family has a 10-day span floor; the calibrated family uses its own longer geometry.

    Detected
    2026-08-24 13:00 UTC
    Rule
    km.resistance_break
    Version
    key_moments.rulebook.v3
    Data revision
    10f8357e21342fef5e66ab6e86b1a2b5ab32b2df3e791f55f64e1920fdbdb065
    Query hash
    8089ecce7e1a47b4f286882071e9dfcc8c9ea9df2ffff9fa340968296ba2148a
    Display severity
    0.50 (not a probability)
    • feature.desc_resistance_short_hours_since_break: observed 0; condition between {"lte":0} · 2026-08-24T13:00:00.000Z · setup_point_in_time
    Exact query definition
    {
      "feature_version": "feature_defs.v1",
      "normalization_version": "archive_normalization.v1",
      "page": {
        "cursor": null,
        "limit": 50
      },
      "schema_version": "research_query.v2",
      "sort": [
        "times.anchor_time",
        "asc"
      ],
      "target": "record_occurrences",
      "where": {
        "all": [
          [
            "feature.desc_resistance_short_hours_since_break",
            "lte",
            0
          ],
          [
            "identity.symbol",
            "in",
            [
              "btcusdt",
              "tusdt"
            ]
          ],
          [
            "times.anchor_time",
            "between",
            [
              "2026-08-21T00:00:00.000Z",
              "2026-09-03T23:59:00.000Z"
            ]
          ]
        ]
      }
    }

    Read the definition · Find comparable moments

Research detections use the historical readings that were available at that minute.

Understanding research markers

Explore the marker families

Price move with expanding turnover

Price moved while the trailing hour traded at an elevated rate.

Condition: v5: 15-minute return at least +3% or at most -3%, and hourly turnover at least 3 times the mean of the six preceding hours.

Limit: This hourly turnover estimate uses base volume times close. It differs from the five-minute measured-volume range-break prompt and does not establish a range break or future direction.

km.activity_expansion

Liquidations with rising contract OI

Directional price movement and reported liquidations occurred alongside net contract creation.

Condition: v5: price +5% in 15 minutes with at least $50,000 reported short liquidations in the trailing hour, or price -5% with the same long-liquidation floor. Contract OI rose at least 3% over the hour.

Limit: These windows differ. New contracts cannot be assigned to aggressive longs or shorts, and this does not show that liquidations caused the entire move. Missing OI refuses this marker.

km.liquidations_oi_build

Liquidations with falling contract OI

Directional price movement and reported liquidations occurred alongside a net reduction in open contracts.

Condition: v5: the same directional price and side-specific liquidation conditions as the build marker, with contract OI falling at least 3% over the hour.

Limit: An unwind is observed, not a forecast. Liquidation reports are incomplete and voluntary closures also change OI.

km.liquidations_oi_unwind

Swept a level and reclaimed

A completed 15-minute candle swept a prior three-hour extreme and closed back through it.

Condition: In v3, a low sweep also requires signed body/range >= 0.4; a high sweep requires <= -0.4. The previous 12 completed candles define the level.

Limit: A candle pattern does not establish stop hunting or predict a reversal. Older rulebooks did not require the body filter.

km.sweep_reclaim

Descending resistance broken

The resistance detector recorded a new break of a long or short descending line.

Condition: Hours since the recorded break equals zero in either resistance family. Opposite family detections within one hour consolidate.

Limit: A line disappearing or missing data is not a break. The short family has a 10-day span floor; the calibrated family uses its own longer geometry.

km.resistance_break

Price ranges compressed

Both the completed one-hour and four-hour candles have unusually narrow ranges relative to their recent candles.

Condition: Both range/baseline ratios <= 0.5. Each baseline is the mean range of the preceding 12 candles at that timeframe.

Limit: Compression does not predict the direction or timing of a subsequent move.

km.range_compression

Sustained directional taker flow

Aggressive buying or selling dominates the trailing hour and agrees with the four-hour flow.

Condition: Signed net taker ratio >= 0.3 over 1h and >= 0.2 over 4h, or <= -0.3 and <= -0.2. This corresponds to at least 65% and 60% buying, or selling.

Limit: Executed aggressor flow is not trader intent, resting liquidity or a price forecast.

km.directional_flow

Order-flow imbalance rose sharply

VPIN is high and has risen substantially over the last 30 minutes.

Condition: VPIN >= 0.65 and its 30-minute delta >= 0.15.

Limit: VPIN measures volume imbalance; it does not identify informed traders or a price direction.

km.vpin_spike

VPIN entered a high regime

The recorded VPIN regime entered the high or critical set.

Condition: VPIN regime enters {high, critical}. A high-to-critical move stays inside that set and does not create another edge.

Limit: A model classification is a description of flow state, not certainty about future returns.

km.regime_flip

Observed liquidation burst

The observed liquidation rate crossed five times its adaptive baseline.

Condition: Normalized liquidation intensity >= 0.5, where 1 represents ten times baseline and is capped. v5 also requires at least $10,000 reported in the trailing hour.

Limit: Published liquidation observations are not a complete liquidation census. Historical source and side semantics vary; this marker makes no directional claim.

km.liq_burst

Sustained one-sided book

The book imbalance averaged at least half one-sided over 15 minutes.

Condition: 15-minute mean book imbalance >= 0.5 or <= -0.5.

Limit: Displayed liquidity can be cancelled. Book features are unavailable in some historical periods.

km.imbalance_flip

Liquidations became clustered

Liquidation arrivals met the clustering and activity thresholds recorded in this marker.

Condition: v4.1 and v5 require clustering index >= 0.7, a 15-second reported liquidation rate at least 3 times this market's adaptive baseline, and at least $10,000 reported in the trailing hour. Earlier rulebooks lacked the activity gates; each saved marker carries its own definition.

Limit: The dollar gate covers the trailing hour, not this individual cluster or the visible chart slice. Small new clusters can still follow a material earlier burst. Reports are incomplete; the clustering index is not a branching ratio or a cascade forecast.

km.clustering_ramp

Unusually imbalanced flow

The standardized VPIN rarity reading crossed 0.99 relative to this market’s recent history.

Condition: VPIN percentile rank against the symbol's own recent history >= 0.99. This is a normal-CDF transform of a rolling z-score, not an empirical count of the top one percent of observations.

Limit: VPIN measures volume imbalance. A reading unusual for this market is not a claim that anyone was informed, nor a price direction.

km.toxic_flow

Unusually illiquid for this market

Price is moving far more per dollar traded than this market usually needs.

Condition: Amihud illiquidity percentile rank against the symbol's own recent history >= 0.99. The underlying level differs by orders of magnitude between markets, so only the rank is used.

Limit: Thin conditions describe the cost of trading at that minute. They do not say which way price goes next.

km.illiquidity

The hour moved in a jump

Most of the hour's variance came from one dislocation rather than continuous movement.

Condition: Jump share of realized variance >= 0.6. The share is bounded between 0 and 1 by construction, so one threshold is comparable across markets.

Limit: Attributing variance to jumps is a decomposition of what already happened, not a forecast, and a quiet hour with one tick can read high.

km.jump_hour

Aggression persisted, or alternated

Signed taker flow this hour is strongly correlated minute to minute, in either direction.

Condition: Lag-one autocorrelation of signed minute flow >= 0.6 or <= -0.6. Positive reads as one sustained aggressor, negative as alternating churn. Both are one moment and share a dedupe window.

Limit: This describes the structure of executed aggression over time, not who was trading or what they intended.

km.flow_persistence

Positions opened, or closed out

A large signed share of the hour's volume became new open interest, or unwound it.

Condition: Signed share of traded volume that became open interest >= 0.25 or <= -0.25, bounded because a trade of size Q moves open interest by at most Q. Building and unwinding are one moment.

Limit: Open interest changing says risk was added or removed, not by whom or with what conviction. This family fires more often on vendor-reconstructed days than on natively captured ones.

km.oi_conversion

Depth pulled while the tape was stressed

A large share of resting depth on one side vanished in a single book update, during a minute whose liquidation rate is extreme for this market.

Condition: Sharpest one-minute withdrawal within 100 basis points of mid >= 0.5 on either side, AND liquidation rate percentile rank >= 0.99. v5 also requires at least $10,000 reported liquidations in the trailing hour; relative stress alone can otherwise describe a trivial amount.

Limit: Resting orders can be cancelled for many reasons and a withdrawal is not evidence of intent. Binance USDT-M only, and only on days the order book was recorded soundly: elsewhere the inputs are absent and this marker cannot appear, which is not the same as nothing happening.

km.depth_pull_in_stress

Big trade, unusual for this coin

In the last 15 minutes, single trades at or above this coin's size class ($25,000 for a small cap, up to $200,000 for BTC) made up more of the volume than at 98% of this coin's moments over the previous 14 days.

Condition: large_trade_share_pctrank_14d >= 0.98: the big-trade share ranked against this coin's own trailing 14 days. v6.

Limit: It says a move may be coming, not which way: 53% of the moves that followed went up first. Binance perps, 26 Jul to 18 Sep 2026, largest coins and TradFi out: after 33,000 such moments, 4,388 (13.3%) saw a 5% move either way within the hour, about 2.8 times as often as moments on the same coin that were equally volatile, busy and already moving as much. About seven in eight saw no 5% move. Seen data, not a payoff, and a forward check on new data has not reported yet. Absent for 14 days after a listing; on the largest coins it appears about three times a day.

km.big_print

Depth pulled, unusual for this coin

One book update withdrew more of the resting orders within 1% of the price, on one side, than at 99.9% of this coin's moments over the previous 14 days.

Condition: depth_ask_pull_pctrank_14d >= 0.999 or depth_bid_pull_pctrank_14d >= 0.999: each side's sharpest pull ranked against this coin's own trailing 14 days. Both sides share one hour window. v6.

Limit: Size, not direction: half of the moves that followed went up first, and bids vanishing came before rises about as often as falls. The reading cannot tell orders that were cancelled from orders filled by trades; both count as pulled. 26 Jul to 18 Sep 2026: after 19,758 such moments, 2,615 (13.2%) saw a 5% move within the hour, about 1.5 times as often as matched moments (1.24 in the first half of that window, 1.73 in the second). Seen data, not a payoff, and a forward check on new data has not reported yet. Binance USDT-M only, and only on days the order book was recorded soundly.

km.depth_pull_relative

Historical markers and missing data

Markers can be regenerated over stored history with a new rulebook. Availability depends on feature history and warmup. Tick replay coverage and access are separate.

Conditions fire when they become true. Each family consolidates detections within one hour. The new v5 directional families consolidate each direction separately so a reversal is not hidden; the replay list groups nearby moments into expandable five-minute episodes. Family filters and “Show more” change the list, not the underlying research evidence.

No markers can mean no match or missing inputs. It does not mean all conditions were measured. Check data coverage.

Event annotations and reproducibility

Archived event annotations may describe facts established after an event, such as its eventual peak. Replay labels them separately from research detections and query navigation anchors.

The rulebook version, data revision and query hash identify how a marker was generated. Exact definitions in older markers remain authoritative even when a newer guide describes stricter conditions. Display severity is an ordering hint whose formula varies by family, not a confidence score.

What should I check next?

Inspect the lead-up, then compare the same condition with a baseline across other eligible windows. Include cases where the expected move did not happen. The reading library explains the underlying measurements.