From 2ee8e79d000750d79903973c865757b554dda0fe Mon Sep 17 00:00:00 2001 From: jaxperro Date: Mon, 22 Jun 2026 14:55:43 -0600 Subject: [PATCH] rename timing "insider" verdict -> "last-minute" (honest label) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lead-time gate in validate_timing.py is a COPYABILITY heuristic, not proof of inside information: a short entry->resolution lead can be a genuine insider OR just someone who trades fast-resolving markets (live sports, hourly) well — indistinguishable, and irrelevant for copy purposes since either way the window is too tight to mirror. Rename the verdict accordingly. Gate unchanged (median lead >=24h to count as a copyable sharp; 50 sharps). Docs updated to current p80 numbers (218 profile matches, 62/83 forward-profitable, 50 sharps). The genuine insider-detection scanner (insider.py, z-score / Bubblemaps fingerprint) keeps its name — that's a different, correctly-named thing. Co-Authored-By: Claude Opus 4.8 --- FINDINGS.md | 22 +++++++++++++--------- README.md | 7 ++++--- live/README.md | 8 +++++--- live/validate_timing.py | 17 ++++++++++------- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/FINDINGS.md b/FINDINGS.md index e6b3fa04..2d2767f7 100644 --- a/FINDINGS.md +++ b/FINDINGS.md @@ -179,17 +179,21 @@ validate June) under p80 finds **218 wallets** matching the profile; forward, (The original flat-$200 run found 69 wallets, 25/37 forward, +11.7%.) Then the decisive copyability filter, `live/validate_timing.py`: a near-100% win -rate is either foresight (copyable) or last-second information (uncopyable). The -tell is **entry->resolution lead time on winning conviction bets**. Of the 69, -**21 were insiders** (median lead < 6h — you can't mirror them), leaving **23 -validated copyable sharps** (`watch_sharps.json`) with multi-day leads. The -standout `0x60ec1744…` held 80% win over **1,017 forward conviction bets**; even -the suspiciously-perfect `0x72e1…` (99/100% win) enters ~7 days early — a real -forecaster, not an insider. These 23 are surfaced live on jaxperro.com/trading. +rate is only useful if we can mirror it. The tell is **entry->resolution lead +time on winning conviction bets** — this is a copyability heuristic, NOT proof of +inside information (a short lead can be a genuine insider or just someone good at +fast-resolving markets; we can't tell, and for copy purposes it doesn't matter). +Of the 218, the gate drops the **"last-minute" wallets** (median lead <24h — you +can't get the trade in before resolution), leaving **50 validated copyable sharps** +(`watch_sharps.json`) with multi-day leads. The standout `0x60ec1744…` held 80% +win over **1,017 forward conviction bets**; even the suspiciously-perfect `0x72e1…` +(99/100% win) enters ~7 days early — a real forecaster, clearly not last-minute. +These 50 are surfaced live on jaxperro.com/trading. *Lesson: score conviction bets, not all bets; require avg entry ~0.4-0.6 (edge, -not favorites); and gate on lead time to drop insiders. That funnel produces a -copyable, forward-validated set — the strongest evidence in this project that +not favorites); and gate on lead time to drop last-minute (un-mirrorable) wallets. +That funnel produces a copyable, forward-validated set — the strongest evidence in +this project that followable skill exists.* ## Repo layout diff --git a/README.md b/README.md index 2aeea5dc..5399372b 100644 --- a/README.md +++ b/README.md @@ -194,9 +194,10 @@ win rate ≠ edge, again. (The `value`/longshot archetype — wallets that beat **What does work (the repeatable find).** Scoring wallets on their **high- conviction bets — the top 20% by stake size (per-wallet p80, not a flat $200)** — which win 70–80% on genuinely-uncertain (~0.4–0.6) -markets — trained pre-June and validated June: **25/37 stayed profitable forward -(p=0.024)**. A lead-time gate (`validate_timing.py`) then drops the ~30% that are -uncopyable insiders (entry <6h before resolution), leaving **23 validated +markets — trained pre-June and validated June: **62/83 stayed profitable forward +(p≈0)**. A lead-time gate (`validate_timing.py`) then drops wallets whose wins come +too close to resolution to mirror — "last-minute" entries (median lead <24h), which +may be genuine insiders or just fast-market specialists — leaving **50 validated copyable sharps** (`watch_sharps.json`), surfaced live on [jaxperro.com/trading](https://jaxperro.com/trading). One held **80% win over 1,017 forward bets**. This is the strongest evidence in the project that diff --git a/live/README.md b/live/README.md index 70381227..5a0114a8 100644 --- a/live/README.md +++ b/live/README.md @@ -83,11 +83,13 @@ The per-wallet cutoff reproduces flat-$200's win-rate lift while adapting to eac wallet's scale (a whale's $200 bet isn't conviction; a minnow's is). - `conviction_scan.py` — train pre-June / validate June on conviction bets → - 69 matches, **25/37 profitable forward (p=0.024)**. → `conviction_wallets.json`. + 218 matches, **62/83 profitable forward (p≈0)**. → `conviction_wallets.json`. - `validate_timing.py` — the copyability gate: entry→resolution **lead time** on winning conviction bets separates copyable sharps (multi-day lead) from - uncopyable insiders (<6h). Drops 21 insiders → **23 validated copyable sharps**. - → `watch_sharps.json` (shown live on jaxperro.com/trading). + "last-minute" wallets (median lead <24h) we can't mirror in time — could be + genuine insiders or just fast-resolving-market specialists, can't tell which. + → **50 validated copyable sharps** in `watch_sharps.json` (shown live on + jaxperro.com/trading). Identifiers for a follow-worthy wallet: on its **≥$200 bets** — win ≥65%, avg entry 0.35–0.70 (edge, not favorites), +copy-ROI, FDR-significant, **median lead diff --git a/live/validate_timing.py b/live/validate_timing.py index f15e3abd..20d3b255 100644 --- a/live/validate_timing.py +++ b/live/validate_timing.py @@ -1,11 +1,14 @@ #!/usr/bin/env python3 -"""Insider-vs-sharp check on the standout conviction wallets. +"""Last-minute-vs-sharp check on the standout conviction wallets. -A near-100% win rate is either genuine foresight (copyable) or information / -last-second entry (uncopyable insider). The tell is entry->resolution lead time -on their WINNING conviction bets: - * mostly < 1h before resolution -> insider/news-reaction, you can't follow it +This is a COPYABILITY heuristic, not proof of inside information: a near-100% +win rate is only useful to us if we can actually mirror it. The tell is entry-> +resolution lead time on their WINNING conviction bets: + * mostly < 1h before resolution -> last-minute, you can't follow it in time * hours-to-days of lead -> a sharp you could actually mirror +A short lead can mean a genuine insider OR just someone who trades fast-resolving +markets (live sports, hourly) well — we can't tell which, and for copy purposes +it doesn't matter: either way the window is too tight to mirror. """ import json @@ -30,7 +33,7 @@ def lead_profile(w): return None med = st.median(leads) u6 = sum(1 for l in leads if l < 6) / len(leads) - verdict = ("insider" if (med < 6 or sum(1 for l in leads if l < 1) / len(leads) > 0.5) + verdict = ("last-minute" if (med < 6 or sum(1 for l in leads if l < 1) / len(leads) > 0.5) else "borderline" if med < COPYABLE_MED_LEAD else "sharp") return dict(n=len(leads), med=med, u6=u6, verdict=verdict) @@ -66,7 +69,7 @@ def main(): f"{fw:>7}{fr:>7}{c['fwd_n']:>5} {c['wallet']}") json.dump(sharps, open(os.path.join(HERE, "watch_sharps.json"), "w"), indent=2) - print(f"\n-> watch_sharps.json ({len(sharps)} copyable sharps, insiders filtered out)") + print(f"\n-> watch_sharps.json ({len(sharps)} copyable sharps, last-minute wallets filtered out)") if __name__ == "__main__":