Statistical Anomaly Detection using Multivariate Gaussian Models

Created by Gabriel James • View on GitHub

analytics Project Overview

Traditional volatility indicators like VIX treat each data point independently. But market stress rarely manifests in just one dimension—during COVID crash (March 2020), we saw simultaneous spikes in volatility, unusual volume, and correlation breakdowns.

psychology
Core Hypothesis: By modeling market behavior as a joint distribution across multiple features, we can detect statistically anomalous states that single-feature indicators miss.

compare_arrows This is probabilistic anomaly detection—we measure how "unlikely" each day's observation is under the learned distribution.

code Flask functions NumPy bar_chart Chart.js savings yfinance

science Statistical Methodology

Feature Engineering

info

Four features capture market dynamics:

  • Log Return help_outline
  • Rolling σ (14d) help_outline
  • Volume Δ help_outline
  • |Return| help_outline

Multivariate Gaussian

info

Market state modeled as:

xt ~ N(μ̂t, Σ̂t)

Parameters estimated via Maximum Likelihood from trailing 60 trading days. Regularization (εI) ensures positive definiteness.

Mahalanobis Distance

info

Anomaly score via generalized distance:

D² = (x-μ)ᵀ Σ⁻¹ (x-μ)

Under H₀, D² ~ χ²(4). This provides a principled threshold framework.

Detection Criterion

info

Anomaly flagged when:

D²t > Q0.995(D²)

Percentile-based threshold is robust to fat tails in return distributions.

menu_book
References: Mahalanobis (1936), Bollerslev (1986), Cont (2001), Andersen & Bollerslev (1998). Built on concepts from ML Specialization by Andrew Ng & DeepLearning.AI.

tune Analysis Parameters

Rolling Window: 60 days
Threshold: 99.5th percentile
Features: 4-dimensional

info Event correlations match anomalies to known events (COVID, SVB, etc.)