Simmer Calibration Report

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.

Audits

Pass

Install

openclaw skills install simmer-calibration-report

📊 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

ParameterEnv VarDefaultDescription
journal_pathCALIB_JOURNAL_PATH""Path to trade journal JSONL. Empty = auto-detect.
min_tradesCALIB_MIN_TRADES10Minimum trades to show a segment. Below this, the numbers lie.
lookback_daysCALIB_LOOKBACK_DAYS30How far back to analyze.
include_unresolvedCALIB_INCLUDE_UNRESOLVEDfalseInclude 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.py

# Live journal
python calibration_report.py --live

# Custom journal path
CALIB_JOURNAL_PATH=/path/to/journal.jsonl python calibration_report.py

# Show config
python calibration_report.py --config

# Summary 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.jsonl

BY 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

ProblemFix
"No journal found"Set CALIB_JOURNAL_PATH explicitly, or ensure data/live/trade_journal.jsonl exists in your workspace.
0 resolved tradesTrades haven't resolved yet. Set CALIB_INCLUDE_UNRESOLVED=true to see pending trades (EV will be approximate).
Segment not showingBelow 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