Cross Sectional Mispricing
Quick Reference
| Property | Value |
|---|---|
| Dimension | regime |
| Category | market_regime |
| Version | v0.9.0 (Beta) |
| Output Column | mispricing_score |
Cross-sectional mispricing score - measures relative mispricing of an asset compared to its peer group
Formula
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
asset_return | cdm_* | CDM source table |
peer_returns | cdm_* | CDM source table |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
epsilon | float [0.0, 1.0] | 1e-10 | Small constant to prevent division by zero |
Output
Column: mispricing_score
Deviation from cross-sectional mean return (z-score)
Market Intuition & Trading Rationale
Cross-sectional mispricing measures an asset's return deviation from its peer group: (asset_return - peer_mean) / (peer_std + ε). This is the z-score of the asset's return relative to its cross-section. A positive z-score means the asset outperformed its peers (potentially overvalued). A negative z-score means it underperformed (potentially undervalued). This is the foundation of statistical arbitrage and pairs trading strategies.
Usage Cases
- Mean reversion across peers: Go long assets with negative z-scores (underperformed, expected to catch up) and short assets with positive z-scores (overperformed, expected to revert). This is the classic long-short equity stat-arb strategy.
- Pairs trading entry: When the z-score of the spread between two cointegrated assets is extreme, enter a convergence trade. Exit when the z-score returns to zero.
YAML Definition
name: cross_sectional_mispricing
description: Cross-sectional mispricing score - measures relative mispricing of an
asset compared to its peer group
category: market_regime
version: v0.9.0 (Beta)
dimension: regime
status: Pre-release
required_inputs:
- asset_return
- peer_returns
output_column: mispricing_score
output_description: Deviation from cross-sectional mean return (z-score)
parameters:
epsilon:
type: float
description: Small constant to prevent division by zero
required: false
default: 1.0e-10
constraints:
min: 0.0
max: 1.0
steps:
- primitive: TRANSFORM
op: array_mean
params:
array: peer_returns
output: peer_mean
- primitive: TRANSFORM
op: array_std
params:
array: peer_returns
output: peer_std
- primitive: TRANSFORM
op: sub
params:
a: asset_return
b: peer_mean
output: deviation
- primitive: TRANSFORM
op: add
params:
a: peer_std
b: $epsilon
output: denom
- primitive: TRANSFORM
op: div
params:
a: deviation
b: denom
output: mispricing_score