Calculates price spreads, MoM% changes, and rolling z-scores for pair trading analysis. Implements statistical normalization with configurable parameters.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add zjunlp/Skills --skill spread-analysis-calculator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Spread Analysis Calculator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/zjunlp-spread-analysis-calculator)More formats (shields.io, HTML) on the badges page.
---
name: spread-analysis-calculator
description: Calculates price spreads, MoM% changes, and rolling z-scores for pair trading analysis. Implements statistical normalization with configurable parameters.
---
# Skill: Spread Analysis Calculator
## Purpose
Perform statistical analysis on price spreads between two financial instruments (e.g., WTI-Brent, gold-silver). Calculate spread values, month-over-month percentage changes, and rolling z-scores for pair trading strategies.
## Core Workflow
### 1. Data Collection & Preparation
- **Input**: Two time-series datasets (e.g., WTI and Brent monthly closes)
- **Action**: Fetch data from specified sources (Yahoo Finance, CSV files, APIs)
- **Output**: Aligned, cleaned datasets with consistent timestamps
### 2. Spread Calculation
- **Formula**: `Spread = Instrument_B - Instrument_A`
- **Precision**: Round to 4 decimal places for prices, 2 decimal places for percentages
### 3. MoM% Calculation
- **Formula**: `MoM% = (Current_Value / Previous_Value - 1) × 100%`
- **Handling**: First month has `null`/`None` MoM value
- **Apply to**: Both individual instruments and the spread
### 4. Z-Score Calculation (Rolling Window)
- **Window**: Configurable (default: 6 periods)
- **Statistics**:
- Mean: `μ = Σx / n`
- Sample Std Dev: `σ = √[Σ(x - μ)² / (n - 1)]` (ddof=1)
- Z-Score: `z = (x - μ) / σ`
- **Edge Cases**:
- Return `z = 0` if window has < 4 samples
- Return `z = 0` if standard deviation = 0
- Clip z-scores to range [-3, 3]
- **Output**: Z-score for current period based on rolling window
### 5. Signal Generation (Optional)
- **Thresholds**: Configurable (default: ±1)
- `z ≤ -threshold`: LONG_SPREAD (Long B + Short A)
- `z ≥ +threshold`: SHORT_SPREAD (Short B + Long A)
- Otherwise: FLAT
- **Regime Classification**:
- `z ≥ +threshold`: HIGH
- `z ≤ -threshold`: LOW
- Otherwise: NEUTRAL
### 6. Backtest Implementation (Optional)
When backtesting is requested:
- **Position Rules**:
- Signals generated at period-end
- Held for 1 period, closed at next period-end
- Only one position at a time
- Equal weight on both legs
- **Return Calculation**:
- For LONG_SPREAD: `Return = 0.5 × (B_return) + 0.5 × (-A_return)`
- For SHORT_SPREAD: `Return = 0.5 × (-B_return) + 0.5 × (A_return)`
- Include transaction costs (configurable, default: 0.40% round-trip)
- **Performance Metrics**:
- Total Return (compounded)
- Annualized Return
- Sharpe Ratio (annualized)
- Win Rate
- Maximum Drawdown
## Output Structure
Generate analysis results in this format:
1. **Summary Table**: Period, Instrument A Close, Instrument B Close, Spread, MoM%, Z-Score, Signal, Regime
2. **Trade Log** (if backtesting): Entry/Exit dates, signals, spreads, returns, PnL
3. **Performance Metrics** (if backtesting): Total return, Sharpe, win rate, max drawdown
## Error Handling
- Validate data alignment (same timestamps, no missing periods)
- Handle division by zero in MoM% calculations
- Gracefully handle insufficient data for z-score windows
- Log warnings for edge cases
## Configuration Parameters
- `window_size`: Rolling window for z-score (default: 6)
- `z_threshold`: Signal threshold (default: 1.0)
- `clip_range`: Z-score clipping range (default: [-3, 3])
- `min_samples`: Minimum samples for z-score (default: 4)
- `transaction_cost`: Round-trip cost for backtest (default: 0.40%)
- `ddof`: Degrees of freedom for std dev (default: 1)
## Integration Notes
- Use `scripts/calculate_spread.py` for core calculations
- Refer to `references/calculation_methodology.md` for detailed formulas
- Customize output format based on destination (Notion, CSV, JSON, etc.)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!