Your rule, run against real bars, with every losing fold printed next to the winning ones.
2 USDC on Base. No account on your side, none on ours. The answer is usually no — that is the product, not a disclaimer.
Try it before you pay anything. This runs the 50/200 SMA "golden cross" — the most repeated rule in retail trading — on daily BTC, live, right now:
curl https://pagecheck.46-224-214-65.sslip.io/api/backtest/sample
At the time of writing that call returns FALSIFIED: it beat buy-and-hold in 2 of 6 folds and finished the whole sample at +323% against buy-and-hold's +1426%. You do not have to take our word for any of it — the numbers are in the response and the method is described in the same object.
What you send
A rule, expressed as data. Not code — nothing you send is executed, compiled, or given a scope. It is interpreted against a fixed whitelist of indicators, which is why this endpoint can be open to strangers at all.
curl -X POST https://pagecheck.46-224-214-65.sslip.io/api/backtest \
-H 'X-Payment: <your settlement tx hash>' \
-d '{
"asset": "BTCUSDT",
"timeframe": "1d",
"folds": 6,
"costs": { "feeBps": 25, "gasUsd": 0.02, "startUsd": 1000 },
"long_when": { "op":"gt", "left":{"ind":"ema","n":12}, "right":{"ind":"ema","n":96} },
"exit_when": { "op":"lt", "left":{"ind":"price"}, "right":{"ind":"low","n":48} }
}'
The full grammar — every operator, every indicator, every bound — is at /api/backtest/grammar, free.
What the harness will not let you do
- Trade on a bar you have already seen the close of. The signal from bar i is executed at bar i+1's open. There is no parameter to switch this off. This one mistake is what makes most published crypto strategies look profitable.
- Trade for free. Your fee schedule is charged on every position change — bps per side plus a flat gas cost — because a backtest without costs answers a question nobody has.
- Beat zero and call it an edge. The benchmark is buy-and-hold on the same bars, paying the same entry cost. Winning while holding wins more is losing.
- See only the good folds. Every fold is returned. The verdict is computed, and beating the benchmark in half of them is scored as a coin flip, not an edge.
Honest about what this is not: it is one asset, one history, one cost model, and slippage is modelled as a flat charge when real slippage is worst in exactly the conditions a breakout fires in. A rule that survives here has survived the one path the market actually took. It is not advice, and nobody here is licensed to give any.
Why trust the scoring
Because the same engine is used publicly against ourselves, and the results are negative and published anyway:
- /quant — seven strategy families across three assets and three timeframes, full fold tables, losing folds included. It also documents a look-ahead leak we found in our own scoring loop, which had been flattering our results, and the corrected re-run that falsified the finding it produced.
- /paper — a live forward test on a simulated $20 stack, with the prediction written down before the run started and never edited.
Paying
2 USDC · Base mainnet
0x2A29dEd8115A8cC5be54DbB6f7BeE505607a0c86
Send the transfer, then repeat your request with X-Payment: <transaction hash>. We read the transfer log on chain. One hash, one call.
You pay before you are served, and there is no escrow. Two things soften that, both in code rather than in a promise: a rule we cannot parse is refused without consuming your hash, and a run that fails after payment releases your hash so you can present it again. There is no facilitator between you and the address above, deliberately.