docs: sweep for the RTDS era, depth gate, curated set, gotcha 17-corollary + 18

System-today table: T0 RTDS detection (~1s) on both workers, own-fill push
+ depth gate on the real-money row, clone-guard note. Calibration section:
Set E rev 2 (5 wallets, drops explained, bench of 4 in backtest). Model
section: guard validation evidence + the depth-gate bullet. Data sources:
RTDS + CLOB user-channel rows. Gotcha 17 gains the 2026-07-12 corollary
(balance-diff is a fallback, one pending per token); gotcha 18 documents
the RTDS stream's two quirks (broken filters, silent-stale) and the
heartbeat-fields-over-boot-logs lesson. copybot.py docstring reflects the
layered trigger stack.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jaxperro
2026-07-12 23:39:17 -04:00
parent a0baeaf37a
commit 14aa3f67f1
2 changed files with 55 additions and 12 deletions
+9 -4
View File
@@ -3,13 +3,18 @@
Marries the two halves you already built:
* webhook_receiver.py's **push** trigger — Alchemy's Address-Activity webhook
POSTs here the instant a watched wallet transacts on Polygon. No polling.
* a layered **push** trigger stack — T0 is the RTDS trade stream
(`RtdsListener`: every platform trade, wallet-attributed, ~1s — README
gotcha 18), backstopped by Alchemy's Address-Activity webhook (~3s,
POST /alchemy), a 5-min backstop poll over per-wallet trade cursors,
and the reconcile janitor. The live bot also streams its OWN fills
(`UserFillsListener`) to adopt in-play holds the moment they match.
* copytrade.py's hardened **execution engine** — paper executor + the LIVE
executor on the unified SDK (`polymarket-client`; py-clob-client is
archived and the CLOB rejects its orders — README gotcha 16), risk gates,
absolute price guard, no-backfill seeding, proportional entry/exit
mirroring, and the pending-order registry for in-play `delayed` holds
absolute price guard, the depth gate (stake ≤10% of visible 5c ask
depth), no-backfill seeding, proportional entry/exit mirroring, and the
pending-order registry for in-play `delayed` holds
(gotcha 17: an accepted-but-held order is NEVER a rejection).
Flow: