Learn / Explorer / KP Position Scanner
What happened historically?
Search KP combinations for a bias that survives out of sample
What happens when you check thousands of pairs at once?
The KP tab’s Heatmap crosses one pair of positions that you picked. This is the KP tab’s third view, and it checks thousands of pairs at once, then ranks the ones that look genuinely unusual.
Each candidate is scored against the same independence expectation (what that combination’s win rate would be if it carried no information beyond what each of its two positions already shows on its own) the Heatmap uses. Then it gets checked a second way. The most recent slice of history is held back from the search entirely and used only to see whether the pattern still points the same way on days the search never looked at. A result that only shows up in the years it was found in does not get presented as though it survived.
Judge by decides what “looks genuinely unusual” is measured against — direction by default, or a gap, a return, or volatility. Each choice reruns the whole scan and reports its own tested count, its own bar, and its own ranking.
When does a search beat a lookup?
When your question is “is there any KP combination with a real bias?” rather than a specific pair you already suspect. Checking pairs one at a time in the Heatmap could never answer that.
But checking thousands of combinations means some will look striking by chance alone. So results here are read against how many would look that extreme by chance, not against zero. Most of the time nothing clears that bar. That is not a broken scan — it is the honest answer to whether a pattern this deep holds up, and it is worth exactly as much as a positive result would have been.

How do you run a scan?
- 1
Market and session — shared with the other two KP views. The session still has no default, for the same reason as elsewhere.
- 2
Judge by picks what gets ranked. Direction by default — the scan ranks combinations by how far their win rate deviates. Switch it and the scan reruns against gap probability, a return, or volatility instead, with its own bar and its own count of how many combinations were checked.
- 3
Min days and min spans — the floor a combination must clear. Below either number a combination is treated as too thin to trust and never reaches the results table, however extreme it looks. Spans (separate unbroken stretches of matching trading days — 200 days in one unbroken run is one observation, not two hundred) catches the slow-moving positions that would otherwise pass on day count alone.
- 4
Z-minimum — how surprising a result has to look to be shown. Raising this only trims the table. It never changes how many combinations were tested or how many would be expected by chance — those numbers are fixed before this filter is ever applied, so tightening it cannot manufacture a better-looking headline.
- 5
Holdout fraction — how much history is held back to check the rest. The most recent slice of days is set aside and never used to rank a combination — only to check, afterwards, whether the pattern still holds on days the scan never saw.
- 6
Results shown — how many rows the table displays. Trims the table only; every combination is still scanned and counted.
- 7
Fast axes only — skip positions that barely move. On by default. A position that changes every year or two turns most of its history into a handful of long stretches rather than many independent occurrences — this keeps those out of the search rather than letting them crowd the results.
- 8
The disclosure banner — read this before the table beneath it. How many combinations were actually tested, how many would look this extreme by chance alone, and the bar a result has to clear once testing that many is accounted for — all specific to whichever factor Judge by is set to. The single most useful line on the page.
- 9
Click a row to open it in the Heatmap, highlighted. Jumps straight to that exact pair’s grid cell so you can see it in context — coloured against every other combination of those two axes, not just reported as a number in a table.
Where could a scan mislead you?
A null result here is the expected result, not a failure
Most scans find nothing that survives both checks — the multiple-testing bar and the out-of-sample holdout. That is what an honest search over thousands of combinations against a finite price history looks like. A scan that reliably found “significant” results at this depth would be a sign something in the method was wrong, not right.
The Z-minimum control only decides what is shown. The tested-count and expected-by-chance numbers in the banner never move when you raise it. Otherwise tightening the filter could quietly make the page look more convincing while the underlying evidence stayed exactly the same.
The likeliest way to misread this
Reading a green “holdout consistent” tick as proof. The tick only checks that the direction agreed — a lean that shrinks from a real effect in-sample to nearly nothing on holdout still passes the direction check. Read the holdout magnitude next to the tick, not the tick alone.
And whichever of the six things Judge by is set to — even 3-day return — this is still a measurement, not a trade. It says nothing about a specific entry rule, a stop, or a different market. A combination that clears every bar here is a reason to look closer, not a finished strategy.
That is every tab that groups days by where a planet sat. One is left, and it works from a different record altogether — the Panchang tab groups trading days by what the almanac called them, which for a lot of people is the most familiar way into all of this.
The standing caveat
Celestial Market Lens measures what markets did around historical planetary events. That is a description of the past. It is not a prediction, not a recommendation, and not investment, financial, legal or tax advice. Past results do not tell you what will happen next, and you are responsible for anything you do with money.