Skip to content
Back to skills

Change Point Detection Donaldshen27 Xtrend Vanilla 2

ASecurity

Use when segmenting time-series into regimes, detecting structural breaks, or constructing context sets for few-shot learning. Covers GP-CPD algorithms, Matérn kernels, likelihood ratio tests, regime identification, market state transitions, volatility regime changes, and trend reversals in financial markets.

  • 666 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 7, 2026
ai-agentspythongoapiperformance

Works with

  • api

Security analysis

A100/100

Scanned June 7, 2026

npx -y skills add majiayu000/claude-skill-registry --skill change-point-detection-donaldshen27-xtrend-vanilla-2 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Change Point Detection Donaldshen27 Xtrend Vanilla 2?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Change Point Detection Donaldshen27 Xtrend Vanilla 2
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-change-point-detection-donaldshen27-xtrend-vanilla/badge)](https://www.skillsdirectory.com/skills/majiayu000-change-point-detection-donaldshen27-xtrend-vanilla)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: change-point-detection
description: Use when segmenting time-series into regimes, detecting structural breaks, or constructing context sets for few-shot learning. Covers GP-CPD algorithms, Matérn kernels, likelihood ratio tests, regime identification, market state transitions, volatility regime changes, and trend reversals in financial markets.
---

# Change-Point Detection for Financial Regimes

## Purpose

Comprehensive guide for detecting regime changes in financial time-series using Gaussian Process change-point detection (GP-CPD), essential for segmenting markets into stationary periods and improving trading strategies.

## When to Use

Activate this skill when:
- Segmenting time-series into distinct regimes
- Detecting structural breaks or market transitions
- Constructing context sets for few-shot learning
- Identifying momentum crashes or reversals
- Analyzing volatility regime changes
- Building regime-aware trading models

## Core Concepts

### 1. What is a Regime Change?

A **regime change** (or change-point) is a point in time where the statistical properties of a time-series shift significantly.

**Examples in Finance:**
- **2020 COVID-19**: Transition from bull market to extreme volatility
- **2008 Financial Crisis**: Shift to high correlation and volatility
- **2022 Russia-Ukraine**: Commodity market disruption
- **Rate Hiking Cycles**: Change in interest rate sensitivity

**Why Detect Them?**
- Momentum strategies suffer during regime transitions ("momentum crashes")
- Different regimes require different trading approaches
- Context sets with clean regime segments improve few-shot learning by 11.3%

### 2. Gaussian Process Basics

A **Gaussian Process** defines a distribution over functions:

```python
# GP is fully specified by mean and covariance functions
y ~ GP(μ(x), k(x, x'))

where:
- μ(x): mean function (often 0)
- k(x, x'): covariance (kernel) function
```

**Matérn 3/2 Kernel** (recommended for financial data):
```
k(r) = σ² * (1 + √3*r/ℓ) * exp(-√3*r/ℓ)

where:
- r = |x1 - x2|
- ℓ: length_scale (how quickly correlation decays)
- σ²: variance (overall scale)
```

**Properties:**
- Once differentiable (smoother than OU process)
- Not infinitely smooth (realistic for financial data)
- Better than RBF for capturing financial dynamics

See [IMPLEMENTATION.md](IMPLEMENTATION.md#gaussian-process-kernels) for kernel implementations.

### 3. Change-Point Kernel

The **Change-Point (CP) kernel** models a transition between two GPs:

```
k_CP(x1, x2) = σ(x1) * σ(x2) * k1(x1, x2)
             + (1-σ(x1)) * (1-σ(x2)) * k2(x1, x2)

where σ(x) = sigmoid((x - t_cp) / sigma) is transition function
```

**Key Insight:**
- If there's a change-point, CP kernel fits better than single Matérn kernel
- We can detect this by comparing marginal likelihoods!

See [IMPLEMENTATION.md](IMPLEMENTATION.md#change-point-kernel) for code.

### 4. GP-CPD Algorithm

Compare two models:
1. **Matérn (M)**: No change-point, single stationary GP
2. **Change-Point (C)**: Change-point exists at time t_cp

**Detection Steps:**
1. Fit GP with Matérn kernel → compute L_M
2. Fit GP with Change-Point kernel → compute L_C (optimize t_cp)
3. Compare: `severity = L_C / (L_M + L_C)`
4. If `severity ≥ threshold`, declare change-point

**Severity Interpretation:**
- `severity = 0.5`: No evidence for change-point (models equally good)
- `severity = 0.9`: Strong evidence for change-point
- `severity = 0.95`: Very strong evidence for change-point

See [IMPLEMENTATION.md](IMPLEMENTATION.md#gp-cpd-algorithm) for full algorithm.

### 5. Segmentation Algorithm

Recursively apply GP-CPD to segment entire time-series:

**Process:**
1. Start from end of series
2. Check lookback window for change-point
3. If detected and severity ≥ threshold:
   - Mark regime from change-point to current end
   - Move before change-point and repeat
4. If not detected:
   - Move back one time step
   - Enforce max regime length constraint
5. Continue until start of series

**Constraints:**
- `min_length`: Minimum regime length (typically 5 days)
- `max_length`: Maximum regime length (21 or 63 days)

See [IMPLEMENTATION.md](IMPLEMENTATION.md#segmentation-algorithm) for implementation.

### 6. Using CPD for Context Sets

Create high-quality context sets for few-shot learning:

**Strategy:**
1. Segment each asset's history with CPD
2. Sample random regime segments as context
3. Ensure all context is before target_time (causality)

**Performance Impact** (from X-Trend paper):
- Random context: Sharpe = 2.38
- CPD context: Sharpe = 2.70
- **Improvement: +11.3%**

**Why It Works:**
- Clean regime segments are more informative
- Avoids mixing multiple market states in one context
- Better pattern matching via cross-attention
- Reduces noise in transferred knowledge

See [IMPLEMENTATION.md](IMPLEMENTATION.md#context-set-construction) for code.

## Hyperparameter Selection

### Lookback Window

```python
lookback_window (ℓ_lbw):
- 21 days (1 month): Good balance of speed and robustness
- 63 days (3 months): More robust but slower detection
- Trade-off: Shorter = faster detection, Longer = less noise
```

### Severity Threshold

```python
threshold (ν):
- 0.90: Detect most regime changes (more sensitive)
- 0.95: Detect only strong regime changes (more specific)
- 0.99: Very conservative (few, strong changes only)

Recommendation:
- For max_length = 21: Use ν = 0.90
- For max_length = 63: Use ν = 0.95
```

### Segment Length Constraints

```python
min_length = 5:  # Minimum 5 days for meaningful regime
max_length = 21 or 63:
    - 21 (1-month): Shorter, more granular regimes
    - 63 (3-month): Longer, more stable regimes
```

## Practical Usage

### Basic CPD Detection

```python
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import Matern

class FinancialCPD:
    def __init__(self, lookback=21, threshold=0.9):
        self.lookback = lookback
        self.threshold = threshold

    def detect_changepoint(self, prices):
        """Detect change-point in price window."""
        gp_m, L_M = self.fit_matern_gp(prices)
        t_cp, L_C = self.fit_changepoint_gp(prices)

        severity = L_C / (L_M + L_C)

        if severity >= self.threshold:
            return t_cp, severity
        else:
            return None, severity

    def segment(self, prices, min_len=5, max_len=63):
        """Segment entire time-series into regimes."""
        # See IMPLEMENTATION.md for full code
```

See [IMPLEMENTATION.md](IMPLEMENTATION.md#practical-implementation) for complete implementation.

### Visualization

```python
def visualize_regimes(prices, regimes):
    """Plot time-series with colored regime segments."""
    # See IMPLEMENTATION.md for full visualization code
```

See [IMPLEMENTATION.md](IMPLEMENTATION.md#visualization) for plotting code.

## Common Use Cases

### Use Case 1: Momentum Crash Detection

Identify regime changes that cause momentum losses:
- Market reverses rapidly (change-point detected)
- Existing position is wrong direction

See [IMPLEMENTATION.md](IMPLEMENTATION.md#momentum-crash-detection) for implementation.

### Use Case 2: Adaptive Strategy Selection

Choose trading strategy based on current regime characteristics:
- Trending regimes → Momentum strategies
- Mean-reverting regimes → Contrarian strategies
- High-volatility regimes → Risk-off strategies

See [IMPLEMENTATION.md](IMPLEMENTATION.md#adaptive-strategy-selection) for code.

## Best Practices

### DO:

✅ **Use Matérn 3/2 kernel** for financial data (better than RBF or OU)
✅ **Set reasonable lookback** (21 days is good default)
✅ **Enforce min/max lengths** to avoid trivial or excessive regimes
✅ **Validate on multiple assets** to tune threshold
✅ **Move past change-point** to avoid corrupting next regime's representation
✅ **Use for context construction** in few-shot learning

### DON'T:

❌ **Don't use RBF kernel** - too smooth for financial data
❌ **Don't set lookback too small** - noisy detections
❌ **Don't set lookback too large** - delayed detection
❌ **Don't ignore severity** - it indicates confidence
❌ **Don't allow overlapping regimes** - each point in one regime only

## Performance Impact

Based on X-Trend paper results:

**Few-Shot Learning:**
- Random context: Sharpe = 2.38
- CPD context: Sharpe = 2.70
- **Improvement: +11.3%**

**Why It Works:**
- Clean regime segments are more informative
- Avoids mixing multiple market states in one context
- Better pattern matching via cross-attention
- Reduces noise in transferred knowledge

## Implementation Checklist

When implementing GP-CPD:

- [ ] Install scikit-learn for GP support
- [ ] Implement Matérn 3/2 kernel
- [ ] Implement change-point kernel or two-GP approximation
- [ ] Calculate marginal likelihoods for both models
- [ ] Implement severity calculation: `L_C / (L_M + L_C)`
- [ ] Set appropriate threshold (0.90-0.95)
- [ ] Implement segmentation with min/max length constraints
- [ ] Add visualization for regime validation
- [ ] Integrate with context set construction
- [ ] Test on multiple assets and time periods

## Related Skills

- `few-shot-learning-finance` - Using CPD for context construction
- `financial-time-series` - Returns and momentum factors to analyze
- `x-trend-architecture` - Attending over regime segments

## Reference Files

- [IMPLEMENTATION.md](IMPLEMENTATION.md) - Complete implementations including FinancialCPD class, kernels, segmentation, context construction, use cases, and visualization

## References

- GP Change-Point Models (Saatçi, Turner, Rasmussen 2010)
- Sequential Bayesian Prediction (Garnett et al. 2010)
- Slow Momentum with Fast Reversion (Wood, Roberts, Zohren 2022)
- X-Trend: Few-Shot Learning Patterns (Wood et al. 2024)

---

**Last Updated**: Based on X-Trend paper (March 2024)
**Skill Type**: Domain Knowledge + Implementation
**Line Count**: ~290 (under 500-line rule ✅)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.