Skip to main content

Cross Sectional Mispricing

Quick Reference

PropertyValue
Dimensionregime
Categorymarket_regime
Versionv0.9.0 (Beta)
Output Columnmispricing_score

Cross-sectional mispricing score - measures relative mispricing of an asset compared to its peer group

Formula

CDM Inputs

ColumnCDM TableDescription
asset_returncdm_*CDM source table
peer_returnscdm_*CDM source table

Parameters

ParameterTypeDefaultDescription
epsilonfloat [0.0, 1.0]1e-10Small 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