Understanding research markers

Find a moment worth inspecting, understand what was observed, then test the same condition across other markets and dates.

Research markers identify recorded conditions at their detection time. They are observations, not trade recommendations or probabilities. Open “Why this marker?” for the observed values and exact query, or “Find comparable moments” to review an editable study.

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

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.

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

Observed liquidation arrivals crossed the clustering threshold.

Condition: Cascade clustering index >= 0.6.

Limit: This is a clustering index, not a branching ratio or a forecast of a cascade.

km.clustering_ramp

Historical markers and missing data

Markers are regenerated from stored research features, including historical windows. A new rulebook can apply to the preceding 30 or 90 days without recording new market activity. Availability depends on each feature’s history and warmup, not the date the marker was introduced. Tick replay coverage and account access are separate.

Conditions fire when they become true. Each family consolidates detections within one hour; 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 condition fired, or that required features were missing. It does not prove that every market condition was 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.