Skip to content
Back to skills

Spread Analysis Calculator

ASecurity

Calculates price spreads, MoM% changes, and rolling z-scores for pair trading analysis. Implements statistical normalization with configurable parameters.

  • 8 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 6, 2026
datagotestingapiperformance

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add zjunlp/Skills --skill spread-analysis-calculator --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Spread Analysis Calculator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zjunlp-spread-analysis-calculator/badge)](https://www.skillsdirectory.com/skills/zjunlp-spread-analysis-calculator)

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: 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.)

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…