Crucible
Stays on device

Your edge isn’t in every trade.Find where it lives.

Your strategy fired on hundreds of trades. Some won, some lost. Crucible looks for what the winners had in common, scores every trade out of 100, and checks whether skipping the low scorers would actually have helped.

You bring every trade your rules fired before you applied any entry filters, winners and losers both, with the conditions at entry: RSI, distance from the 200-day, time of day, whatever you record. A model learns which of those separated your winners, and the answer is tested on the newest third of your history, which it is never allowed to see.

This is the tool, running now

Not a screenshot. Two SPY strategies, both fired on real prices going back to 1993, both scored in your browser as this page loaded. One of them holds a filterable edge and one of them does not. The tool says which, and the tab tells you what it concluded before you press it.

SPY · buy the gap up · 1993–2026 · 939 trades

Fitted on the first 657, tested on the last 282

10 factors read at entry, every one named below.

Every trade gets a Trade Quality Rating, 0–100. Where do you draw the line?

57

It opened at 57, the line that made the most money on the trades the model learned from, once its worst losing run was counted against it. Nothing has tested that yet. The panel below does.

It counts at half weight on purpose. Trading less always smooths the ride, so counting it in full would only ever argue for fewer trades. Here it made no difference: 57 is also the best line on money alone.

In-sample · 657 trades
↕ trades in each band
Out-of-sample · 282 trades
↕ trades in each band
050100
Trade Quality Rating, low to highwinslossesfaded = below the line
In-sample· the model learned here
Expectancy
0.13%
+0.04
Total return
77%
+17.4
Max drawdown
19%
−11.2
Profit factor
1.28
+0.08
Win rate
62%
+0.7
Trades kept
603/657
Out-of-sample· never seen by the model
Expectancy
0.18%
+0.03
Total return
47%
+5.5
Max drawdown
12%
−3.2
Profit factor
1.55
+0.14
Win rate
64%
+0.7
Trades kept
260/282

Small figures compare trading only above the threshold against taking every trade.

The out-of-sample half gained too: better per trade and more money over the same period, keeping 260 of the 282 trades the model never saw. This is the stretch of the dial where filtering has actually earned something, and 260 trades is still what any conclusion would rest on.

What separated the winners from the losers

what the model learned from the first 657 trades, not what the out-of-sample half confirmed
down_days_in_a_row
distance_from_sma_50
distance_from_high_20
rsi_14
overnight_gap
above_sma_200

4 more barely moved it: distance_from_sma_200, volume_vs_average, above_sma_50, volatility_20_day.

Right means higher values went with winners; left, with losers. Longer means it mattered more. Lengths are comparable, even though these factors are in different units.

That slider is how overfitting happens, and you have just done it. It opened on a threshold chosen from the in-sample half alone. Every notch you moved while watching the lower panel picked a number using the out-of-sample half instead of testing against it, so whatever it reads now has been tuned until it looked right rather than checked. The control is in your hands on purpose.

Your own log is handled the other way round, and there is no slider. The threshold is chosen in-sample, and the out-of-sample half is spent once, testing it. You leave with a line the out-of-sample half supports, or with one of the two findings most tools bury: that filtering changes nothing, or that no edge was found here at all.

Test your strategy

No log to hand? Run it on any of six reference strategies first. No account, and nothing to prepare.

A strategy is not one thing

Most people hold a strategy in their head as a single object that either works or does not. Its trades say otherwise.

  1. 1

    Your rules fire in conditions they were never designed for

    A mean-reversion entry does not know whether it is firing into a quiet drift or the second day of a crash. The rule is the same. What happens next is not.

  2. 2

    So the trades are not interchangeable

    Sorted by what the entry actually looked like, most strategies have a good half and a poor half. That is not a flaw in the strategy. It is what a fixed rule meeting a moving market produces.

  3. 3

    The question is whether the difference was visible at entry

    Anyone can separate winners from losers afterwards. Crucible only uses what you could have known at the entry bar, and only trusts the answer if it survives on trades it never saw.

Built to disappoint you when the data says so

Most tools in this market are built to find something. Crucible assumes there is nothing until your data proves otherwise, which is what the second tab above is. It is just as plain about what it cannot answer, and three of those are worth knowing before you upload anything.

Whether your strategy is profitable

It answers one question: does filtering on entry conditions improve what you make per trade? A profitable strategy can have nothing worth filtering, and a losing one can have a strong filter sitting on top of it.

Whether you logged everything

A cherry-picked log is the one input problem with no statistical repair. The tool watches for the one tell it can see, an implausibly high win rate. A carefully incomplete log walks straight past it.

Every shape of edge

The model reads each factor as pushing one way: more is better, or less is. An edge at both extremes of a factor, or one that only appears where two coincide, is invisible to it. So “no edge found” means not found in the shape this model holds. It never means “not there”.

There are more, and they are not hidden. How it works sets out what the model can and cannot see, including how to feed it a shape it would otherwise miss. Every result you run carries the ones that apply to your own log, beside the numbers they qualify, where a limit is worth something.

Free to find out

The verdict: free

Log your history, see the stats, and find out whether those trades carry a filterable edge, including when the answer is no and when there are too few trades to say. No account, and the work happens in your browser.

The report: paid

One strategy, one report: the threshold itself, the trade scoring formula, which factors carried the separation, and the before/after in the out-of-sample window. While the tool is being tested, everything is free.

You already have the data

Every trade your rules fired, wins and losses both. That is the whole input. Crucible tells you whether those trades hold a filterable edge, and says so plainly when they do not.

Test your strategy

Or run it on one of six reference strategies first. No account, nothing to prepare.