Roll Measure
Quick Reference
| Property | Value |
|---|---|
| Dimension | signal |
| Category | liquidity |
| Version | v0.9.0 (Beta) |
| Output Column | roll_measure |
Roll measure proxy: negative autocorrelation of bar-to-bar price changes
Formula
sqrt(clip(neg_autocorr(diff(close, 1), window), 0.0))
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
close | cdm_* | CDM source table |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
window | integer [5, 200] | 20 | Rolling window for autocorrelation |
Output
Column: roll_measure
Roll effective spread proxy from price change autocorrelation
Market Intuition & Trading Rationale
Roll measure estimates the effective bid-ask spread from price change autocorrelation: sqrt(-autocorr(Δprice, window)). Roll (1984) showed that bid-ask bounce creates negative serial correlation in price changes — a trade at the ask pushes price up, then a trade at the bid pushes it down, creating an oscillating pattern. The magnitude of this oscillation reveals the effective spread, even without quote data.
Usage Cases
- Spread estimation without quote data: Estimate transaction costs for markets or historical periods where quote data is unavailable. The Roll measure is the standard approach in academic research.
- Liquidity comparison across markets: Compare Roll measures across instruments or time periods. Higher Roll measure = wider effective spread = higher transaction costs.
- Transaction cost estimation: When working with trade-only data (no quotes), use Roll measure to estimate realistic transaction costs rather than assuming fixed costs.
YAML Definition
name: roll_measure
description: 'Roll measure proxy: negative autocorrelation of bar-to-bar price changes'
category: liquidity
version: v0.9.0 (Beta)
dimension: signal
status: Pre-release
required_inputs:
- close
output_column: roll_measure
output_description: Roll effective spread proxy from price change autocorrelation
parameters:
window:
type: integer
description: Rolling window for autocorrelation
required: false
default: 20
constraints:
min: 5
max: 200
formula: sqrt(clip(neg_autocorr(diff(close, 1), window), 0.0))