Vpin
Quick Reference
| Property | Value |
|---|---|
| Dimension | signal |
| Category | order_flow |
| Version | v0.9.0 (Beta) |
| Output Column | vpin |
Volume-synchronized probability of informed trading
Formula
abs(rolling_sum((size * trade_direction), num_bars)) / rolling_sum(size, num_bars)
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
size | cdm_trade_enriched | Enriched trade data 鈥?price, size, direction, micro-price |
trade_direction | cdm_trade_enriched | Enriched trade data 鈥?price, size, direction, micro-price |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
bar_size | integer | 500000 | Volume per bar |
num_bars | integer [10, 200] | 50 | Number of bars for VPIN calculation |
Output
Column: vpin
VPIN measure of informed trading
Market Intuition & Trading Rationale
VPIN (Volume-synchronized Probability of Informed Trading) estimates the fraction of volume that originates from informed traders. It divides the trading session into equal-volume buckets and measures the imbalance between buy and sell volume within each bucket: |危(size 脳 direction)| / 危(size). When buy and sell volume are balanced, VPIN is low 鈥?most volume is uninformed noise. When one side dominates, VPIN is high 鈥?informed traders are pushing directionally.
VPIN was developed as a real-time alternative to PIN (Probability of Informed Trading), which requires daily estimation. By using volume bars instead of clock time, VPIN adapts to changes in trading intensity 鈥?it updates faster during active periods and slower during quiet periods, providing a consistent sample size for the imbalance estimate regardless of market conditions.
VPIN is a leading indicator of volatility. When informed traders enter the market, they create order flow toxicity 鈥?market makers detect the adverse selection and widen spreads. VPIN rises before volatility spikes, making it an early-warning signal for market stress and a useful input for execution algorithms that need to anticipate, not just react to, deteriorating conditions.
Usage Cases
- Toxicity-based execution gating: When VPIN exceeds a threshold (typically 0.8鈥?.9), the market is likely toxic 鈥?informed flow dominates. Switch from passive to aggressive execution, or defer trading until VPIN subsides. This is the core signal in the
trade_toxicityfeature set. - Volatility prediction: VPIN spikes precede volatility events by minutes to hours. Monitor VPIN alongside realized volatility 鈥?when VPIN rises but volatility hasn't yet, prepare for a volatility event. This lead-lag relationship is well-documented across equities, futures, and crypto markets.
- Market making risk management: VPIN directly measures the adverse selection risk facing liquidity providers. When VPIN is elevated, widen quotes to compensate for the higher probability of trading against informed flow. When VPIN is low, tighten quotes to capture more flow.
- Regime classification: VPIN is a continuous toxicity score. Partition into low (<0.3), medium (0.3鈥?.7), and high (>0.7) toxicity regimes. Each regime warrants different execution strategies, position sizes, and risk limits.
YAML Definition
name: vpin
description: Volume-synchronized probability of informed trading
category: order_flow
version: v0.9.0 (Beta)
dimension: signal
status: Pre-release
required_inputs:
- size
- trade_direction
output_column: vpin
output_description: VPIN measure of informed trading
tags:
- vpin
- microstructure
- flow
- informed
- volume
parameters:
bar_size:
type: integer
description: Volume per bar
required: false
default: 500000
constraints:
min: 1000
num_bars:
type: integer
description: Number of bars for VPIN calculation
required: false
default: 50
constraints:
min: 10
max: 200
formula: abs(rolling_sum((size * trade_direction), num_bars)) / rolling_sum(size,
num_bars)