candlebench turns every signal from 66 textbook patterns into a mechanical trade. It charges each trade the spread quoted at that time of day, and compares it with random entries that take the same risk. A pattern counts only if it beats those entries, makes money after costs, and holds up on later dates it was not chosen on.
The run covers two years of 1-minute bars for 117 liquid US stocks and ETFs: 1,021,358 pattern trades at a quoted 2.39 bps per leg. No pattern has an edge. None with enough trades to measure has positive expectancy after costs, and none beats its own matched random entries even before costs once multiple comparisons are corrected for.
A second run at 5-minute, 15-minute and 1-hour bars over the same two years (227,879 pattern trades at 2.21 bps per leg) finds the same: no pattern beats its matched random entries at any of the three timeframes.
Each also comes as a single shareable HTML report: two-year 1m report, 5m, 15m and 1h report and demo report.
A method that finds edges in noise is not measuring anything. On a synthetic random walk, comparing patterns with random entry in net R flagged 38 of 800 rows as winners. Wider stops pay fewer R for the same spread. A control placed before its pattern also trades through bars the pattern was selected on, and loses up to 0.56R on pure noise. With both fixed, 1 row in 800 passes: what a 5% familywise error rate predicts.
The other half is power. When a known edge is planted, an advantage over random entry of 0.14R is caught every time and 0.10R half the time, bracketing the detection limit each leaderboard row reports, so "no edge" comes with a size: on real 1-minute data the frequent patterns cannot be hiding an advantage over random entry larger than 0.02R to 0.03R. Read the power study. Read the calibration.
No API key or download is needed:
pip install git+https://github.com/dpologdvinity/candlebench candlebench demo # synthetic market, full run, interactive dashboard
The dashboard drills from any leaderboard row to the individual trades, and from a trade to
its session's chart. candlebench serve --read-only publishes saved runs without
letting visitors start new ones.