Drag signal, indicator, AI and execution blocks onto the canvas, wire the flow, and StochLab compiles it into a vectorized backtest over 6 years of tick data — no code required.
| Time | Side | Symbol | PnL |
|---|---|---|---|
| 14:06:18 | ▲ Long | BTC-PERP | +184.20 |
| 13:58:41 | ▼ Short | BTC-PERP | +96.55 |
| 13:44:09 | ▲ Long | BTC-PERP | −42.10 |
| 13:31:52 | ▲ Long | BTC-PERP | +311.74 |
| 13:20:07 | ▼ Short | BTC-PERP | −58.90 |
| Time (UTC) | Side | Symbol | Size | Entry | Exit | Hold | Conf | PnL |
|---|---|---|---|---|---|---|---|---|
| 2026-06-14 14:06:18 | ▲ Long | BTC-PERP | 0.42 | 67,418 | 67,902 | 7m | 0.71 | +184.20 |
| 2026-06-14 13:58:41 | ▼ Short | BTC-PERP | 0.38 | 67,510 | 67,256 | 5m | 0.66 | +96.55 |
| 2026-06-14 13:44:09 | ▲ Long | BTC-PERP | 0.40 | 67,380 | 67,274 | 9m | 0.63 | −42.10 |
| 2026-06-14 13:31:52 | ▲ Long | BTC-PERP | 0.46 | 66,940 | 67,618 | 11m | 0.78 | +311.74 |
| 2026-06-14 13:20:07 | ▼ Short | BTC-PERP | 0.35 | 67,205 | 67,373 | 4m | 0.64 | −58.90 |
| 2026-06-14 13:09:33 | ▲ Long | BTC-PERP | 0.41 | 66,710 | 67,041 | 8m | 0.69 | +135.71 |
| 2026-06-14 12:55:14 | ▼ Short | BTC-PERP | 0.37 | 66,902 | 66,580 | 6m | 0.72 | +119.14 |
| 2026-06-14 12:41:50 | ▲ Long | BTC-PERP | 0.39 | 66,540 | 66,488 | 5m | 0.61 | −20.28 |
| 2026-06-14 12:30:22 | ▲ Long | BTC-PERP | 0.44 | 66,120 | 66,743 | 10m | 0.75 | +274.12 |
| 2026-06-14 12:18:07 | ▼ Short | BTC-PERP | 0.36 | 66,388 | 66,401 | 3m | 0.60 | −4.68 |
# Auto-generated from the node graph above — edit either side, they stay in sync. from stochlab import StochNet, data, risk, exec strategy MomentumReversion(symbol="BTC-PERP", tf="1m", book=data.L2): predictor = StochNet.load("stochnet-v3", horizon=8m) def signal(ctx): # 1 · AI Predictor → forward edge + confidence fc = predictor.predict(ctx.features, cross_asset=False) if fc.confidence < 0.62: return flat() # 2 · Signal Filter → regime + order-flow gate if ctx.regime != "trend" or ctx.flow_imbalance < 1.4: return flat() side = long if fc.edge > 0 else short # 3 · Risk Sizing → ½-Kelly, vol-scaled, ATR stop size = risk.kelly(fc.edge, fc.variance, frac=0.5, risk_per_trade=0.0045) stop = ctx.price - side * 2.2 * ctx.atr # 4 · HF Execution → post-only maker, smart-routed return exec.enter(side, size, stop=stop, order=exec.PostOnly, exit=exec.TWAP(slices=4), max_latency=40us)
Like the result? Deploy it to live capital in one click, or list it on the marketplace and earn on every subscriber.