Files
jaxperro 50f1f0ae12 research: maker_sharps (T2) + sibling_sum_scan (T4) exploratory passes
T2: the maker species is real and distinct — 673 wallets clear the taker
screen's z>=2.5 discipline on the orders_matched stream (~33 expected by
chance), pooled +$5.9M over 47,693 resolved bets in ~6 tape days; only
96/673 overlap the taker informed set, 3/37 watch_sharps. Not copyable by
taking (their edge IS the spread) — follow-ons: inventory-lean signal,
T1 generic maker sim.

T4: print-substrate sibling-sum scan reads 2.8%/1.5% violation minutes but
the top examples expose the artifact (resolution-time dust prints at bids,
not standing offers); persistence p50 1min. Verdict: inconclusive at v0,
needs standing-book data (L2 recording / live paired scanner) — parked
behind the T1 decision.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:57:19 -04:00

97 lines
4.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""T2 EXPLORATORY (2026-07-23) — maker-sharp selection: mine the maker side
of every match (aux orders_matched, ~6M wallet-attributed rows the screens
have never touched). Do improbably-winning MAKERS exist — the species
farming the crater wall — and are they a distinct, followable cohort?
Method mirrors the taker screen (study_flow.informed_set): per wallet-asset
net maker position (maker BUY = resting bid filled), entry vwap, resolved
via tape proxy (chain-validated 742/742 method); wallet improbability
z = (wins Σp)/sqrt(Σp(1p)) on n≥6 resolved bets with net≥5sh, vwap in
[0.05,0.95], pnl>0; z≥2.5 qualifies. Readouts: cohort size, top wallets,
overlap vs the taker informed set + watch_sharps (distinct species?),
pooled per-bet EV of qualifying makers' resolved bets. NOT pre-registered;
a forward table row + copyability (lag) study only if a cohort exists."""
import json
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import tape # noqa: E402
HERE = os.path.dirname(os.path.abspath(__file__))
SET_MIN_Z, SET_MIN_BETS = 2.5, 6
def main():
db = tape.connect()
tape.build_resolved(db)
rows = db.execute("""
WITH mk AS (
SELECT lower(json_extract_string(payload,'$.proxyWallet')) wallet,
json_extract_string(payload,'$.asset') asset,
json_extract_string(payload,'$.side') side,
cast(json_extract(payload,'$.price') AS DOUBLE) price,
cast(json_extract(payload,'$.size') AS DOUBLE) size,
any_value(json_extract_string(payload,'$.name')) OVER
(PARTITION BY lower(json_extract_string(payload,'$.proxyWallet'))) nm
FROM aux WHERE type = 'orders_matched'
), bets AS (
SELECT wallet, any_value(nm) nm, mk.asset,
any_value(tk.payout) payout,
sum(CASE WHEN side='BUY' THEN size ELSE -size END) net,
sum(CASE WHEN side='BUY' THEN size*price END)
/ nullif(sum(CASE WHEN side='BUY' THEN size END),0) vwap
FROM mk JOIN res_tok tk ON mk.asset = tk.asset
GROUP BY wallet, mk.asset
HAVING net >= 5 AND vwap BETWEEN 0.05 AND 0.95
)
SELECT wallet, any_value(nm), count(*) n,
sum(CASE WHEN payout=1.0 THEN 1 ELSE 0 END) wins,
sum(vwap) exp_w, sum(vwap*(1-vwap)) var_s,
sum(net*(payout - vwap)) pnl,
avg(vwap) avg_entry, sum(net*vwap) staked
FROM bets GROUP BY wallet
HAVING n >= ? AND var_s > 0
""", [SET_MIN_BETS]).fetchall()
print(f"maker wallets with >= {SET_MIN_BETS} resolved conviction-ish "
f"positions: {len(rows)}")
scored = []
for w, nm, n, wins, exp_w, var_s, pnl, avg_e, staked in rows:
z = (wins - exp_w) / (var_s ** 0.5)
if z >= SET_MIN_Z and pnl > 0:
scored.append((z, w, nm, n, wins, pnl, avg_e, staked))
scored.sort(reverse=True)
print(f"qualifying maker-sharps (z>={SET_MIN_Z}, pnl>0): {len(scored)}")
# overlap with the taker screens
taker = set()
try:
d = json.load(open(os.path.join(HERE, "params", "informed_set.json")))
taker = {x.lower() for x in d["wallets"]}
except Exception:
pass
watch = set()
try:
for r in json.load(open(os.path.join(
os.path.dirname(HERE), "live", "watch_sharps.json"))):
watch.add(r["wallet"].lower())
except Exception:
pass
ol_t = sum(1 for z, w, *_ in scored if w in taker)
ol_w = sum(1 for z, w, *_ in scored if w in watch)
print(f"overlap: {ol_t} in taker informed set (n={len(taker)}) · "
f"{ol_w} in watch_sharps (n={len(watch)})")
pooled_pnl = sum(s[5] for s in scored)
pooled_n = sum(s[3] for s in scored)
print(f"cohort pooled: {pooled_n} resolved bets · "
f"${pooled_pnl:+,.0f} maker pnl\n")
print(f"{'z':>5} {'name':<20} {'bets':>5} {'wins':>5} {'hit':>5} "
f"{'pnl':>10} {'avg entry':>9}")
for z, w, nm, n, wins, pnl, avg_e, staked in scored[:15]:
print(f"{z:5.1f} {(nm or w[:12]):<20} {n:>5} {int(wins):>5} "
f"{wins/n:>5.2f} {pnl:>+10,.0f} {avg_e:>9.2f}")
if __name__ == "__main__":
main()