Simmer Calibration Report
by @djdyll
Run a calibration report on any Simmer trade journal. Win rate and EV broken down by strategy, time of day, price band, and market type. Know exactly where y...
clawhub install simmer-calibration-reportπ About This Skill
name: simmer-calibration-report displayName: "Simmer Calibration Report" description: Run a calibration report on any Simmer trade journal. Win rate and EV broken down by strategy, time of day, price band, and market type. Know exactly where your edge lives β and where it doesn't. version: "1.0.4" authors: - name: "DjDyll" difficulty: "beginner"
π Simmer Calibration Report
You think you know where your edge comes from. This skill tells you if you're right.
> This is a template. Point it at any Simmer JSONL trade journal β live, sim, or exported from anywhere β and get a full calibration breakdown. No strategy-specific logic baked in. Your journal, your numbers.
Setup
1. Install dependencies:
pip install simmer-sdk
2. Set your API key:
export SIMMER_API_KEY=your_key_here
3. Run it:
python calibration_report.py --live
That's it. If your journal exists at the default path, it just works.
Configuration
| Parameter | Env Var | Default | Description |
|-----------|---------|---------|-------------|
| journal_path | CALIB_JOURNAL_PATH | "" | Path to trade journal JSONL. Empty = auto-detect. |
| min_trades | CALIB_MIN_TRADES | 10 | Minimum trades to show a segment. Below this, the numbers lie. |
| lookback_days | CALIB_LOOKBACK_DAYS | 30 | How far back to analyze. |
| include_unresolved | CALIB_INCLUDE_UNRESOLVED | false | Include unresolved trades. EV becomes less meaningful. |
Set config inline:
python calibration_report.py --set lookback_days=60
python calibration_report.py --set min_trades=5
Quick Commands
# Sim journal (dry run data)
python calibration_report.pyLive journal
python calibration_report.py --liveCustom journal path
CALIB_JOURNAL_PATH=/path/to/journal.jsonl python calibration_report.pyShow config
python calibration_report.py --configSummary only (good for cron)
python calibration_report.py --live --quiet
Example Output
π Calibration Report β Last 30 days
ββββββββββββββββββββββββββββββββββββββββββββββββββ
Total: 287 trades | 68.3% WR | +$0.038 EV/trade
Journal: data/live/trade_journal.jsonlBY STRATEGY
btc_momentum n=142 WR=72.5% EV=+0.047 ββββββββββββββ
eth_midcandle n=67 WR=61.2% EV=+0.021 ββββββ
btc_midcandle_scalp n=49 WR=65.3% EV=+0.031 ββββββββ
eth_btc_lag n=29 WR=58.6% EV=+0.015 ββββ
BY HOUR (UTC)
00-06 n=44 WR=75.0% EV=+0.055 ββββββββββββββββββ
06-12 n=89 WR=70.8% EV=+0.044 ββββββββββββββββ
12-18 n=97 WR=65.0% EV=+0.031 ββββββββββ
18-24 n=57 WR=64.9% EV=+0.028 βββββββββ
BY ENTRY PRICE
0.20-0.35 n=38 WR=73.7% EV=+0.052 ββββββββββββββββββ
0.35-0.50 n=71 WR=70.4% EV=+0.041 βββββββββββββ
0.50-0.65 n=89 WR=66.3% EV=+0.033 ββββββββββ
0.65-0.80 n=61 WR=63.9% EV=+0.024 ββββββββ
π Best segment: btc_momentum (EV=+0.047, WR=72.5%)
Troubleshooting
| Problem | Fix |
|---------|-----|
| "No journal found" | Set CALIB_JOURNAL_PATH explicitly, or ensure data/live/trade_journal.jsonl exists in your workspace. |
| 0 resolved trades | Trades haven't resolved yet. Set CALIB_INCLUDE_UNRESOLVED=true to see pending trades (EV will be approximate). |
| Segment not showing | Below min_trades threshold. Lower it: python calibration_report.py --set min_trades=5 |
| "SIMMER_API_KEY not set" | export SIMMER_API_KEY=your_key_here |
| "simmer-sdk not installed" | pip install simmer-sdk |
βοΈ Configuration
| Parameter | Env Var | Default | Description |
|-----------|---------|---------|-------------|
| journal_path | CALIB_JOURNAL_PATH | "" | Path to trade journal JSONL. Empty = auto-detect. |
| min_trades | CALIB_MIN_TRADES | 10 | Minimum trades to show a segment. Below this, the numbers lie. |
| lookback_days | CALIB_LOOKBACK_DAYS | 30 | How far back to analyze. |
| include_unresolved | CALIB_INCLUDE_UNRESOLVED | false | Include unresolved trades. EV becomes less meaningful. |
Set config inline:
python calibration_report.py --set lookback_days=60
python calibration_report.py --set min_trades=5
π Tips & Best Practices
| Problem | Fix |
|---------|-----|
| "No journal found" | Set CALIB_JOURNAL_PATH explicitly, or ensure data/live/trade_journal.jsonl exists in your workspace. |
| 0 resolved trades | Trades haven't resolved yet. Set CALIB_INCLUDE_UNRESOLVED=true to see pending trades (EV will be approximate). |
| Segment not showing | Below min_trades threshold. Lower it: python calibration_report.py --set min_trades=5 |
| "SIMMER_API_KEY not set" | export SIMMER_API_KEY=your_key_here |
| "simmer-sdk not installed" | pip install simmer-sdk |