SOTA metrics for evaluating range bar (price-based sampling) financial data. Use when computing Sharpe ratios, risk metrics, ML prediction quality for range bars. TRIGGERS - range bar metrics, evaluate range bars, Sharpe ratio range bars, WFO metrics, walk-forward metrics, BiLSTM evaluation, crypto metrics, daily aggregation, sqrt(7), sqrt(365), PSR DSR MinTRL, IC information coefficient.
View on GitHubterrylica/cc-skills
quant-research
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/terrylica/cc-skills/blob/main/plugins/quant-research/skills/rangebar-eval-metrics/SKILL.md -a claude-code --skill rangebar-eval-metricsInstallation paths:
.claude/skills/rangebar-eval-metrics/# Range Bar Evaluation Metrics Machine-readable reference + computation scripts for state-of-the-art metrics evaluating range bar (price-based sampling) data. ## Quick Start ```bash # Compute metrics from predictions + actuals python scripts/compute_metrics.py --predictions preds.npy --actuals actuals.npy --timestamps ts.npy # Generate full evaluation report python scripts/generate_report.py --results folds.jsonl --output report.md ``` ## Metric Tiers | Tier | Purpose | Metrics | Compute | | ---------------------- | ------------------ | ------------------------------------------------------------------------ | -------------------- | | **Primary** (5) | Research decisions | weekly_sharpe, hit_rate, cumulative_pnl, n_bars, positive_sharpe_rate | Per-fold + aggregate | | **Secondary/Risk** (5) | Additional context | max_drawdown, bar_sharpe, return_per_bar, profit_factor, cv_fold_returns | Per-fold | | **ML Quality** (3) | Prediction health | ic, prediction_autocorr, is_collapsed | Per-fold | | **Diagnostic** (5) | Final validation | psr, dsr, autocorr_lag1, effective_n, binomial_pvalue | Aggregate only | | **Extended Risk** (5) | Deep risk analysis | var_95, cvar_95, omega_ratio, sortino_ratio, ulcer_index | Per-fold (optional) | ## Why Range Bars Need Special Treatment Range bars violate standard IID assumptions: 1. **Variable duration**: Bars form based on price movement, not time 2. **Autocorrelation**: High-volatility periods cluster bars → temporal correlation 3. **Non-constant information**: More bars during volatility = more information per day **Canonical solution**: Daily aggregation via `_group_by_day()` before Sharpe calculation. ## References ### Core Reference Files | Topic | Reference