Browse all readings

Research Readings Informed-trading pressure

Trade flow

Informed-trading pressure

Volume-synchronized probability of informed trading proxy.

Observed
read at the minute itself
Unit
ratio
Valid range
0 to 1

In plain English

Measures how one-sided executed buying and selling were within volume buckets. EdgeDepth uses the exchange aggressor flag, not an inference about which traders were informed.

How to read it

Sum the absolute buy-minus-sell USD imbalance in each included bucket, then divide by their combined actual volume. A value of 0.6 means those absolute imbalances total 60% of included volume. Low values mean more balanced buckets; high values mean more one-sided buckets, which may alternate direction. Targets use prior-day USD volume / 240, clamped to $10,000-$10 million. After 50 completed buckets, the calculation uses up to 50 qualifying buckets from retained history, skipping buckets with fewer than five trades. It is absent until a value can be calculated, then holds between completions; this is not a fixed-hour window.

Constructed example · not historical data

One-sided buckets can cancel in net flow

  • Bucket A: $90k taker buys + $10k sells90% buy share
  • Bucket B: $10k taker buys + $90k sells10% buy share
Repeat this pair 25 times, with at least five trades per bucket and a $100k target: 50 qualifying buckets. VPIN = (80 + 80) / (100 + 100) = 0.8; net flow across the same trades = 0. Filled portions show taker buys. This volume-bucket span need not equal an hour.

Why a researcher might use it

Compare more and less one-sided volume-bucket flow, using signed net taker flow to distinguish the overall direction.

What it does not prove

Despite the name, 0.6 is not a calibrated 60% probability of informed trading. It identifies neither informed traders nor a future price direction. Bucket overshoot is retained, so actual bucket volumes can differ.

Use in Research
Technical details

Field ID

feature.vpin

Valid query operators

at least, at most, between

Window operators: lowest, highest, average, latest or change in, over a trailing window.

Editable query preset

This preset is a starting point, not a recommendation. Edit it before running the search.

{
  "schema_version": "research_query.v2",
  "normalization_version": "archive_normalization.v1",
  "feature_version": "feature_defs.v1",
  "target": "record_occurrences",
  "where": {
    "all": [
      [
        "feature.vpin",
        "gte",
        0.5
      ],
      [
        "times.anchor_time",
        "gte",
        "2025-07-15T00:00:00.000Z"
      ]
    ]
  },
  "sort": [
    "times.anchor_time",
    "desc"
  ],
  "page": {
    "limit": 5,
    "cursor": null
  }
}

The search reports how often the record held this condition and what followed. It does not decide whether an idea works.

Related readings