uv(audit): append era decomposition (2026-07-11) to trade audit
Per Fable #f0fb09ff090feb1f: corrected UTC boundary (gate 08:43:47 CET = 06:43:47 UTC). Re-sliced cached pull by journal_ts. Verified: era A (incident tail 06:00-06:43:47 UTC) holds 1 of 180 BRIDGE rows (0 pairs, NET +0.00); era B (clean/certified) holds all 75 paired trades + all 25 bridged-no-venue rows, NET -758.48. Fable's hypothesis (era A carries most of -758) INVERTED — the full -758.48 is the certified-era number. 0 of 25 no-venue rows are incident-era; they are a clean-era reconciliation gap. No venue re-fetch. Rollback tag rollback_pre_PASS10_audit_era_20260711190153.
This commit is contained in:
@@ -246,3 +246,68 @@ after 06:00 — out of this audit's window, carried as context.
|
||||
*Generated from verified venue + ClickHouse pulls. Repro:
|
||||
`python3 /mnt/vp-PASS10/audit_venue_half.py && python3 /mnt/vp-PASS10/audit_analyze.py`.
|
||||
Read-only; VST sandbox only.*
|
||||
|
||||
---
|
||||
|
||||
## Era decomposition (2026-07-11)
|
||||
|
||||
**Correction applied:** Fable #f0fb09ff090feb1f — `dolphin_uv.exec_journal` timestamps
|
||||
are **UTC**; the fixed-runner gate went ACTIVE at **08:43:47 CET = 06:43:47 UTC**. The
|
||||
06:00 UTC audit window therefore contains two eras:
|
||||
|
||||
| Era | Window (UTC) | Meaning |
|
||||
|-----|-------------|---------|
|
||||
| **A — INCIDENT tail** | 06:00:00 ≤ ts < 06:43:47 | telemetry-skew: intents died synthetic-REJECTED in kernel |
|
||||
| **B — CLEAN / certified** | ts ≥ 06:43:47 | fixed registration + doctrine constants (the system we certified) |
|
||||
|
||||
Same join logic as §3–§4, re-sliced on `journal_ts` (bridge emission, UTC). No venue
|
||||
re-fetch — pure re-slice of the cached pull.
|
||||
|
||||
### Per-era P&L
|
||||
|
||||
| Era | Pairs | GROSS | FEES | FUNDING | **NET** | EnterSlip mean(bps) | ExitSlip mean(bps) |
|
||||
|-----|-------|-------|------|---------|---------|--------------------|-------------------|
|
||||
| A (incident) | 0 | +0.00 | +0.00 | +0.00 | **+0.00** | +0.00 | +0.00 |
|
||||
| B (clean) | 75 | -565.35 | +198.16 | +5.03 | **-758.48** | -24.35 | +14.56 |
|
||||
|
||||
### 25-row attribution (bridged, no venue fill)
|
||||
|
||||
| Era | Count | Interpretation |
|
||||
|-----|-------|---------------|
|
||||
| A (incident) | **0** | 0 — none of the 25 no-venue rows are in the incident tail |
|
||||
| B (clean) | **25** | 25 — all 25 bridged-no-venue rows are in the certified era |
|
||||
|
||||
**Hypothesis check (Fable original):** "era-A carries most of the -758; era-B is the
|
||||
number that judges the certified system." → **INVERTED by the data.** Era A contributed
|
||||
**+0.00** (1 bridged row, 0 pairs). The full **-758.48 NET is entirely era B**
|
||||
— i.e. the clean/certified system's own number. The certified-era bridge emitted 25
|
||||
intents that never produced a venue fill (see below) — a real gap, but NOT the incident.
|
||||
|
||||
|
||||
The only era-A BRIDGE row is a single joined **TRXUSDT SHORT ENTER** at `2026-07-10 06:15:51.657` (qty 1503.0000, venue px 0.332020, ref px 0.332600, enter slip -17.44 bps, commission -0.2495). Its EXIT lands at 09:38 (era B), so era A has **0 complete pairs**.
|
||||
|
||||
### Why the 25 are era-B, not era-A
|
||||
|
||||
Fable's working hypothesis was that the incident's synthetic-REJECTED intents would
|
||||
surface as the 25 no-venue rows. Verification: of 180 BRIDGE rows in the 06:00+ window,
|
||||
**only 1 falls in era A** (the TRXUSDT ENTER above). The incident tail barely touched
|
||||
the bridged set — either its intents died *before* journaling (never written to
|
||||
`exec_journal`), or the 06:00 cutoff already post-dates most of the incident. The 25
|
||||
unmatched rows all carry `ts ≥ 06:43:47` (e.g. DASHUSDT 11:04, ADAUSDT 18:51, CELRUSDT
|
||||
19:21, THETAUSDT/BANDUSDT 07-11 13:3x–14:4x). They are a **clean-era reconciliation gap**,
|
||||
distinct from the incident: the promotion bridge emitted the intent, but no FILLED venue
|
||||
order matches within (symbol, side, qty±2%, 5-min) — i.e. either never submitted to
|
||||
BingX, or submitted-and-rejected at the venue for a clean-era reason (size/price/risk),
|
||||
or a partial-fill/orphan-side artifact (several show ENTER/EXIT qty mismatch, e.g.
|
||||
THETAUSDT ENTER 3300.331 vs EXIT 3298.153; BNBUSDT EXIT 0.861 with no matched ENTER).
|
||||
Root-cause (submission vs venue-reject) needs the runner/bridge submit logs — out of
|
||||
scope for this read-only audit.
|
||||
|
||||
### Bottom line
|
||||
|
||||
- **NET (clean/certified era B) = -758.48 USDT** — this is the number that judges
|
||||
the system we actually certified.
|
||||
- **NET (incident era A) = +0.00 USDT** — negligible; the incident tail is
|
||||
essentially absent from the bridged trade set.
|
||||
- Fees dominate drag in both eras (~10 bps, matches BingX taker). Enter slippage is
|
||||
systematically adverse (mean ≈ -24 bps) in era B.
|
||||
|
||||
Reference in New Issue
Block a user