Does the entry gate earn its refusals?
Final component audit · 30 September 2026 · frozen production-data rerun · equity-service b288f41
There is no Nifty-MA20 hard entry gate in production to remove. It was retired on 23 September. Nifty versus MA20 remains market context. The live blockers are rising universe breadth and a fresh computed status that is not DOWNTREND. The new component replay argues against restoring Nifty MA20 as a blocker, while breadth remains directionally useful but unproven.
What was actually tested
Production has two blockers: rising universe breadth and a present, fresh computed status that is not DOWNTREND. Nifty versus MA20 is measured and displayed but does not grant or refuse an order. Long price history can reconstruct breadth and Nifty versus MA20. It cannot reconstruct the historical distribution-day, rally-attempt and follow-through state machine. The long tests below are therefore component price tests, not a backtest of the complete production status gate.
Corrected results
| test | population | result |
|---|---|---|
| 20-session basket | strongest third, no portfolio | proxy-open −2.40pp · p=0.990 |
| Nifty MA20 only | 78 entry sessions | open −4.14pp · p=0.784 · CI [−15.61,+6.13] |
| breadth only | 78 entry sessions | open +5.64pp · p=0.135 · CI [−3.52,+14.66] |
| breadth + Nifty | 78 entry sessions | open +1.50pp · p=0.385 · CI [−9.68,+10.77] |
| V3 stop-outs | 109 admitted entries | 87.1% open-proxy · 96.2% shut-proxy |
| recent blocked setups | 270 deduplicated plans | 19.4% exited · 80.6% unresolved |
The corrected twelve-slot replay
The old replay opened twelve fresh names every session even when the book was full. The corrected replay keeps a slot occupied until exit, refuses an already-open symbol, uses the V3 8% stop and MA20 policy, and freezes the sample at 30 September.
| proxy state | n | mean | win % | stopped |
|---|---|---|---|---|
| open | 31 | +5.58% | 51.6% | 87.1% |
| shut | 78 | +2.40% | 38.5% | 96.2% |
At the session level, the combined proxy was open 27 days at +5.79% and shut 51 days at +4.29%: spread +1.50pp, t=0.31, permutation p=0.385, five-session block-bootstrap 95% CI [−9.68pp,+10.77pp]. The interval crosses zero by a wide margin.
The components answer different questions
Nifty MA20 alone was directionally harmful: open sessions averaged +3.01% against +7.14% when shut, a −4.14pp spread. It changed sign between halves (+4.92pp then −5.71pp), permutation p=0.784, CI [−15.61pp,+6.13pp]. This is not proof of harm, but it is evidence against making Nifty MA20 a hard blocker.
Breadth alone was directionally helpful: open sessions averaged +7.85% against +2.21% when shut, a +5.64pp spread. It stayed positive in both halves (+5.77pp and +8.41pp), permutation p=0.135, CI [−3.52pp,+14.66pp]. It has the most stable support of the tested price components, but the confidence interval still crosses zero.
The basket still disagrees
Across 190 sessions, the combined price proxy admitted 61 sessions at +0.71% and refused 129 at +3.11%: −2.40pp, p=0.990. A basket has no slot competition, stop or trailing exit, so it answers a different question from the policy replay.
The actual recent refusals
The earlier report counted 969 nightly rows as independent trades. The corrected command verifies the breadth/status refusal and deduplicates identical symbol, entry and stop plans. It found 912 blocked rows, reducing to 270 distinct plans across 86 symbols.
| outcome at 30 Sep | n | share |
|---|---|---|
| never triggered | 67 | 24.8% |
| exited | 36 | 13.3% |
| still open | 150 | 55.6% |
| no bars yet | 17 | 6.3% |
Of 186 fills, 19.4% had exited and 80.6% were unresolved. Exit returns averaged −7.45%; open marks averaged +2.40%. This is descriptive, not an expectancy estimate or control group.
Decision
Do not add or restore a Nifty-MA20 hard blocker. Keep the existing breadth and follow-through/status blockers unchanged while exact prospective evidence accumulates. New scans now persist the scanner's true rank, so the shadow comparison can use the same candidate order and twelve-slot allocation as production rather than reconstructing rank later.
Reproduce with backtest_gate_replay --gate-mode nifty|breadth|combined --shuffles 5000 --bootstraps 5000 --block-size 5 --as-of 2026-09-30. Each run uses 341 exchange sessions, 879 names, 109 capacity-constrained V3 entries and 78 independent entry sessions. The active universe is today's membership, so survivor bias remains. Historical computed DOWNTREND state is unavailable before it began being stored and is not inferred from Nifty MA20.