Confidence is not calibrated and does not discriminate — see the calibration panel. Never read it as a probability.
Both lookback sets are computed every tick. D2 is open — which one should trade is unresolved, so both are shown rather than only the active one.
| Window | Dir | Range | Vol | Chop | Ticks |
|---|---|---|---|---|---|
| No cycles yet | |||||
A measure-only gate still evaluates, still tallies, and still writes a
blocked_signals row via the sentinel — so its cohort keeps accruing on the
same population it would block, which is what makes the eventual flip an
apples-to-apples before/after. Trips must reconcile to rows; a divergence is a
write-gap — the reconciliation sits in the gate-stack table below. A gate stuck at
zero is a dead gate, not a safe one.
RESOLVED WR is the only win rate on this row that sits on the settlement
basis — it is COALESCE(venue_outcome, true_outcome). Even so, read it
against the mean entry ask in the calibration panel: a share priced p wins
p of the time at fair value.
EDGE is the only number here that means anything. A binary share priced p
wins p of the time at fair value, so a 90%-WR strategy buying 92¢ shares is losing.
The predecessor's standing conclusion after four months was "no internal metric beats
the market price" (price Brier 0.196 vs model 0.294 — model confidence scored worse
than a constant base-rate predictor). Treat that as the null hypothesis.
⚠️ Check turnover before reading a trend: each step replaces only ~1/n of the
window, so consecutive readings share most of their rows and cannot be noisy.
Reading a smooth decline as signal is a mistake already made once, at cost.
These are the env-resolved values the code is actually using, not the
defaults in the source. A stale secret overriding a new default cannot hide here, which
is the whole reason this panel exists. Read the interaction too: the venue's
MIN ORDER SHARES minimum makes the top of the entry band physically
unplaceable when MAX POSITION is set too low, and nothing errors when it
happens.
A tripped breaker stops trading only. Signal, block and skip logging continues 24/7 — the counterfactual log is the core asset and must never have a hole.
| Label | N | WR | Edge |
|---|---|---|---|
| Loading... | |||
Nothing gates, sizes or de-risks on this label, and porting it is not
an opportunity to skip ahead to gating on it. A label that never fires is a dead gate,
not a safe one — an unreached label means the thresholds were fit to an era that has
ended. Re-run analyze_regime.py.
The operator needs both views, not a choice between an
authoritative-but-thin one and a rich-but-locally-computed one. They are expected to
disagree — that disagreement is settlement_mismatch, a measurement rather
than a fault. Net and gross differ by exactly the fees, and the fees are the whole
maker thesis.
| Time | Mode | Unexplained | Our CPU | RSS | load1 | steal | PSI cpu |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
Read the unexplained column, not the wall clock.
unexplained = signal_to_exec − maker_wait; a 25-second stall once hid for a
full version in the gap between the first two timers because the maker wait absorbed it.
Rows appear only above the threshold, so the fast path stores nothing — a missing row
means fast, not unmeasured. A long wall at ~0% CPU is waiting on the
network; at ~100% it is compute-bound. An absent steal/PSI key means the guest
kernel cannot see that counter, which is itself the finding — they are never
zero-filled.
| # | Gate | Mode | Class | Trips | Hard | Soft | Rows |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
| Window | Open | Close | Net | Range | Local | Venue | Ticks |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
Venue outcome is read from Polymarket's own resolved market. Red rows are basis mismatches — our open-to-close call disagreed with settlement. That rate IS the settle-basis haircut, measured rather than assumed at ~10pt.
| Loading... |
Drift = fill − gate ask, the three prices co-located on one row so this is a subtraction, not a fragile join. Cost is the ACTUAL filled cost, not the intended stake. A band flag means an out-of-band fill was recorded rather than dropped — that is correct behaviour, not a defect: a safety net that discards a real fill is worse than no net.
| Time | Dir | Grade | Conf | Ask | EV | Size | Status | Resolved | Legacy |
|---|---|---|---|---|---|---|---|---|---|
| Loading... | |||||||||
Resolved = COALESCE(venue_outcome, true_outcome) —
open-to-close, the settlement basis. Legacy is the entry-to-close column kept only
for continuity; it disagrees ~30% of the time and must never be used for a rate.
| Time | Dir | Blocked by | Detail | Mode | Grade | Ask | WW local | WW venue | ↓Gates |
|---|---|---|---|---|---|---|---|---|---|
| Loading... | |||||||||
READ THE VENUE COLUMN. WW local is our own open-to-close
scoring and WW venue is what Polymarket actually paid. They disagree on 26% of
resolved rows, one-directionally, which reads as ~13pt of edge that is not there. Local
stays visible only so the two can be compared.
WW is an UPPER BOUND. ↓Gates is how many gates run AFTER this one —
a would-have-won figure is meaningless until you subtract them. Doing so once turned a
66.6% headline into 50.8% on the part that would actually have traded, and that +1.3pt
goes negative after the haircut.
| Time | Dir | Grade | Conf | Armed | T-minus | Ask | WW |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
An alert is not a trade signal. The alert fires on any directional
reading near the close; the lock only arms when confidence and grade clear their
bars, and armed is what separates them. The lock exists because grade is
recomputed fresh every tick, so a wick or momentum flip between alert and gate can drop
A→B and kill a signal that was genuinely strong at detection.
Select a scope and click GENERATE.
The same text !report returns in Discord and
python reports.py <mode> <db> prints at the CLI — one generator,
three surfaces. Two implementations of "the report" drift, and then two people looking at
it are looking at different numbers.
Exports the table picked in the header selector. Dates are the bot's Eastern dates, the same ones the rows are stamped with. Every analysis script here runs read-only against a pulled snapshot, never the live file. The version filter is the era-split axis; a sign flip across eras is disqualifying on its own.