Universal Deviation Scoring System
Financial assets rarely move in straight lines. They oscillate around a mean. Mean reversion strategies exploit this oscillation. A universal scoring system quantifies this deviation. This system allows comparison across different assets and timeframes. It simplifies signal generation.
Traders often use standard deviation to measure price dispersion. A Z-score standardizes this measure. The Z-score calculates how many standard deviations an observation is from the mean. A higher absolute Z-score indicates greater deviation. A positive Z-score means the price is above the mean. A negative Z-score means the price is below the mean.
The formula for a Z-score is:
$Z = (X - \mu) / \sigma$
Where: $X$ = current price $\mu$ = mean price over a lookback period $\sigma$ = standard deviation of prices over the same lookback period
This Z-score provides a universal metric. It applies to equities, commodities, and forex. It works across different timeframes.
Calculating Z-Scores for Multiple Assets
Consider three assets: SPY (S&P 500 ETF), GLD (Gold ETF), and EUR/USD (Euro to US Dollar exchange rate). We will use a 20-day lookback period for the mean and standard deviation. This period captures short-term market dynamics.
Example 1: SPY
On January 2, 2024, SPY closed at $471.20. The 20-day simple moving average (SMA) for SPY was $468.00. The 20-day standard deviation for SPY was $5.50.
Calculate the Z-score for SPY: $Z_{SPY} = (471.20 - 468.00) / 5.50 = 3.20 / 5.50 \approx 0.58$
SPY trades 0.58 standard deviations above its 20-day mean. This indicates a slight upward deviation.
Example 2: GLD
On January 2, 2024, GLD closed at $188.50. The 20-day SMA for GLD was $190.00. The 20-day standard deviation for GLD was $2.10.
Calculate the Z-score for GLD: $Z_{GLD} = (188.50 - 190.00) / 2.10 = -1.50 / 2.10 \approx -0.71$
GLD trades 0.71 standard deviations below its 20-day mean. This indicates a downward deviation.
Example 3: EUR/USD
On January 2, 2024, EUR/USD closed at 1.0950. The 20-day SMA for EUR/USD was 1.0980. The 20-day standard deviation for EUR/USD was 0.0040.
Calculate the Z-score for EUR/USD: $Z_{EUR/USD} = (1.0950 - 1.0980) / 0.0040 = -0.0030 / 0.0040 = -0.75$
EUR/USD trades 0.75 standard deviations below its 20-day mean. This shows a similar downward deviation to GLD.
The Z-scores allow direct comparison. GLD and EUR/USD show similar relative weakness. SPY shows relative strength. The absolute price levels differ significantly. The Z-score normalizes these differences.
Interpreting Z-Score Thresholds
A Z-score provides a continuous measure. Traders often define thresholds for actionable signals. Common thresholds include $\pm 1.0$, $\pm 1.5$, $\pm 2.0$, or $\pm 2.5$ standard deviations. These thresholds define zones of overextension.
Thresholds and Probability:
- A Z-score of $\pm 1.0$ covers approximately 68.2% of data in a normal distribution.
- A Z-score of $\pm 2.0$ covers approximately 95.4% of data.
- A Z-score of $\pm 3.0$ covers approximately 99.7% of data.
These probabilities assume a normal distribution. Financial asset prices often exhibit fat tails. Extreme deviations occur more frequently than a normal distribution predicts. Traders must account for this.
Actionable Signals:
A mean reversion strategy might buy when the Z-score drops below a negative threshold. It might sell (short) when the Z-score rises above a positive threshold.
Consider a strategy using $\pm 1.5$ as thresholds. If $Z < -1.5$, initiate a long position. If $Z > 1.5$, initiate a short position.
Using our previous examples: SPY Z-score: 0.58. No signal. GLD Z-score: -0.71. No signal. EUR/USD Z-score: -0.75. No signal.
None of these assets triggered a trade on January 2, 2024, using a $\pm 1.5$ threshold. This indicates relative calm.
Adjusting the lookback period impacts the Z-score. A shorter lookback period (e.g., 10 days) makes the mean and standard deviation more responsive. This generates more frequent signals. A longer lookback period (e.g., 50 days) provides a smoother, less reactive measure. This generates fewer signals. Backtesting helps optimize the lookback period and thresholds.
Normalizing Z-Scores for Strategy Entry/Exit
Z-scores can range from large negative to large positive values. Some trading systems prefer a bounded score. A min-max normalization scales Z-scores to a specific range, for example, 0 to 100. This is useful for combining multiple signals or for machine learning inputs.
The formula for min-max normalization is:
$Normalized Z = (Z - Z_{min}) / (Z_{max} - Z_{min}) * (NewMax - NewMin) + NewMin$*
Where: $Z$ = current Z-score $Z_{min}$ = minimum Z-score observed over a historical period $Z_{max}$ = maximum Z-score observed over a historical period $NewMin$ = desired minimum of the new range (e.g., 0) $NewMax$ = desired maximum of the new range (e.g., 100)
This normalization transforms the Z-score into a "deviation strength" indicator. A score near 0 indicates significant undervaluation. A score near 100 indicates significant overvaluation.
Example: Normalizing SPY Z-scores
Assume historical Z-scores for SPY ranged from -3.0 to +3.0 over the last year. We want to normalize to a 0-100 range.
On January 2, 2024, SPY Z-score was 0.58. $Normalized Z_{SPY} = (0.58 - (-3.0)) / (3.0 - (-3.0)) * (100 - 0) + 0$ $Normalized Z_{SPY} = (3.58) / (6.0) * 100 \approx 59.67$
A normalized score of 59.67 suggests SPY is slightly above its midpoint. This aligns with the raw Z-score of 0.58.
This universal scoring system provides a robust framework. It allows traders to systematically identify overextended conditions. It facilitates comparison across diverse assets. It forms the foundation for quantitative mean reversion strategies.
Traders must continuously monitor the Z-score distribution for each asset. Skewness and kurtosis can indicate non-normal behavior. This impacts the probability interpretation of thresholds. Adjust thresholds or lookback periods as market conditions evolve.
