Tourbillon · for traders · nothing leaves your browser

Your trades already know why you lose.

Drop your broker export. Tourbillon runs exact laws on your own history: is your edge real or luck, is your size killing it, did it die and when, which habits cost you money for real, and which risk per trade gives you the best odds of passing a funded challenge. It does not predict the market. It stops you from being your own worst counterparty.

Audit my trades, free
Computed in your browserNo accountSame data, same answerMetaTrader, cTrader, Binance, CSV
Five laws, applied to the demo trader (synthetic data):
1Is the edge real, or luck?…
2Is the size helping or killing it?…
3Did the edge die, and when?…
4Which leaks are real, once noise is removed?…
5Which risk passes the challenge most often?…

1. Drop your history

Export your closed trades as CSV (or the HTML report of MetaTrader) and drop the file here. It is read on this device; nothing is uploaded. Minimum 40 trades for leaks, 100 for the out-of-sample proof.

Drop a CSV or MetaTrader report hereor click to choose a file
Columns detectedi
Expert settings

2. The verdict on your trading

3. Pre-flight check before every order

Pilots do not take off on instinct. Before you send an order, the check confronts it with your own rules and computes the largest size you are still allowed. Write why you enter: the decision engine reads revenge, fear of missing out, impulse and overconfidence. Answers go, reduce, wait or block.

Rules (filled from your flight plan)

The verdict appears here

The example is filled with a classic: two stops in a row, a quick re-entry at double size. Press "Check free".

For trading bots and agents

The same checks as a pay-per-call API in sats over Lightning (L402). No account, no key. A trading bot calls the pre-flight check before each order; the audit returns a signed report anyone can verify.

POST /v1/trade-gate

curl -s https://verdict.kechlab.com/v1/free/trade-gate \
  -H 'Content-Type: application/json' -d '{
  "order":   { "symbol":"EURUSD", "side":"long", "entry":1.085, "stop":1.082, "size":150000 },
  "account": { "equity":24100, "start_of_day_equity":25000, "day_pnl":-900,
               "consecutive_losses":2, "minutes_since_last_loss":4 },
  "rules":   { "max_risk_pct":1, "daily_loss_pct":5, "cooldown_minutes_after_loss":15 } }'
=> { "decision": "wait", "wait_minutes": 11, "max_size": 80333.3333, ... }

POST /v1/trade-audit

{ "equity": 25000,
  "challenge": { "target_pct":10, "max_loss_pct":10, "daily_loss_pct":5 },
  "trades": [ { "open_time":"2026-03-02T08:10:00Z", "close_time":"2026-03-02T09:05:00Z",
                "symbol":"EURUSD", "side":"long", "pnl":410, "risk":250,
                "note":"A setup, plan followed" }, ... ] }
=> verdict.report: edge, sizing, edge_health, challenge, leaks,
   flight_plan.gate_rules (plugs into trade-gate), signed receipt

Full catalog: /v1/catalog · openapi.json · how to pay in sats

The mechanism, and its limits