For Agents
Living index of themes for this project. Each H2 is a topic; bullets are wikilinks to related notes. Updated by
obsidian-documenterwhen documenting work. Read byhistorianat bootstrap. Topics kept alphabetical.
15m Expansion
-
crypto-shortterm-algo-accuracy-audit-2026-07-02 — 15m benching STARTED (2026-07-02, Andras go):
window_secsinAssetConfig(Btc15/Eth15 @900s), observe-only recording live; emit hard-refuses non-300s assets at boot — no 15m money path until a fresh 15m calibration passes its own full deflated-bar gate; band DERIVED from our own data, not copied from the tape. -
crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03 — 15m tape verdict (2026-07-03): NO +EV seed for the 15m gate. The competitor’s late-window band (BTC cushion≥5bps τ≤300s) is real on HIS entries (+3.75¢/window, dose-response 90.7/94.5/98.9) but mechanically dead on the population (all 3,613 windows: window-selection ceiling ≈0, side/timing gap ~3pp, matched-cushion mechanical EV −1.1¢ [−2.7,+0.6]); v1 “+7.5¢” was selection lookahead, blended “+4.5¢” an aggregation artifact. Capture requires a fresh 15m calibration model (side/timing); deploy #1014 (btc15/eth15 observe) is the bottleneck; tape priors only: late>mid, cushion dose-response exists, eth-15m adversely selected (−$22k), pre-window dead.
-
crypto-shortterm-15m-observe-nogo-2026-07-06 — 15m = efficiently priced, NO tradeable regime (early NO-GO, 2026-07-06): our own btc15/eth15 observe (332 windows each, 5d) — the fair-value model HAS strong signal (p_fair monotonic; conviction ≥0.80 → 98% up; under-confident tails like 5m), but the market ask ≈ actual win rate across the ENTIRE τ curve (0.95–0.98 vs 0.98–1.0; real_edge ±1% everywhere) → no τ pocket where the ask lags (unlike 5m’s [60,150)s). The two bigger apparent edges are unreliable (<120s execution-impractical; 600–720s n=290 thin, contradicts prior tape). Don’t build a 15m money lane; keep the observe container banking data — the population confirmation of the competitor-tape 15m verdict.
-
crypto-shortterm-fill-space-closed-15m-pivot-proposal-2026-07-18 — 15m offline gate PROPOSED as the primary pivot (2026-07-18, PENDING decision — no decision taken): btc15/eth15 observe verified running since 2026-07-02 19:45Z (not 07-09) = 1,490 windows/asset, 96/day, outcomes 100% settled, both books ≥94% populated → an offline 15m gate is runnable now (thin: 2 assets, ~2.7-day purged folds). Proposed W2: fresh fit-then-frozen 15m calibration (days 1–5), its OWN band + ask cap (do NOT inherit 5m τ∈[60,150)s /
EMIT_MAX_ASK), ONE confirmatory test, honest fills, deflated bar. Existence proof to beat: the [[crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03|competitor’s btc-15m late band +3.8¢/share CI[+2.2,+5.4] at HIS fills]] (a ~1s taker like us); refutation to overcome: mechanical trigger −1.1¢ (his edge = side/timing SKILL; our candidate replacement =p_cal, 94% side-agreement on 5m). Emit’s 15m block is a one-line compiled guard (emit.rs:86-93), gated on a validated 15m calibration+regime, never before. Sharpens the early 15m NO-GO (re-derive the band, don’t copy 5m). -
crypto-shortterm-15m-resite-premise-falsified-2026-07-21 — 15m re-site PREMISE FALSIFIED; exit rule FIRED; SHELVE recommended (grounding-pass verdict, 2026-07-20/21 — SUPERSEDES the 07-18 proposal’s conclusion): three read-only passes killed the pivot before any build. Pass A — the conviction gate
|p_fair−0.5|≥0.30 ∧ τ≤300ssaturates 15m (~98% of 1,733 windows/asset qualify) at first-qualifying asks 0.96–0.97 (worse than the 5m τ∈[150,300) trap). Pass B — the competitor’s cushion band ([5,10)bps, τ≤300s) IS priced at his-era levels on our books (btc15 median ask 0.875 n=878; eth15 0.800 n=788) = the only non-dead pocket found. Pass C (decisive) — true CLOB backfill of all 3,131 first-trigger windows (slug→conditionId→tokens[].winner, 0.03% miss): EVERY cushion bucket net-negative on both assets; pooled own-ask EV −1.14¢ CI[−3.0,+0.5]; calibration +1.6¢ in-sample flips −2.2¢ OOS (n=1,209) both assets. The near-breakeven was LABEL ERROR — on-chainresolved_updisagrees with CLOB on 18–23% of near-ties; true near-tie win 0.63–0.69 (~coinflip), not 0.77; the competitor’s +3.8¢ was a selection ceiling, our books price his pockets fee-negative. Durable method: (a) 15m label trap — near-ties 22–31% of late-window populations,outcomeshas nocondition_id→ CLOB backfill mandatory for 15m scoring; (b) 07-09 fill-regime break (4–7%→13.6%→27–35%);pm_fak_attemptsis in pmv2’s schema (the 07-03 spec qualifier is wrong). Retractions:p_caldoes NOT replicate his side skill (94% = mechanical side); eth15 not co-primary (his eth-15m lost 14.4k,TAKER_REBATErows exist)**. Reopeners: faster PM path, venue change, new non-repriced auto-settled family, or a non-latency-locked signal.
Backtesting & Validation
- crypto-shortterm-maker-sim-gate-build-complete-2026-07-22 — maker-sim gate harness BUILT + reviewed, READY-FOR-GATE-RUN (2026-07-22; gate runs blocked on infra-VM data fetches, lane stays SHELVED):
crates/analysis/src/bin/makersim.rs(quote engine on lagged snaps; pessimistic bracketed fill engine adverse-certain/at-quote φ=0.25; inventory cap ±3 hold-to-settlement; day-clustered bootstrap z; fixed 48-config grid; 15/15 tests, clippy/fmt clean, deterministic) + three fixture-proven fetch scripts (makersim_resolve_markets/clob_winners/tape_backfill+makersim_commonDRY). Review caught 2 bugs in the plan’s OWN reference code (unsorted-prints self-inconsistency → stable sort; unresolved-CLOB silent Down-label → exactly-one-winner guard). Pre-registered before any data: 0-print windows COUNT in the bootstrap denominator (survivorship). Fee verdict: live 5m advertisesmaker_base_fee=1000==taker_base_fee→maker_fee_zero:false→ the 0.07-charged variant is the PRIMARY gating number (a maker posture does NOT escape the fee). Pre-committed chain: Task 8 sanity STOP → Task 9 KILL if nolag==1config reaches z≥3.07 pessimistic 0.07-fee → Task 10 single confirmatory. A pass clears only the gate; a separate Phase-2 decision is required before any live posture. - crypto-shortterm-maker-sim-gate-spec-grounding-2026-07-22 — grounding for the proposed maker-sim gate study (v2, pending review); establishes that CLOB
tokens[].winnerbackfill is mandatory for ALL scored 5m windows (53% near-tie rate makesresolved_upunusable at 5m) - crypto-shortterm-15m-resite-premise-falsified-2026-07-21 — the “offline +EV” 15m gate DIES on true CLOB labels; the honest-fill harness was never needed (2026-07-20/21): the full CLOB backfill of 3,131 first-trigger windows shows every cushion bucket net-negative (pooled own-ask EV −1.14¢ CI[−3.0,+0.5], calibration +1.6¢ in-sample → −2.2¢ OOS n=1,209 both assets). Method lesson: the “near-breakeven” was on-chain LABEL ERROR —
resolved_upvs CLOB winner disagree on 18–23% of near-ties (near-ties are 22–31% of late 15m populations), true near-tie win 0.63–0.69 not 0.77; off near-ties CLOB vssign(settle−k)agree 99.1%.outcomeshas nocondition_id→ a CLOB backfill (slug→conditionId→tokens[].winner) is MANDATORY for any 15m EV measurement. Fires the pre-committed exit rule → shelve recommended; the same on-chain-optimistic mask that inflated every 5m study, here manufacturing a fake tradeable 15m pocket. - crypto-shortterm-backtesting — causally-typed core (structural anti-leakage), purged/embargoed walk-forward, trial ledger + deflated Sharpe, exec-sim/fault-injection/dry-run/canary, Phase-0 calibration/basis/depth analysis.
- crypto-shortterm-phase0-codebase-complete —
analysisreport-gen now runs (phase0-report.md); first thin read (basis ≈ -$40, empty-book 0.98-spread); go/no-go is data-gated. - crypto-shortterm-phase0-edge-analysis — live edge analysis on 129k rows / 530 windows: calibrated overall +7.28% avg net PnL, 54.4% hit, Sharpe 0.17; best τ-bucket (0–30s) +19.46%; raw baseline +2.08%. VERDICT: PROMISING but NOT confirmed — T19 OPEN, likely near-expiry leakage (positive +2% baseline = systematic bias; edge concentrates in the 0–30s leakage zone; optimistic fills). Directional signal real; tradeable edge unproven.
- crypto-shortterm-phase0-validation — T19 OPEN — offline edge confirmed, live-capturability UNCONFIRMED (2026-06-12): three-pronged leakage debunk (validate.rs, 198,733 rows). ≥60s gated strategy +1.61%/trade (0 slip), +0.81% (1% slip); ≥60s baseline −3.21% (so +2.08% was 0–60s leakage — resolved). Real OFFLINE edge survives, but optimistic top-of-book/1s-stale fills overstate a latency edge, it’s slippage-fragile, single split. Remaining gates: purged walk-forward + deflated Sharpe/t≈3; depth/capacity read (needs recording sizes); decisive forward paper-trade.
- crypto-shortterm-phase0-walkforward — T19 OPEN — purged K=6 walk-forward (2026-06-12): 219,688 rows / 899 windows; 750 OOS windows; τ≥60s, 1% slip; t-stat 1.46 < 3.0; 5/5 folds positive; per-window Sharpe 0.0533. EDGE FRAGILE / LIKELY OVERFIT — consistent direction but variance dominates; need more data (N≥3,100 windows for t≥3 at current mean/σ) or a stronger signal. Commit
476cab1. - crypto-shortterm-phase0-selectivity — T19 CONDITIONAL pass — selectivity/regime sweep on the same K=6 walk-forward (2026-06-12, bin
selectivity.rs, commit2d52628): 7 a-priori cells (conviction × τ-band + baseline), Bonferroni bars t≥2.69 / t≥2.97. WINNER τ∈[60,150)s c≥0.30 → t=4.61, 5/5 folds positive, ~34k trades, Sharpe 0.16 — passes both; c≥0.20 (4.10) & c≥0.10 (4.04) also pass; baseline (2.51) and all τ∈[150,300)s (<1.8) FAIL. Edge lives only in the last 60–150s on clearly-ITM/OTM contracts; t rose 1.46→4.61 by variance reduction (mean PnL fell), so sign/persistence robust OOS. CAVEAT: ~7%/trade magnitude is a mirage — 1s top-of-book ≠ fillable price; unresolvable offline (no book DEPTH recorded). Next: record sizes → depth-aware re-run → tiny real-fill test. - crypto-shortterm-phase0-depthprofile — depth profile of the new book-depth columns (pin
69b84b1; bindepthprofile.rs, commit35aa202, 2026-06-18): 159,113 rows / 761 windows; candidate regime (τ∈[60,150)s, c≥0.30) = 12,197 rows / 360 windows. Take-side touch median 658 / p90 5,109 shares; 3¢ cumulative median 6,171 / p90 ≈ 15,579 (shares ≈ 432 is circular (depends on the unverified 7¢ edge), depth ≠ latency-fillable, watch the decay curve. Next: depth-aware re-run (cap fills tobest_*_sz, plot edge-vs-size). Reportdocs/superpowers/phase0-depthprofile-report.md. - crypto-shortterm-phase0-depthaware — depth-aware selectivity re-run (bin
depthaware.rs, commitbba5739, 2026-06-19): 524 candidate-depth windows, Bonferroni t≥2.99; fills capped to recorded touch + 3¢ cumulative depth. Edge SURVIVES at all sizes ≤2000 shares (S=50: t=5.52/5.01¢; S=2000: t=3.01/2.61¢; ∞ uncapped: t=5.67). Decay SANE/DECLINING — not a top-of-book artifact. Capacity ceiling 2000 shares. +0.5¢ latency buffer: verdict unchanged. DECISIVE offline gate: prior t=4.61 was real. Window-count audit (commita3e0468): 524 (raw/all-folds) vs 770 (calibrated/OOS-folds-1–5) explained, no bug, t-stats unchanged. - crypto-shortterm-strategy-design — the shared core under test and the promotion gate.
- crypto-shortterm-loss-filter-analysis-2026-06-26 — loss-filter analysis (PRELIMINARY, n=4, 2026-06-26): forensic decomposition of 4 live losses (27W/4L = 87.1% on 31 BUYs; 12.9% loss < ~15% priced = healthy). EV-not-win-rate method: the
mom30<0bucket is 2W/2L (momentum doesn’t separate W/L) yet EV-negative — expensive losses (fills 0.75/0.76) vs cheap sacrificed wins (0.90/0.93) → net ≈ +1.34 stakes. Rejected agreement gates (pm_ask≥0.80/conv_fair_ask) that delete the disagreement edge (+44 best bet dies); rejected overshoot/sigma/depth/dist≥60 as overfit on n=2. 10-agent adversarial-overfit synthesis. Re-run at n≥20. - crypto-shortterm-exit-loss-cut-study-2026-07-01 — exit/loss-cut feasibility study → definitive NO-GO (two independent runs, 2026-07-02):
exitlib/exit_studybins onfeat/exit-study(day-folds + day-clustered bootstrap + trial-deflation, OOS winner-exit gate); Phase-0 well-powered (losers 316/350, adverse days 19/21); best rule −0.77/−0.79¢ per bet (z=−2.33/−2.68), couldn’t-fill 52–63% — exiting is significantly −EV vs holding. Killers: collapsing-bid no-fill + weak loser-lead; NOT winner-forfeit. Also the reusable embargo unit seam bug lesson (lib-unit ≠ production-unit). - crypto-shortterm-algo-accuracy-audit-2026-07-02 — live-vs-validated fidelity audit + folded calibration audit (BTC clean era n=920): calibration healthy overall; τ60–90s under-confident (z≈2.9), DOWN-side bucket skews, lowest-σ quartile over-confident (EWMA σ lag over 10s-decimated Chainlink prints), extreme-disagreement fade (haircut sizing, don’t skip). Cross-asset OOS confirmation: BTC frozen calibration within ~2 SE on all 4 alt lanes. Refit-era items require refit + walk-forward re-gate.
- crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03 — pre-registered 3-leg validation design (2026-07-03; reusable method): clean-room re-derivation + adversarial statistics + on-chain reconciliation; every number survived ≥2 independent no-shared-code derivations; caught three headline errors before they shipped (v1 15m band = selection lookahead; blended-price EV = aggregation artifact; “58% vs 55.3¢” = mixed weighting). Companion lessons: frozen post-settlement tapes are row-exact reproducible (freeze tapes at study time); check file mtimes when a claim contradicts a recent measurement (shared-file clobber incident); agents write findings-to-disk before digests.
- crypto-shortterm-disagreement-ceiling-nogo-2026-07-03 — disagreement-ceiling shave → OOS NO-GO (directional, 2026-07-03): a live-attributed SELECTION ceiling (skip the high-disagreement/low-ask tail —
ask<~0.70or modeled edge≥~0.07) run through the refit/exit walk-forward rig on BTC (21-day actual-resolution parquet,won_upNOTresolved_up; day-folds + clustered bootstrap +deflated_threshold(6,1.64)=3.53). Baseline at-ask EV +28.1 / 4,965 OOS windows / 19 days (matches the refit-study universe); NO-GO on all 6 grid combos — every ceiling LOWERS at-ask EV (tightestmax_edge<0.05→ −7.3), best Δz −1.45, no majority-positive folds = a DIRECTIONAL rejection. Method caveat: the at-ask harness CANNOT validate an execution fix (fills at the ask by construction — needs a fill/repricing model or live shadow A/B). - crypto-shortterm-time-of-day-filter-nogo-2026-07-06 — time-of-day filter → NO-GO (in-sample great, OOS reversed, 2026-07-06): in-sample (July live ~5d) looked like overnight prints (01–05 CEST +245, 15:00 −5), overnight −0.018/fire (−10). Hour-of-day P&L flips sign between periods = **noise** (BNB May no US-open dip; July −165 period-specific, Jul 4 −$124). Do not arm a time filter — the 4th in-sample-great/OOS-fail overlay this session (after EMIT_MIN_EDGE floor, disagreement-ceiling, don’t-chase); durable lesson = the edge is the [60,150)s pocket, the market efficiently prices every overlay.
- crypto-shortterm-chainlink-harness-timeout-fix-2026-07-06 — Chainlink
eth_callhad NO HTTP timeout → backtest round-walk hung (harness fix, 2026-07-06):ingest::chainlink::eth_call_resulthad no reqwest timeout → thebacktest_runon-chain Chainlink round-walk HUNG indefinitely on the free publicnode RPC; fixed on the analysis worktree with reqwest 12s timeout + 4 retries with backoff (makes any harness Chainlink walk reliable — worth upstreaming to main). Remaining slowness = a fresh client per call (no connection reuse) → slow for long ranges; connection pooling is the next optimization if long backtests are needed. - crypto-shortterm-depth-aware-sizing-nogo-2026-07-10 — depth-aware dynamic sizing → offline edge-gate NO-GO (2026-07-10): per-window
clamp(FRAC × side_best_ask_sz, 5, MAX)vs fixed 1× (S=5) and retired 2× (S=10) — new bindepthsizing.rs, paired per-window, ACTUAL CLOB labels (NOTresolved_up), K=6 purged/embargoed walk-forward, clustered UTC-day bootstrap (2000×, seed 42, deterministic), Down = symmetric down-book BUY; DRY moduledepthlib.rslifted byte-identical fromdepthaware.rs. Best1.0/10→ +0.141/window, t=2.60 (d_z=2.24, 3/5 folds) < Bonferroni t≥3.08 (24 trials); vs 2×1.0/15→ +0.139, t=2.54 — both below. Decisive: the winners raise per-window exposure 1.9×–4.7× (¢/share 2.32–2.83 vs 2.74 = no per-share edge) → a size-up, not a de-risk. Power caveat: the correct down-buy pass is 934 win / 5 UTC days (down_best_ask_szfrom ~06-28), but a full-range up-book pass (2325 win / 13 days, Down as sell-up) ALSO fails (t=1.55) — not a 5-day artifact. Livedepthwatchshadow: ~90% of fires would size up. Nothing merged (663b8af); 127 tests green (11 newdepthlib). Shelve; supersedes HANDOVER item 5. - crypto-shortterm-overnight-gate-a0-lever-rearm-2026-07-10 — overnight/daytime split OOS verdict → DIRECTIONAL-REAL but NOT structural (provisional, 2026-07-10): purged/embargoed OOS on 4,773 filled orders / real CLOB labels (
realized_pnl_usdsign 100% == CLOB winner). Overnight (20–06 UTC) +560/−2.15¢, and the gap is within-lane (+0.0352 vs +0.0372/fire — not lane-mix). BUT P(overnight>daytime)=0.949 with the diff CI including 0, P(overnight>0)=0.875 (overnight-positive NOT significant — the robust leg is “daytime worse”); walk-forward met the bar in only 5/9 day-folds & 3/6 contiguous WITH sign reversals 07-03/04/08 (the time-of-day NO-GO flip signature); 67% of the daytime loss is the single 07-09 US-open blowout → dropping it collapses P 0.949→0.883. ⇒ UNDERPOWERED / period-noise-consistent — confirms (does not overturn) the 07-06 time-of-day NO-GO. The overnight re-arm is a provisional risk tilt on the known-winner lanes, not a validated clock edge; re-test after ~2–3 wk forward data. - crypto-shortterm-honest-recalibration-edge-gate-verdict-2026-07-11 — honest recalibration → NO-GO for EV; the signal is HEALTHY, the edge PERSISTS (rigorous refit, 2026-07-11): 5 purged/embargoed folds, 5,671 OOS windows, real BTC CLOB labels. Signal healthy — late window (≥07-05) STRONGEST, honest win ~0.77–0.79 / +3.46¢/fire, all 6 assets +EV late week. Recalibration NO-GO: frozen 2,633 fires/76.3%/+37.13 (own_z 2.30) → Δz −0.30 (tie); best of 16 variants +0.16 « deflated bar 3.99. The frozen map IS overconfident ~5–11pt/bin (claims 0.912 where real 0.808) but the gate absorbs it at the ~0.72 ask → recalibration recovers ZERO EV, only refuses
40% near-breakeven expensive-ask fires. RETRACTS a same-session “edge eroding” read (real win 80→73%, ceiling +7¢→0) that was a coarse cross-asset aggregate skewed by SOL (07-10 sol −11.2¢ n=62 partial day) while BTC was +9.2¢, eth +3.8¢ — lesson: measure erosion PER-ASSET, never cross-asset aggregate (same family as the window_id trap). The loss is FILL-side (A0), not the signal — reconfirms the standing finding. Caveat: rigorous folds BTC-only (binance_ticksBTC-only); alts cross-checked (+EV) not refit — resolve before live GO. BTC-only;feat/calibration-refit-degraded-rerunae31a0c(not pushed); reportdocs/superpowers/refit-honest-degraded-verdict-2026-07-11.md;calibration.jsonuntouched. - crypto-shortterm-discriminator-catchability-ask-drift-2026-07-13 — unfilled-would-win discriminator VALIDATED (opposite of A0) but the prize is largely NOT catchable (2026-07-13): same per-asset/per-regime scrutiny that dissolved A0, re-run on the discriminator (
data/signal_fill_decomposition_2026-07-10.csv, 5,555 fires,real_win=CLOB truth). Unfilled 80.6% win vs filled 73.4% = ~7.2pt (≈6 SE); positive in ALL 6 assets (btc 9.6…sol 4.0), positive on ALL 7 days green+red (5.7–11.3pt, structural not drawdown, where A0 flipped +0.4→−7.2), survives conditioning on conviction (7.5pt within stratum = adverse selection on the unobservable). Missed winners +EV-capturable at the quoted ask (0.5→+17.6pt, 0.7→+10.4, 0.8→+5.0, 0.9→−4.6). BUT ask-drift kills the speed lever: on realbest_ask_at_snapno_match rows (n≈1,810, 07-09→11) 99.9% had the real ask ABOVE our limit (genuine reprice, not phantom liquidity), median +0.07 above emit ask; the run is FRONT-LOADED (drift identical at attempt 1 & 2, p50 0.07 → the ~7-tick lift completes during emit→first-touch latency and plateaus) → a tighter FAK ladder can’t help. Consequence: catchable fills = stale-ask losers (A0); +EV fills need filling at the emit ask before a near-instant lift = a sub-latency race (RTT 117–260ms, co-lo shelved OOS); chasing +7 ticks ≈ breakeven at 0.72, −EV above 0.78 (why the BE limit correctly refuses). NO cheap fill-capture lever adds EV — honest levers = quality-not-quantity (EMIT_MAX_ASK 0.85→0.78–0.80, refuse doge/xrp thin-book). Re-confirms PM’s latency/co-lo shelving on EV grounds; validates the standing FILL adverse-selection thesis. Caveats: clean attempt-0 drift needs post-2f0ec6adreal ask (accrue forward); real-ask data red-days-only. - crypto-shortterm-fill-space-closed-15m-pivot-proposal-2026-07-18 — the honest-fill harness (never built) is the root cause of “offline +EV, live −EV” — PROPOSED to build it (2026-07-18, PENDING): the 2026-07-03 backtest-fill-harness spec was never implemented; the current walkforward gate assumes CERTAIN fill at ask+1¢ flat,
resolved_uplabels (~10pt optimistic on the traded subset), zero latency/book-evolution = exactly the gap between the offline gate passing and the live lane losing. Proposed W1: a fill model calibrated on our ~1,400 recorded live fills, self-validated on held-out fills,won_uplabels only, latency params from babylon #1189 — the shared instrument for W2 (the 15m offline gate: fresh fit-then-frozen calibration, own band, ONE confirmatory test, deflated bar) and W3 (a cheap 5m τ∈[150,300) falsification, expectation LOW — population sufficient ~3,311 win/14d but median first-qualifying ask 0.90–0.93, conviction and ask co-move). Pre-committed exit rule: W2+W3 fail under honest fills → shelve the lane, keep observe as a data asset. Depsrefitlib/exitlibonfeat/calibration-refit; fill truth (pm_fak_attempts/pmv2_autotrade_orders) needs a cross-schema read. No decision taken.
Competitor Analysis
- crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03 — the “sole skill-verified winner” (
0xd02b…/wowitsamazing) REFUTED + 3-leg-VALIDATED (2026-07-03): 38-day lifetime harvest (199,184 rows) shows no fee-clearing edge and a net loser by true USDC (−90k, three accountings, components reproduce exactly; on-chain-confirmed — Polygon net −87,540** (corr 0.9915; cutover ~Jun 13; 1.72% effective after ~16% rebates) — the exact fee term in our net-edge gate → VALIDATED on ~190k fills; book-calibration audit independently re-validatesEMIT_MAX_ASK 0.85+ edge-vs-ask. The “242-0” = artifact-with-certainty (p≈1e-20); mechanism NAMED (§C8): survivorship by activity-dependent tape truncation (0/56 lost vs 55/129 won markets tape-visible — zero-error prediction; true window record 129W/56L; the naive fill-level “cap hid his losses” story itself REFUTED, §C7 — capped tape shows 29% vs true 54%); “79.3%” = redeem-proxy overcount. Validation matrix fully closed (every finding ≥2 independent no-shared-code derivations). Data Streams falsified 3 ways (print-direction follower, 94% agrees with our p_cal); his tape cannot rule on our 0.75–0.85/τ≤150 band (power limit). 15m arm: real structure, mechanically dead (−1.1¢ population). NEW follow-up: do WE accrue taker rebates? Not a threat to our $400 roll. - crypto-shortterm-polymarket-data-api-gotchas — harvest + tape method behind the refutation:
/activityoffset cap + time-paging,usdcSize= nominalprice+ the Polymarket taker fee0.07·x·(1−x)(NOT a bid-ask spread; corr 0.9915), PM’s own PnL endpoints exclude the fee (flatter takers), the redeem-presence caveat (overstates directional win rate under hedging), capped/trades?market=tapes unusable for per-wallet PnL in both directions (maker-invisibility ~32% → ~9% taker-visible), fee-era cutover ~2026-06-13, rebates (1.72% effective), frozen-tape reproducibility. - crypto-shortterm-market-expansion-scan-2026-07-09 — resident competition mapped on expansion candidates (2026-07-09): hourly up/down has confirmed fast bots (
0xee55214e…53 of the live window’s last 500 trades; five more wallets 17–50× each; ~16 trades/min); monthly touch barriers are held by a single algorithmic MM parking ~14.5k @0.96–0.98) on every barrier that will out-cancel a NATS→executor path;elon-tweetscounters occupied by resident algos trading every 10–90s. Competition was one of the two universal killers in the scan (the other: UMA settlement velocity).
Data & APIs
- crypto-shortterm-maker-sim-gate-spec-grounding-2026-07-22 — 5m market-data facts: gamma slug/condition_ids query BROKEN for 5m updown (use
emitted_signals.condition_id→CLOB/markets/{condition_id});data-api /trades?market=verified as 5m tape (taker-only, ~2k/page);pm_book_snaps5m cadence ≈1.3s - crypto-shortterm-data-sources — the three feeds (Chainlink settlement, Binance predictor, Polymarket book), Gamma/CLOB APIs, Supabase + WAL storage split.
- crypto-shortterm-phase0-live-milestone — all four feeds verified writing live; Chainlink on-chain via Alchemy RPC; recorder per-row throughput limit.
- crypto-shortterm-phase0-codebase-complete — first measured Polymarket book spread ≈ 0.98 (empty/untradeable WATCH) and Binance↔Chainlink basis ≈ -$40 near expiry.
- crypto-shortterm-prediction-research — mandates a Binance L2+trades feed for microstructure (Polymarket trade classification near-random); now feeds the adverse-flow veto.
- crypto-shortterm-data-sources — live-DB analysis access (2026-07-02 append): homebrew duckdb → Supabase without psql (
PG*env fromSUPABASE_DB_URL+PGSSLMODE=require;postgres_queryserver-side, READ_ONLY ATTACH); plus theemitted_signals.sideera gotcha ('BUY'Jun 25–28 v1 rows vs'Up'/'Down'after — filterside IN ('Up','Down')or legacy rows silently mis-score; caused a fake 15% win-rate scare). - crypto-shortterm-polymarket-data-api-gotchas — Polymarket
data-api/activitygotchas (2026-07-03): offset hard-caps at ~3000 → time-page viastart/endunix secs (newest-first,endinclusive, browser UA, binary-search first-activity);usdcSizeincludes the Polymarket taker fee0.07·x·(1−x)·size(the usdcSize-vs-nominal gap is the fee, NOT a bid-ask spread; corr 0.9915) → useusdcSizefor true PnL; leaderboardlb-api/profit+user-pnl-api/user-pnlcompute off nominal/marks (exclude the fee → flatter high-freq takers); REDEEM rows attributable viaconditionId/slug(asset=”/outcomeIndex=999), redeem-presence is a valid per-market outcome proxy but overstates the directional win rate — the toolchain behind the competitor refutation. Extended by the 3-leg validation (same day): capped/trades?market=tapes unusable for per-wallet PnL in BOTH directions (1000-print recency cap; ~32% of fills execute as maker → ~9% taker-visible; per-wallet-z methodology retracted); taker-fee cutover ~2026-06-13 (zero-fee subset = pre-fee era); rebate program → 1.72% effective fee (check if OUR wallet accrues rebates); post-settlement tapes are frozen — row-exact reproducible (10/10) → freeze tapes at study time. - crypto-shortterm-pnl-attribution-corrections-2026-07-03 — attribution join trap (2026-07-03):
crypto_shortterm.outcomes.window_idis NOT unique — it is shared across all 5 assets for the same 5-min bucket (each resolves independently; ~9,643 rows / ~5,995 distinctwindow_ids;(asset, window_id)is the unique key, with duplicate rows per pair). Awindow_id-only join collapses all assets → coin-flip labels (>50% self-contradicted onresolved_up). ALWAYS join(asset, window_id); dedupebool_or(resolved_up) GROUP BY asset, window_id; asset =crypto_5m_algo_*→btc elsesplit_part(source_id,'_',1). - crypto-shortterm-observations-window-id-not-asset-unique —
observations/outcomes.window_idis NOT asset-unique;emitted_signalshas NOassetcolumn (2026-07-09):window_id= bare window-open Unix epoch (format!("{}", open_ts().timestamp()),observe/src/lib.rs:165), identical across every lane at the same instant;observationsPK(asset, window_id, as_of)/outcomes(asset, window_id)(migrations/0007). Any join onwindow_idalone +ORDER BY abs(Δt) LIMIT 1returns a near-arbitrary asset’s row (correct ref:depthprofile.rs:72WHERE o.asset=$1).emitted_signalsPK(source, window_id)(was(window_id)in0003) — asset lives only insourcevia an IRREGULAR map (ingest/src/asset.rs: BTC→crypto_5m_algo_upprefixcryptonotbtc; btc15→btc_15m_algo_uplabelbtc15; eth15→eth_15m_algo_up) →split_part(source,'_',1)mislabels btc/btc15/eth15, use an explicit CASE. Generalizes + corrects the [[crypto-shortterm-pnl-attribution-corrections-2026-07-03|outcomesjoin-trap]]. Adjacent:emitted_signals.sizedropped inmigrations/0005(per-directive size unrecoverable);emit_ts/as_ofbothtimestamptz(instant-based, TZ-safe). - crypto-shortterm-lane-state-adverse-fill-2026-07-05 —
realized_pnl_usdIS CLOB settlement truth (confirmed 2026-07-05): 24/24 sampled windows the CLOBtokens[].winnermatches the SIGN ofrealized_pnl_usdexactly → it = the actual CLOB resolution, net of fees (fee baked intocost_basis); the ~9–15% near-tie noise isresolved_up-only. Live P&L tables onrealized_pnl_usdare label-truth-grade — no CLOB backfill needed for them (backfill only helps on-chain/resolved_upanalyses). - crypto-shortterm-perf-dashboard-2026-07-05 — reusable live-P&L pull + HTML dashboard (2026-07-05):
dashboard_data.pyextracts overall/daily/per-lane/per-asset metrics as JSON from the live DB via the duckdb + postgres READ-ONLYATTACHpattern (source =pmv2_autotrade_orders.realized_pnl_usd, CLOB-truth net-of-fee);build_dashboard.pybakes a self-contained dark HTML. Both live in the session scratchpad — ephemeral; move to reposcripts/to keep. - crypto-shortterm-pnl-onchain-cash-truth-2026-07-06 — on-chain realized CASH = the P&L truth (2026-07-06): realized P&L = Σ(REDEEM)+Σ(SELL)−Σ(BUY) from the
data-api/activityper proxy wallet (net of fees, no mark-to-market); reusable persisted scriptsscripts/wallet_lane_cashflow.py(maps each REDEEM→lane via the originating BUY’sconditionId) +scripts/wallet_pnl_reconcile.py. The PMlb-api/user-pnl-api/UI “profit” is INFLATED 2–6× (unrealized MTM + gross of fees) — do NOT use it;realized_pnl_usdreconciles to on-chain cash but lags at resolution. Sits atop the realized_pnl_usd > resolved_up hierarchy. - crypto-shortterm-empire-ui-crm-topology-2026-07-06 — one Supabase project holds everything (2026-07-06):
mgmtrefmkofmdtdldxgmmolxxhchosts the Levandor CRM, the pmv2/pm_*tables AND our isolatedcrypto_shorttermschema (crypto_algo.envSUPABASE host = same ref). The CRM (React+Vite+Supabase+Clerk, @crm) reads the DB directly → surfacing crypto lane-ops = public SQL views/RPCs bridgingcrypto_shortterm→PostgREST (likely viapublic, since the schema is isolated and pmv2’spublic/pm_*tables are off-limits), not a new API. Open: iscrypto_shorttermPostgREST-exposed or must it be bridged. - crypto-shortterm-db-index-audit-2026-07-09 — Supabase index audit of the shared project (2026-07-09): DB 8.4GB (
crypto_shortterm4.3 /public4.0); top-10 statements ≈ 80% of server exec time, PM’s schema ~65%. Worst offenders: TEXTend_dateregex sweeper (16.9%),pm_tradesfat select (19.8%, index fine — app shape),pm_trader_metrics2.6B-tuple seq scans,pmv2_market_resolutionsuseless 155MB index (4 lifetime scans). Per-owner DDL → babylon #1163. Crypto:migrations/0010_index_hygiene.sqlwritten NOT applied (obs_asof_idxbtree→BRIN); writers healthy; the real lever = retention/partitioning (the 912MBpm_book_snapspkey IS the ON CONFLICT dedup key over 77-char TEXT token_ids — only retention shrinks it). GOTCHA:binance_tickspkey(trade_ts, price)has no asset column → multi-asset same-price ticks would silently dedup (unresolved). Reproscripts/db_index_audit.sh(duckdb read-only ATTACH); full reportdocs/superpowers/db-index-audit-2026-07-09.md. - crypto-shortterm-loss-investigation-real-vs-onchain-edge-2026-07-10 —
resolved_upoverstates the TRADED win rate ~9–14pt on the FILLED subset (2026-07-10): sharpens the 4–7pt per-bin inflation — because fills concentrate in near-ties, the filled-subset gap is bigger. 07-08+07-09 fills 111 on-chain-WIN-but-real-LOSS vs 13 the reverse (asymmetric, median 3.5 bps from strike) = −$1,011 the on-chain label doesn’t see; real fill-win on loss days 64–72% vs on-chain 78–86% (breakeven ~73%). BINDING: every gauge onresolved_up— signal-win dashboards, the CRMsignal_win−fill_wintoxicity tab, break-even bookkeeping — reads ~10pt healthier than the money at risk; re-base health onrealized_pnl_usdsplit by side+day. Read-only duckdb→Postgres, un-peer-reviewed. - crypto-shortterm-w0-fee-rebate-audit-2026-07-22 — the venue taker fee re-fitted on OUR OWN fills = exactly 0.07; rebates live in separate data-api activity rows (2026-07-22): the
usdcSize − price·size = C·p·(1−p)·sizeidentity (see the data-api gotchas) fits C = 0.0700 with zero dispersion over 3,399 of our live BUY fills — independent of the competitor’s 190k-fill fit. GOTCHA:pmv2_autotrade_ordersdoes NOT surface fee reality — it books 0.10 (43% high, [[crypto-shortterm-w0-fee-rebate-audit-2026-07-22|babylon #1233]]) and contains no rebate rows at all;TAKER_REBATEcredits (16 rows, $39.49 across bandi/balu, 0 for levi/gyula) arrive as separatedata-apiactivity rows invisible to any P&L gauge on the orders table. Wallets frompublic.pmv2_wallets(all dry_run); scratchpadrebate_tally.py/fee_fit.py.
Debugging & Bug Fixes
- crypto-shortterm-maker-sim-gate-build-complete-2026-07-22 — two durable environment gotchas from the maker-sim build (2026-07-22): (1)
*.polymarket.comCloudflare TLS-resets this workstation since ~11:00Z 07-22 (after ~3k morning API calls) AND blocks agent sandboxes → live fetches must route through the deploy/infra VM (babylon 1243; scripts resumable); (2) sqlx + transaction-mode pooler (:6543) breaks prepared statements at process rerun (statement-name collisions across pooled sessions) → gate runs must use the session-mode pooler (:5432); the same latent issue exists inwalkforward.rs. Also: the review loop caught two bugs in the plan’s own reference code (unsorted-prints self-inconsistency; unresolved-CLOB-market silent Down-label) — a case for trusting the review loop over a plan’s sample code. - crypto-shortterm-polymarket-token-overflow-fix — Polymarket token ID u128 overflow: silently zeroed market cache → 0 emits; fixed to digit-string check; also corrected GammaMarket serde field names (
orderMinSize,orderPriceMinTickSize); commit7bfe3a0. - crypto-emit-max-fires-cap-clear-2026-06-25 — Pattern A → B cutover residue (~19:25Z 2026-06-25): 50 pre-cutover rows in
crypto_shortterm.emitted_signals+ defaultEMIT_MAX_FIRES=50hydrated the BLOCKER-3 in-process counter to 50 at boot, leaving emit paused for ~22h. TRUNCATE alone insufficient (hydration is one-shot at boot); must alsosystemctl restart. NATS subject-capture proof recipe captured. Operational corollary now in crypto-shortterm-emit-guardrails BLOCKER-3 section. - crypto-shortterm-algo-accuracy-audit-2026-07-02 — CRITICAL fidelity gap (2026-07-02): live emit dropped the validated edge-vs-ask condition —
emit.rsfires onis_regime(τ,p_cal)alone; the gate-clearing rule (walkforward.rs:32) also requiredp_cal − (ask+slip) − fee > 0. 26% of live BTC fires had pred≤ask (−EV net of fees); restoring the gate = +60–90% EV/fire at ≈ equal-or-higher gross total (confirmed OOS on the 4 alt lanes). AlsoEMIT_MAX_ASKunset on all 10 lanes (fires up to ask 0.979 vs backtested 0.85 cap). Fidelity fix, not a new regime. - crypto-shortterm-fak-nomatch-root-cause-2026-07-02 — FAK no-match root cause (2026-07-02, babylon #942): NOT empty books (1/~2200) — the ask reprices ABOVE our own directive
limit_price = ask_at_emit + EMIT_PRICE_BUFFER(0.02)within ~0.7s (UP 19–25%, DOWN 29–38% — explains PM’s DOWN-skew); why widening PMslippage_cap_bps200→500 did nothing. - crypto-shortterm-down-side-money-path-fixes-2026-06-28 — down-side money-path fix pass (
feat/down-side, 2026-06-28): BookView refactor closes the “Down-reads-UP-book” copy-paste bug class —Observationcarriesup/down: BookView(not 16 flatpm_*/down_*fields),book_cols()returns aBookView(kills the positional 8-tupleBookColstransposition hazard), emit picks per-side params via purefire_params(side,obs,market)(test asserts Down⇒down book/token_down/down_outcome_index/SOURCE_DOWN/“Down”). Alsoprobe_schema_columnstartup fail-fast (“apply migration 0006”) instead of failing every INSERT in the loop;ingestpoll_book’s three error arms raiseddebug!→warn!(were invisible at prodRUST_LOG=info) with side+token;probe_windownow treatscrypto_5m_algo_downrows (storep_cal=P(up)next to the Down ask) as expected. Tooling gotcha: rtk cargo hook manglescargo clippy --all-targets -- -D warnings(-Dtaken as a filename → “multiple input filenames”) → run clippy +fmt --checkviartk proxy. - crypto-shortterm-pnl-attribution-corrections-2026-07-03 — #1031 REFUTED — zero-delta (2026-07-03): the prior handover/LOG claim that PM
realized_pnl_usdwas “biased negative” with “7 false losses” (premature winner-flag read) is wrong — @deploy CLOB-re-checked all 7 (tokens[].winner= payout oracle = ground truth), we LOST all 7; PM’s −cost_basis booking was CORRECT; the artifact was a flipped token-side cross-ref in an earlier crypto-side session, NOT a PM bug.realized_pnl_usd(CLOB/winner-flag) is the trustworthy P&L label. - crypto-shortterm-lane-state-adverse-fill-2026-07-05 — btc-up is ADVERSE FILL, not a broken signal (2026-07-05; REVISES the “adverse selection at signal level” framing incl. babylon #1048): decisive test (Jul 3, actual CLOB winners) — the 8 btc-up fires we FILLED won 25%, the 14 we FAILED to fill (FAK no-match, ask ran away) would have won 100%; the signal is fine (~73–84% actual on fired windows), we systematically fill the losers (cheap ask = market knows it loses) and miss the winners (ask runs away). Loss is EXECUTION. Dry btc-up will look profitable = a mirage — do NOT re-arm on dry results; the fix is execution-side (needs the
@simulatorfill harness). n=22, one day. - crypto-shortterm-pnl-onchain-cash-truth-2026-07-06 — wallet2 “2× under-booking” (#1054) = a BOOKING LAG, not a bug (2026-07-06): @positionmanager traced the winner-flag sweep is wallet-agnostic (can’t be wallet2-only) and overnight the booked total caught up to on-chain cash (~288 cash) →
realized_pnl_usdlags at resolution then reconciles; NOT the (separately-refuted, zero-delta) #1031 mechanism. 836/837 on-chain conditions matched PM-placed → also refutes the “Balu manual activity” hypothesis (majors algo-dedicated,size_scale=1.0, 1 manual Paraguay bet). - crypto-shortterm-chainlink-harness-timeout-fix-2026-07-06 — missing HTTP timeout on Chainlink
eth_call(2026-07-06):ingest::chainlink::eth_call_resultissued itseth_callwith no reqwest timeout → thebacktest_runChainlink round-walk hung forever on the free publicnode RPC; fixed (analysis worktree) with a 12s timeout + 4 retries with backoff. Reusable gotcha: any free-public-RPC read needs an explicit timeout + retry (production settlement uses reliable Alchemy). Next optimization: connection pooling (a fresh client per call is slow for long ranges). - crypto-shortterm-emit-publish-first-latency-2026-07-09 — producer-side latency leak: the emit DB claim INSERT gated the NATS publish (2026-07-09): the synchronous
emitted_signalsclaim INSERT (loggedclaim_ms) commits beforepublish_entry, so a 234–301ms median / p90 ~1–2.5s / max ~3s cross-region round-trip (Zurich emit → Dublineu-west-1Supabase) sits on every fire’s critical path, ahead of the Directive. Diagnostic signature: a per-fire timer (claim_ms) whose p50 alone exceeds the ~128ms budget ⇒ the DB write, not the model, is the bottleneck. Fix = flag-gated publish-first + async record + DLQ (feat/emit-publish-first-dlq @ 6cd9487, not rolled); safe only after JetStream dedup is confirmed (see the Execution & Signal Emission entry). - crypto-shortterm-observations-window-id-not-asset-unique — missing asset predicate → asset-blind depth guardrail false alarm (2026-07-09):
scripts/depth_guardrail.sh(commit326bc2f) joinedobservationsonwindow_idonly (noasset); sinceemitted_signalshas noassetcolumn and the touch subquery usedORDER BY abs(Δt) LIMIT 1, it picked a near-arbitrary lane → reportedmedian_touch=33vs BTC’s in-regime ~658 → trippedalert=TRUEand drove a spec rewrite to rev 2.1. Diagnostic signature: per-asset medians suspiciously uniform across assets known to differ by an order of magnitude ⇒ suspect a missing asset predicate (grouping the outer query by the fire’s asset can’t fix an asset-blind subquery — the fix isAND o.asset = f.assetin the subquery, withf.assetderived fromsourcevia CASE). Schema detail + full source→asset map in the Data & APIs entry. - crypto-shortterm-loss-investigation-real-vs-onchain-edge-2026-07-10 — loss investigation: NO code regression, a 3-day slide not a one-day blowout (2026-07-10): the 07-09 emit commits (E1
nats.rsPub-Ts header, E4emit.rsclaim_ms/pub_lag_ms) are telemetry-only + dedup-safe (Nats-Msg-Idstill=order.id, unit-tested), E2/E3 are offline analysis scripts, and publish-first is flag-OFF/dark → not the cause. Model healthy (on-chain signal-win 85–88% every day incl. 07-09 85.7%, fires ~880–920/day, asks ~0.72). Liverealized_pnl_usd: 07-05 +15 / 07 +120 / 09 −170 partial → 07-08 was already negative, contradicting the repoHANDOVER.md“+448 on 07-09”. Un-peer-reviewed (single-session read-only). - crypto-shortterm-w0-fee-rebate-audit-2026-07-22 — pmv2 over-books taker fees by 43% (fleet-wide, babylon #1233, 2026-07-22):
pmv2_autotrade_orders.fee_usd= exactly0.10·p·(1−p)·sizeon all 5,322 fee>0 rows, but the venue charges exactly 0.07 (fitted on 3,399 of our own live fills viausdcSize − price·size; median=p10=p90=0.0700, zero dispersion; matches the competitor’s 190k-fill fit) → every pmv2-booked strategy’srealized_pnl_usdis systematically pessimistic (our lane −368 true). Our ownobserve::fee(0.07) was never wrong — the bug is in pmv2’s booking, not the producer. Diagnostic signature: a booked fee coefficient with zero dispersion across a large fit ⇒ a hard constant, so a median≠your-model-constant is a booking bug not noise. Rebate credits ($39.49 across 4 wallets) are not surfaced in the orders table at all.
Empire UI & CRM
- crypto-shortterm-empire-ui-crm-topology-2026-07-06 — the empire UI IS the Levandor CRM; a crypto lane-ops view = a NEW CRM TAB, not new React (2026-07-06): the central operator UI is the Levandor CRM (React + Vite + Supabase + Clerk, built by @crm), which already renders
pmv2_*/pm_*tables directly (as nevercasts, absent fromdatabase.types.ts) in a Polymarket surface (tabs Scout / Copy Lane / Longshot / Bets). One Supabase project (mgmtrefmkofmdtdldxgmmolxxhc) holds the CRM + the pmv2/pm_*tables + our isolatedcrypto_shorttermschema; the CRM reads it directly. So crypto’s deliverable = public SQL views/RPCs (bridgecrypto_shortterm→PostgREST, likely viapublic) + a cash-truth ingester + aCRM_DASHBOARD_PROMPT.md-style build-prompt for @crm — likely no React written by crypto. Code patternweb/src/lib/*+.../hooks/*+web/src/pages/polymarket/*w/ unit tests. Pending: CRM repo path/remote; is @crm on babylon?; iscrypto_shorttermPostgREST-exposed. Source:polymarket_fetch/CRM_DASHBOARD_PROMPT.md.
Execution & Signal Emission
- crypto-shortterm-phase1-bet-sizing — Phase-1 sizing decision (2026-06-26, Andras): double the bet 5→10 shares (
EMIT_SIZE_MULTIPLIER=2) + raise daily cap 200 to hold ~20–30 latency fills — the cap is a reject-GATE (reserve.rs:146→CapSrcDaily), not a resizer, so per-trade size and cap are independent levers. New env knobEMIT_SIZE_MULTIPLIERindirective.rsbuild_entry(default/unset/<1.0/bad →1.0no-op; floor-safe via.filter(is_finite&&>=1.0)+helper.max(1.0)). Key finding: @positionmanager honors the producer’ssize_sharesdirectly (pricing.rs:217:size_usd=limit_price×size_shares, no config override) — supersedes the 62-Directive-era “PM sizes from its own config” note;size_sharesIS the per-trade lever (units = outcome-token shares). Still dry until Andras’s live flip; code built + gated green, NOT yet committed. - crypto-shortterm-handover-2026-06-26 — producer LIVE, dry-validate PASSED end-to-end (2026-06-26): emit publishes a pmv2-contracts schema_2 EntryOrder to NATS
pmv2.order.crypto_shortterm_latency_test.entry→ @positionmanager consumes on streamPMV2_ORDERS→ eff=Dry → DryRehearsed (build+sign, NO POST) → telegram. Wire:source=crypto_shortterm_latency_test,id=Nats-Msg-Id=crypto_shortterm_latency_test|<window_id>, Limit arm,size_shares=5.EMIT_MAX_FIRES50→1000; PM modemin(global,source)ignoresenabled(live = both flips). v1 = UP-only by design (EMIT_BOTH_SIDES=false) — emit only polls the Up-token book; Down deferred (poll No-book + flip flag). Executor = @positionmanager (not @polymarket). - crypto-shortterm-phase1-execution-decision — Phase-1 execution decision (2026-06-22): crypto-shortterm is a producer — publishes a Directive (
source=crypto_shortterm_latency_test) to NATScohort.signals; pmv2’sposition_managerplaces the order via CLOB (no own wallet/key/order path; per-fill size from pmv2 global base-size). polymarket’s verdict: ≲128ms is LIKELY NOT achievable over the REST order path (sub-128ms needs a co-located ws/FIX path pmv2 lacks) → live test expected to measure a miss. **Staged 20 live tranche → read latency → early-exit on confirmed miss; spend capped byEMIT_MAX_FIRES+ pmv2daily_spend_cap_usd=$100. Deployed for dry-validate (#264,mode=dry_run). - crypto-shortterm-phase1-latency-budget — publish→fill target 128ms (p90 adverse drift); sensitivity HIGH; <50ms strongly recommended; 1s poll means true budget may be tighter.
- crypto-shortterm-phase1-emit — Phase-1 live signal emitter (SHA
5e92c7f; pmv2 schema alignedc12c830): DRY refactor of observe engine intolib.rs;CalibrationMap,Directivestructs; NATS publish to"cohort.signals"or shadow-log; regime τ∈[60,150)s / |p_cal−0.5|≥0.30; single-fire HashSet +EMIT_MAX_FIREScap; records toemitted_signalstable. Directive schema now confirmed (c12c830):id="clt-{window_id}",yes_token_idString (not i64),condition_idfrom Gamma API,max_pricetick-rounded/clamped,Nats-Msg-Iddedup header; UP-only v1 (EMIT_BOTH_SIDES=false);valid_until_ts= latency drop signal.calibration.jsonmust be generated viacal_exportbefore deploy. Pre-live code review + hardening (commitbc38734, review on pinc12c830): 3 BLOCKERs (condition_id slug fallback, wrong-token-by-index, guardrails reset on restart) + 3 HIGH (stale/zero/NaN ask, NATS-failure-marks-fired) + medium/low all fixed; 21 tests green. Pattern: build→review→fix is the standing pre-live discipline for money-path code; final delta review planned before the live flip. - crypto-shortterm-emit-guardrails — 13 money-safety guardrails (commit
bc38734): 3 BLOCKERs (condition_id 0x guard, YES token by outcome label not index, fired_windows DB hydration on restart), 3 HIGH (book staleness 5s, zero/NaN ask, NATS failure skips before fired_windows.insert), 4 MEDIUM (valid_until freshness, Gamma 5s HTTP timeout, calibration p clamp, market window-match), 3 LOW (include_str! calibration, INSERT double-bind fix + migration 0005, Binance staleness Option<(f64, DateTime)>). Data model: BookTop +window_id, Observation +pm_book_as_of/pm_book_window_id/last_binance_ts. - crypto-shortterm-emit-prelive-pass2 — Pre-live Review Pass 2 (commit
89e354e, 2026-06-19): 1 BLOCKER (migratecompile-time migrations viainclude_str!, all 5 embedded, no CWD dependency); 2 HIGH (NATS NKey auth hard-wired, Binance staleness gate clock-source fixed to local-clock-to-local-clock); 3 MEDIUM (discover_active_marketremoved from hot path → 30s background watch channel, outcome label hardening +token_downu128 validation, User-Agent + 5s timeout onpoll_book); 2 LOW (EnvFilter"info"fallback,ON CONFLICTconfirmed). Confirmed live labels["Up", "Down"]. 7 new tests; all gates clean. - crypto-shortterm-loss-filter-analysis-2026-06-26 — loss-filter analysis (PRELIMINARY, n=4, 2026-06-26): one entry-time filter survives EV scrutiny —
shat_mom_30 ≥ 0(“don’t buy UP when BTC fell over the last 30s”), skips 2/4 losses / costs 2/27 wins; a physical-state feature (corr w/ pm_ask 0.17) so it leaves the model-vs-market disagreement edge intact. Bonus lever: raise emit τ-floor to ~τ65 for ~3.6s latency headroom (the τ=59 fill came from emit@τ62 + latency). Shadow-test only — do NOT live-deploy a bet-dropping filter on 4 points. - crypto-shortterm-crypto-5m-algo-both-sides-2026-06-27 — both-sides DECISION + PLAN (2026-06-27, code NOT built): enable the DOWN side (
EMIT_BOTH_SIDES=true) — symmetric regime|p_cal-0.5|>=0.30, so DOWN =p_cal<=0.20→ buy the Down token at the Down-token book ask (NOT the synthetic complement); and split sourcecrypto_shortterm_latency_test→crypto_5m_algo_up+crypto_5m_algo_downso PM dry/live-arms + caps each direction independently. Scope = pmv2 sources/subjects ONLY (schema/services/repo names unchanged). Reused unchanged: calibration (covers Down bins), subjects derive fromorder.source, single-fire (Up XOR Down) +emitted_signals.sourcecol, PM outcome-agnostic (zero PM code). Structural: threadsidefeed→engine→Observation→emit, poll BOTH books, migration 0006 (6 down-book cols +emitted_signals.source); 8 TDD tasks. Plandocs/superpowers/plans/2026-06-27-crypto-5m-algo-both-sides.md(commitd61983b). Coordination: @deploy DM #819 (permits→0006+redeploy→retire), @positionmanager DM #820 (two dry rows, $100 cap each, confirmpmv2.order.>wildcard + outcome-agnostic Down), pmv2 post #821. - crypto-shortterm-algo-accuracy-audit-2026-07-02 — the emit fidelity fix (2026-07-02): restore net-edge-vs-ask firing (
p_cal − (ask+slip) − fee > 0, optionally +δ) — halves fires/FAK exposure/fee drag/spend-cap burn at +60–90% EV/fire; plus setEMIT_MAX_ASK=0.85on all 10 lanes (deploy config). This is a disagreement requirement (preserves the validated edge), NOT the rejectedpm_ask≥0.80agreement gate. - crypto-shortterm-fak-nomatch-root-cause-2026-07-02 — recommended PM spec (2026-07-02): re-priced FAK retry at the new ask (WR conditional on repricing ≈ unconditional 87–88% → +5–7c/share on recovered fills) with absolute ceiling ~0.88 +
valid_untilrespect; same-price 1s retry mostly won’t fill. Producer lever = sub-second fire evaluation (emitdue_obsis 1s-quantized). - crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03 — book-side re-validation of the live gates (2026-07-03): the dissection’s book-calibration audit shows the buyable zone (ask ≤0.90, tight spread) is efficiently priced — favorite realized-win exceeds its ask by ≈ exactly the fee in every ask bin (net ≈0 by construction), and the 0.95+ “overpricing” is a stale-wide-quote artifact (realized 0.468 @ ask≈0.99, 0.24 spreads — placeholder quotes) → independently validates
EMIT_MAX_ASK 0.85+ the net-edge-vs-ask gate; our +EV comes from the p_cal gate selecting in-cell exceptions, not broad favorite-buying. Selector kill test: no reproducible slice of the competitor’s flow beats the contemporaneous ask OOS. - crypto-shortterm-down-side-money-path-fixes-2026-06-28 — C1 persist-before-publish invariant (
feat/down-side, 2026-06-28): emit runs theemitted_signalsINSERT (ON CONFLICT (window_id) DO NOTHING) BEFORE publishing to NATS — the DB row is the dedup authority. Pure helperfire_decision(Option<u64>) -> {Publish|SkipDuplicate|SkipError}(None=INSERT err → log+no-publish+retry;Some(0)=already claimed → no publish;Some(1)=claim owned → publish). A publish failure after a successful claim is logged loudly and never retried — the written row is a detectable MISSED trade. Invariant: never a duplicate real-money trade, worst case a detectable miss;fired_windows/total_firesadvance right after the claim, before publish (conservative spend). Supersedes the old publish-then-mark ordering (bc38734, crypto-shortterm-emit-guardrails).FireSideenum deleted →select_side(p_cal) -> Option<Side>(two arms: ≥0.80 Up / ≤0.20 Down / else None); regime gate FROZEN τ∈[60,150)s ∧ |p_cal−0.5|≥0.30. - crypto-shortterm-disagreement-ceiling-nogo-2026-07-03 — the disagreement tail’s live loss is EXECUTION, not selection (2026-07-03): the low-ask/high-disagreement tail (~60% of fills, ask ~0.62 vs
p_side~0.865) is +EV at the ask (buy 0.62 → win pays 0.38) yet books the entire live loss because it fills 3.3c ABOVE the emit-ask — the break-evenlimit_price(observe::fire_limit,df6f500) chases the reprice up (~2.3c/share drag) vs 1.7c BELOW ask on the core — plus a depressed FILLED win 0.639 vs 0.674 signal (adverse fill selection); ties to the FAK-reprice finding. Actionable lever = the limit/fill path: capfire_limitnear the ask on low-ask fires (don’t chase), NOT the fire selector (edge-band selection is OOS-rejected). - crypto-shortterm-lane-state-adverse-fill-2026-07-05 — btc-up set DRY (2026-07-04) + adverse-fill root cause (2026-07-05): btc-up (
crypto_5m_algo_up) live BUYS off but emit STILL FIRES (→dry_runrows,filled_size=0,realized_pnl_usd=NULL, shadow only). Loss is EXECUTION not signal — filled fires won 25% vs failed-to-fill 100% (a sharper filled-vs-failed-labeled version of the disagreement-ceiling execution-toxic finding + the FAK-reprice thread). Do NOT re-arm on dry results (mirage). Contrast sol-down = thin/decaying SIGNAL (fill fine), not adverse fill. - crypto-shortterm-time-of-day-filter-nogo-2026-07-06 — do NOT arm a time-of-day fire filter (2026-07-06): overnight-print / US-open-bleed looked strong in-sample (~5d July) but the 21-day OOS check (actual CLOB labels, at-ask EV) flipped the sign (US-open +0.016/fire, overnight −0.018/fire) → hour-of-day P&L is noise. A fire-time overlay joins edge-band selection and don’t-chase as an OOS-rejected overlay — fire selection stays the frozen [60,150)s regime, nothing bolted on.
- crypto-shortterm-emit-publish-first-latency-2026-07-09 — producer-side latency leak — the emit DB claim INSERT gated the NATS publish (2026-07-09):
emit.rsruns a synchronousemitted_signalsclaim INSERT (loggedclaim_ms) and publishes the Directive only after it commits → 234–301ms median / p90 ~1–2.5s / max ~3s on every fire’s critical path, caused by cross-region Zurich emit → Dublin (eu-west-1) Supabase. Fixfeat/emit-publish-first-dlq @ 6cd9487(pushed, NOT rolled) behindEMIT_PUBLISH_FIRST(default OFF): publish first, record async, DLQ on failure (crates/observe/src/dlq.rs, drainer retries 60s, sharedinsert_signal/emit_directive+dlq_lock). Safety linchpin: publish-first surrenders the C1 DB-claim dedup → only safe if JetStream message-dedup (≥~2min window) is confirmed on the crypto entry stream (PMV2_ORDERS, babylonpmv2#1160) else double-fire on a deploy roll. Third chapter of the publish-ordering saga. Producer-side complement to PM’s R0–R6. - crypto-shortterm-per-wallet-size-scale-2026-07-06 — per-wallet bet sizing already exists in pmv2 —
pmv2_wallets.size_scale, no crypto code (2026-07-06):pmv2_wallets.size_scale NUMERIC NOT NULL DEFAULT 1.0is a per-wallet GLOBAL multiplier that is BOOT-LOADED — NOT hot-read (a DB change needs a position_manager restart; verified 2026-07-06 when a 1.0→2.0 write left live fills unchanged at 10 shares/$8) (pmv2_source_walletsonly maps source→wallet — NO per-source scale), layered atop the producer-side per-trade [[crypto-shortterm-phase1-bet-sizing|size_shares]] lever (migration dated 2026-07-01, newer). Scaling crypto’s bet = one DB column + a position_manager restart — no crypto code, no migration — requested on babylonpmv2#1065 (sibling of the mode command: ledgered, clamped [0.5,3]; the command MUST force a registry reload — a bare DB write is ignored until restart). GOTCHA: bumpsize_scaleAND that wallet’sdaily_spend_cap_usdtogether, or the cap (a reject-GATE, not a resizer) silently clips the larger bets. - crypto-shortterm-order-type-fak-verdict-2026-07-09 — order-type question SETTLED (2026-07-09): keep FAK marketable limits at the BE ceiling — do NOT switch to market/FOK or resting GTC. PM’s order is a hardcoded price-pinned FAK marketable limit (
polymarket-clob/src/lib.rs:502buys/:513sells; no per-source order-type config; vendored client supports GTC/GTD/FOK if ever needed); limit =floor_tick(min(max_price, fresh best_ask)), FAK-v2 retries reprice upward capped atmax_price(pricing.rs:58-64); 0/9,047 attempts ever above the ceiling. “Adverse fills” decomposes: (a) refusals = the EV guard working (90.5% price-refusals, +5.4¢ avg above the BE ceiling — a latency-conversion loss); (b) realized fills clean (repriced fills win 87–88% ≈ population, ≥3¢ model edge guaranteed by BE pricing); (c) partial/under-fill = the open E3 watch. Market/FOK would buy the above-BE −EV pocket (the 38%-of-fires lesson); GTC maker = free option to sub-second bots vs our 2.78s p50 requote + voids the validated taker economics (full gate re-run). - crypto-shortterm-loss-investigation-real-vs-onchain-edge-2026-07-10 — loss fingerprint = side-specific INTRADAY adverse fill (2026-07-10): on each loss day ONE side’s real (
realized_pnl_usd) fill-win collapses below breakeven while the other holds ~74–77% — Up 07-08 65% & 07-10 46%; Down 07-09 64% (profitable days both sides ~74–76%, breakeven ~73%); visible even on the optimistic label (losing-side filled opt-win 11–22pt below all-signal opt-win; today’s Up filled 56% vs all-Up-signal 78%). Generalises the btc-up adverse-fill signature to whichever side is pushed intraday. NOT a daily trend (market up-rate ~48–50%) and NOT a chop regime (near-ties did NOT track losses — 07-05 had the most, 42.9%, yet was most profitable). ~50%/day FAK no-match = separate conversion loss, stable across win/loss days. ⚠ Tension: the FAK verdict’s “fills win 87–88%, no adverse selection” is on the on-chain label — re-measure onrealized_pnl_usdsplit by side+day. - crypto-shortterm-loss-decomposition-fill-adverse-selection-2026-07-10 — decisive FILL adverse-selection verdict (2026-07-10, real CLOB labels, 100% coverage / 4857 windows): the 07-08→07-10 loss is execution, not signal — signal ceiling at emit-ask +3.68¢/share / 77.1% (stable ~77%/day, no collapse; full 07-04→now +4.46¢/78%) vs realized **−3.87¢/share / 70.8% / −459 of −$641). Corrects the FAK verdict (forward-pointer callout added there, body intact): the ~50%/day no-matches are the +EV winners we MISS (winning-side ask runs away), not −EV trades the EV guard dodged. Only lever = fill-capture (not order type / selector / size); the filled subset’s at-ask ceiling is already ~−1.9¢ so the +EV is in the unfilled tail (chasing = prior NO-GO).
- crypto-shortterm-overnight-gate-a0-lever-rearm-2026-07-10 — A0 first-touch is the toxic fill; the fill-policy is the real lever (2026-07-10, PM #1191): splitting the filled book by attempt index, A0 (first-touch, at emit-ask) = −5.70¢/sh @ 69.4% win (−EV) while A1+ repriced = +1.30¢ @ 75.3% — removing A0 flips the 2-day book +EV. This pinpoints where in the fill sequence the adverse selection lives (the instant first-touch = the losers) and corrects/extends the FAK verdict: its clean “repriced fills win 87–88%, no adverse selection” is the A1+ subset — right about those; the toxicity is the A0 blend it averaged over on the optimistic label. Order-type conclusion still stands (no market/FOK/GTC); the lever is a fill-policy that avoids the toxic A0, not an order-type swap. A0-toxicity is SEPARATE from time-of-day (A0-share 80.1% overnight vs 82.8% daytime = +2.7pp) → orthogonal, additive to the overnight tilt, and the better-supported lever. PM’s
45fa0ebtelemetry-fix (best_ask_at_snapwas areq.limitproxy at attempt 0) rolls with the re-arm so forward fills measure the real book. - crypto-shortterm-a0-fill-policy-offline-scope-nogo-2026-07-12 — A0-avoidance fill policy = offline NO-GO; the “A0 first-touch is structurally toxic” claim is a TELEMETRY/REGIME ARTIFACT (2026-07-12):
pm_fak_attempts.attempt_no=0telemetry only exists post-45fa0eb= only the 07-09/10/11 drawdown (zero A0 on the 5 green days), so A0-toxicity can’t be separated from a regime toxic to everything. Like-for-like inside the clean window A1+ = −0.5¢ (breakeven), NOT +1.30¢ (the flattering figure was green-day reprices); A0 +0.36¢ POSITIVE on 07-09, −7.21/−6.67 on 07-10/11 (not stable); asset-concentrated (btc −1.1¢/eth −2.0¢ ~breakeven vs doge −10.5¢/xrp −9.1¢ = thin-book signature). Skip-A0 counterfactual unobservable (FAK stops on fill); optimistic bound only ~breakeven. EV validated vs bookedrealized_pnl_usd(A0 −6.21¢/share). DON’T build (6th in-sample-overfit NO-GO); pre-register re-test after ~5 green-regime days of A0 telemetry. The general loss-at-fill thesis STANDS; the A0-SPECIFIC structural claim is downgraded. Open levers unaffected:EMIT_MAX_ASK 0.85→0.78–0.80, doge/xrp thin-alt pocket. - crypto-shortterm-discriminator-catchability-ask-drift-2026-07-13 — prize real but not catchable — no cheap fill-capture lever adds EV (2026-07-13): the unfilled-would-win discriminator is VALIDATED (unfilled 80.6% vs filled 73.4%, ~7.2pt, positive in all 6 assets and all 7 days, survives conviction) and the missed winners are +EV at the quoted ask (0.5→+17.6pt … 0.7→+10.4). BUT ask-drift kills the speed lever: 99.9% of real-ask no_match rows had the ask genuinely repriced ABOVE our limit (median +0.07 above emit ask), and the ~7-tick lift is FRONT-LOADED — identical at attempt 1 & 2 (p50 0.07), so it completes during emit→first-touch latency and plateaus (a tighter FAK ladder can’t help). Catchable fills = stale-ask losers (A0); +EV fills need a sub-latency race (RTT 117–260ms, co-lo shelved OOS); chasing +7 ticks ≈ breakeven at 0.72, −EV above 0.78 → the break-even limit correctly refuses. Honest fill levers = quality-not-quantity (
EMIT_MAX_ASK 0.85→0.78–0.80, refuse doge/xrp thin-book); independently re-confirms co-lo shelving on EV grounds. - crypto-shortterm-canary-confirmed-fill-ev-live-2026-07-16 — fill-data canary confirms fill −EV LIVE (2026-07-15/16): a bounded −EV canary (w1 @1×, ~18h37m, validated rule unchanged) to generate fresh fills for the A0/drift re-tests booked **−58 early → −1 sizes, PM crash-guard
feat/usdc-size-decimal-fix@ca07ba5fixed it; residual ~1% sub-1); attempt-0 realbest_askonly ~1/3 populated (PM2f0ec6adgap) so drift re-test stayed blocked;EMIT_MAX_FIRESis cumulative-all-time (NOT a bound), only kill = wallet→dry; direct DB now IPv6-only, use the pooler. Next lever = the size/depth bid-structuring study (size DOWN to avoid stale-depth reach) — expected to SHAVE not CURE; if NO-GO → edge not capturable as a taker, pivot market/timeframe. - crypto-shortterm-size-depth-study-liquidity-not-size-nogo-2026-07-17 — size/depth bid-structuring study = NO-GO — it’s LIQUIDITY, not size (2026-07-16/17): held order size ~constant (~10 shares in EVERY book-depth bucket) yet per-share net EV swings −8¢ (thin
best_ask_sz10–25) → −0.15¢ (deep >150, ~breakeven, 76% win) → fill EV is driven by exogenous BOOK DEPTH, our size doesn’t vary, so size-down can’t help (you can’t size a thin book into a deep one). Joins the depth-aware sizing NO-GO from the other direction. Depth-reach is NON-monotone (0.5–1.0 worse than reach>1 → “small orders fill better” was a deep-book confound). Only partial survivor = depth SELECTIVITY (fill gatebest_ask_sz ≥ ~50): holds for majors (btc deep −1.4¢ vs thin −6.7¢; eth +0.8 vs −9.0; sol +0.4 vs −2.9), NOT xrp (+2.2¢ regardless) or doge (n=20 noisy) — shaves majors to breakeven only, costs volume, calm-regime confound uncontrolled. The fill-structuring space is now exhausted with rigor (A0,EMIT_MAX_ASK, latency/capture, size all negative/marginal) → leaning toward CALLING IT and pivoting to a new edge where we’re not the structurally-picked-off taker. Method: 1398 fills, 100% book-joined, 16% exhaust top-of-book.
Fees & Execution Economics
- crypto-shortterm-maker-sim-gate-spec-grounding-2026-07-22 — maker-sim spec grounding: maker-rebate=$0 (pure takers), maker-rewards applicability to 5m unverified; PM fee fix
eee211e(books 0.07, removes 2 fee RTTs); historical fee backfill gated on Andras - crypto-shortterm-data-sources — taker
fee = C·0.07·p(1−p)(peaks ~2.5% at p=0.5, tiny near 0/1), maker 0 + 20% rebate, FOK/FAK, 425/503 engine modes, EIP-712 order path. - crypto-shortterm-strategy-design — fee-aware regime selection (near-expiry primary, mid-window p≈0.5 fee-killed).
- crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03 — fee identity empirically verified on ~190k real fills (2026-07-03): per-fill
usdcSize − price·size = 0.07·x·(1−x)·size(ratio ≈1.0, corr 0.9915, $87.5k lifetime); fee-era cutover ~2026-06-13 (no fee before); rebates claw back ~16% → 1.72% effective fee (vs 2.06% headline); a zero-fee-clearing-edge taker loses exactly the fee → the0.07·eff·(1−eff)term of the live net-edge gate is venue-exact. NEW follow-up: check whether OUR wallet accrues taker rebates — if yes, realized costs beat the model (free EV, zero code). - crypto-shortterm-w0-fee-rebate-audit-2026-07-22 — W0 fee/rebate audit CLOSED — pmv2 over-books fees 43%; our rebates are tiny; verdict unchanged (2026-07-22): answers the ↑ “do WE accrue rebates?” follow-up and closes the free W0 item from the shelve verdict. (1) pmv2 FEE-BOOKING BUG (fleet-wide, babylon #1233):
pmv2_autotrade_orders.fee_usd= exactly0.10·p·(1−p)·sizeon all 5,322 fee>0 rows, but the venue’s ACTUAL charge (fitted on 3,399 of our own live fills viausdcSize − price·size) is exactly 0.07 (median=p10=p90=0.0700, zero dispersion; matches the competitor’s 190k-fill fit) → booked fees 43% high,realized_pnl_usdpessimistic for EVERY pmv2-booked strategy (our lane −368 true, −0.92¢→−0.47¢/share). Ourobserve::fee(0.07) was always correct — the validated net-edge gate needs no change. (2) TAKER REBATES real but TINY: 16TAKER_REBATErows = **22.55, balu 0 (pure takers); credits not represented in pmv2’s orders table. Net: true economics less bad but still net-negative → lane stays shelved. Provenance: data-api activity paging (rebate_tally.py/fee_fit.py),data/w0_rebate_fee_reconciliation_2026-07-21.csv.
Oracle Settlement & Basis
- crypto-shortterm-data-sources — settlement is the Chainlink BTC/USD print read on-chain on Polygon via Alchemy RPC (not Binance, not paid Data Streams);
close ≥ open → Up, ties → Up; UMA ≥2h resolution lock-up. - crypto-shortterm-phase0-codebase-complete — first measured basis near expiry ≈ -$40 (~6 bps, Chainlink below Binance) — real, non-trivial, corroborates the Rev-2 reframe (thin: 2 windows).
- crypto-shortterm-phase0-live-milestone — Chainlink on-chain read verified live (~1s poll); K=63,596 set at a witnessed window open.
- crypto-shortterm-strategy-design — Ŝ/K from Chainlink, Binance as predictor, Binance↔Chainlink basis as the core risk (largest near expiry).
- crypto-shortterm-competitor-wowitsamazing-refuted-2026-07-03 — Chainlink Data Streams hypothesis FALSIFIED 3 ways (2026-07-03): the competitor performs at the stale-print ceiling (never above); universe print precision is flat in print-age at 60–150s (a live oracle value ≈ a 40s-stale print 3 min out); entries not synced to print arrivals → Data Streams demoted to a label-quality concern only. Re-confirmed: our on-chain
settledisagrees with CLOB truth on 12.6% of windows (35% within 2bps of strike) — actual-resolution labels stay binding for all analyses. Print-state now closed from three directions (Phase-0 detector ≈ ask; his at-ceiling print-following; refit H4 actively harmful). - crypto-shortterm-pnl-attribution-corrections-2026-07-03 —
resolved_up≠ settlement truth (2026-07-03): ouroutcomes.resolved_up(on-chain Chainlink settle≥K) over-books near-tie wins vs the market’s Chainlink Data Streams settlement — on the doubled-vol day ~15% of resolved fills disagreedresolved_up↔realized_pnl_usd, concentrated entirely in sub-5bps near-ties (disputed median |settle−K| 0.9–4.8bps vs agreed-win 8.9bps). BINDING: userealized_pnl_usdfor P&L/sizing/certainty tiers, neverresolved_up(a trading gate, not truth); reconstructing fromresolved_upis optimistic (Jul-3 +88) → reinforces the Data Streams licensing track as the real label fix. - crypto-shortterm-market-expansion-scan-2026-07-09 — the moat is settlement velocity (2026-07-09): the timestamp-slug
{asset}-updown-{5m,15m,4h}crypto family is the ONLY automatic, dispute-free, minutes-to-redemption settlement on Polymarket (Chainlink, ~2 min to redeemable); every other family resolves via the UMA optimistic oracle (proposal 12–16 min post-close + ~2h liveness ≈ 2.25h lock/fire) — with the BUY-only/no-exit pipeline a 45–70× capital-velocity penalty that killed all 25 expansion candidates. Named-hour crypto series = Binance-candle truth via UMA (zero oracle basis, but the lock dominates); WTI monthly touch = Pyth-settled.
Implementation & Build Status
- crypto-shortterm-phase1-bet-sizing —
EMIT_SIZE_MULTIPLIERknob + rollout (2026-06-26): pure helpercompute_size_shares(min_size, multiplier)incrypto_algo/crates/observe/src/directive.rsbuild_entry, floor-safe (env.filter(is_finite&&>=1.0)+.max(1.0)). Executor sizing confirmed inposition_manager/crates/position_manager/src/pricing.rs:217(size_usd=limit_price×size_shares); daily-cap reject atreserve.rs:146(CapSrcDaily). Built + gated green (build/test/clippy/fmt), NOT yet committed. Rollout: commit/push → @deploy setsEMIT_SIZE_MULTIPLIER=2inCRYPTO_SHORTTERM_ENV+ redeploys emit → @positionmanager bumpsdaily_spend_cap_usd100→200 forcrypto_shortterm_latency_test. - crypto-shortterm-repo-rename-pmv2-rearch — repo rename + relocation (2026-06-22):
wowjeeez/crypto-fetch→wowjeeez/pmv2-crypto-algo(origin/main=7bfe3a0, GitHub redirects old→new);/Users/levander/coding/crypto_fetch→/Users/levander/coding/pmv2/crypto_algo(git history +.env/.mcp.jsonmoved, builds clean). pmv2 = one self-contained repo per component:crypto_algo(producer),cohort_algo/us_weather_algo/as_weather_algo(producers),position_manager(shared executor),telegram_connector(notifications). - crypto-shortterm-phase0-codebase-complete — Phase-0 codebase COMPLETE (codebase commit
97f238d): full stack built/tested/committed,analysisreport-gen runs (phase0-report.md). (Repo since renamed towowjeeez/pmv2-crypto-algo; this milestone was pinneda11ce63.) Continuous run coordinated with @deploy (build-on-VM,polymarket-infra, Frankfurt). Remaining work is data, not code. - crypto-shortterm-phase0-edge-analysis —
crates/analysis/src/bin/edge.rsadded in commit54ab6d0;window_idis TEXT (not UUID) in the live DB schema — useStringin Rust. - crypto-shortterm-phase0-depthaware — audit of
depthaware.rs(commita3e0468): hardcoded"523"literal replaced with liven_windows;31_536_000.0replaced withtypes::SECS_PER_YEAR;n_candidate_windowssplit inton_raw_candidate_windows/n_oos_candidate_windowsfor report clarity. - crypto-shortterm-phase1-emit — Phase-1 emitter build (SHA
5e92c7f):observe/src/lib.rsextracted for DRY reuse; new cratescalibration.rs,directive.rs,bin/emit.rs,migrations/0003_emitted_signals.sql,cal_export.rs;async-nats = "0.37"added; 8 new unit tests; 0 failures; build/clippy/fmt clean. pmv2 schema alignment (c12c830): Directive struct finalized;polymarket.rsextractscondition_id/neg_risk/tick_size/min_sizefrom Gamma API;migrations/0004addsid+yes_token_id, makessizenullable. Pre-live review hardening (commitbc38734, pinc12c830): 3 BLOCKER + 3 HIGH + medium/low fixed; condition_id0x-or-skip, token-by-outcome-label +u128validate, guardrails hydrated fromemitted_signalson restart, book/binance staleness gates, NATS-publish-then-mark-fired,emitted_signalsschema reconciled (migrations0004+0005); 21 tests green. - crypto-shortterm-emit-guardrails — comprehensive safety pass (commit
bc38734):BookTop.window_idadded totypes;Observationgainspm_book_as_of,pm_book_window_id,last_binance_ts;EngineState::last_binance→Option<(f64, DateTime<Utc>)>;calibration.rsgainsfrom_json+ p clamp;emit.rsfull rewrite;migrations/0005dropstoken_id+sizecolumns. 7 new unit tests inobserve, 3 iningest. - crypto-shortterm-emit-prelive-pass2 — Pre-live Review Pass 2 (commit
89e354e):migrateall-5-migrations embedded viainclude_str!; NATS NKey auth; Binance staleness clock-source fix; hot-path market cache via watch channel; outcome label.trim()/warn;poll_bookUser-Agent + timeout. 7 new tests. All gates clean. - crypto-shortterm-polymarket-token-overflow-fix — Polymarket token ID u128 overflow bug:
discover_active_marketsilently returnedOk(None)on every poll → 0 emits; fix + GammaMarket serde renames + 3 regression tests (commit7bfe3a0). - crypto-shortterm-phase0-live-milestone — observe pipeline BUILT & VERIFIED LIVE end-to-end (commit
f50b084): ~5-min run wrote to the isolatedcrypto_shorttermschema (row counts, the four-feed live architecture, and the three findings). The access blocker is resolved. - crypto-shortterm — status now Phase 1 — live latency test in progress (Phase-0 offline gate PASSED). Codebase at
/Users/levander/coding/pmv2/crypto_algo, repowowjeeez/pmv2-crypto-algo@7bfe3a0. - crypto-shortterm-crypto-5m-algo-both-sides-2026-06-27 — both-sides structural PLAN (2026-06-27, NOT yet built): thread a
sidethrough feed→engine→Observation→emit, poll BOTH token books (Up + Down), record the down book — migration 0006 adds 6 down-book observation cols +emitted_signals.source. 8 TDD code tasks + staged dry→live (Approach A: live-validated). Plan committed atdocs/superpowers/plans/2026-06-27-crypto-5m-algo-both-sides.md(d61983b); producer code unwritten. - crypto-shortterm-down-side-money-path-fixes-2026-06-28 — down-side fix-pass build state (2026-06-28): the both-sides plan is now being implemented on branch
feat/down-side— 3 commits (0d5324fingest warn-logging,1aef0efprobe_window,90808d0observe core); whole-workspace gates green (build clean, 84 tests / 3 ignored live-smoke, clippy-D warningsclean, fmt--checkclean); NOT pushed, NOT deployed, no live-DB writes. DRY/test-integrity:is_regime()/max_price()now shared betweenemit.rsand the lib tests (a test can no longer pass while the real gate regresses); deleted hand-copiedis_candidate_test/compute_max_price.recorder::Row::Observationstays FLAT —BookViewmapped to flat fields inobserve/src/main.rs(do NOT push BookView across the recorder/SQL boundary).
Latency & Performance
- crypto-shortterm-maker-sim-gate-spec-grounding-2026-07-22 — sim latency tiers set to book-snap cadence multiples
{1.3,2.6,3.9}s(1.3s is the observation floor, no sub-second tiers measurable); PM: sub-500ms feasible after fee-param caching, sub-300ms needs WS book (#1189) - crypto-shortterm-phase1-latency-budget — adverse drift analysis on 143k obs pairs in the candidate regime; 29.2% of 1s steps breach 0.5¢; publish→fill target = 128ms (p90); <50ms recommended; commit
2f5fb4d. - crypto-shortterm-loss-filter-analysis-2026-06-26 — loss-filter analysis (PRELIMINARY, n=4, 2026-06-26): one of the 4 live losses (
…466500) was a latency/thin artifact — emit in-regime at τ≈62 + ~3.3s fill latency → fill at τ=59 with a thin cushion. Lever: raise emit τ-floor to ~τ65 for headroom. Realized emit→fill ~3.6s median, but second-granular + includes Polygon block time → cannot measure the 128ms REST budget (needs CLOB match timestamps). - crypto-shortterm-fak-nomatch-root-cause-2026-07-02 — live latency stack quantified (2026-07-02): emit fire-evaluation is 1s-quantized (
due_obsgate — up to 1s self-inflicted) + PM ~100ms + Polymarket’s mandated ~250ms taker delay; the ask reprices above our limit within ~0.7s. Speed alone can’t win — sub-second fire evaluation in emit is the producer lever; shaving PM’s 100ms is noise. - crypto-shortterm-order-type-fak-verdict-2026-07-09 — the ~50%/day FAK no-match refusals are LATENCY-CONVERSION losses, not adverse fills (2026-07-09): 90.5% are price-refusals where the repriced ask sat avg +5.4¢ above the break-even ceiling — every refused directive was fillable at emit by construction; the fix lane is latency (PM R-items, config cache 733ms→10ms, babylon 1157), not a different order type (our requote path is 2.78s p50 vs sub-second Binance-watching competitors).
- crypto-shortterm-loss-decomposition-fill-adverse-selection-2026-07-10 — the loss lever is TIME-TO-FILL, not order type or depth (2026-07-10): on 100% real-label coverage the +EV winners reprice above our limit before the FAK matches — unfilled would’ve won 84.9% vs 70.8% filled (+14.1pt every asset) — so the only lever is cutting time-to-fill to catch the winning tail (slippage is negligible ~0.08¢ — pure adverse selection, nothing to recover on price). Sharpens the latency-conversion framing on real CLOB labels: the no-match tail is missed winners and the filled subset is already ~−1.9¢ at-ask → the win is faster to the winning-side ask (sub-second fire eval), not paying up (chasing was a NO-GO).
- crypto-shortterm-overnight-gate-a0-lever-rearm-2026-07-10 — the fill-capture lever localised to the attempt index — A0 first-touch is the −EV fill (2026-07-10, PM #1191): the toxic fills are the ones that fill instantly at the original emit-ask (A0): −5.70¢/sh @ 69.4%; the repriced retries (A1+) are clean: +1.30¢ @ 75.3% (remove A0 ⇒ book flips +EV). So “cut time-to-fill” resolves into which attempts to accept — a fill-policy that avoids the toxic first-touch, distinct from raw speed. Separate from time-of-day (A0-share 80.1% overnight vs 82.8% daytime, +2.7pp — the overnight window does NOT avoid A0). PM’s telemetry-fix
45fa0eb(best_ask_at_snapwas areq.limitproxy at attempt 0) rolls with the overnight re-arm so forward attempt-index/slippage reads are against the real book (any pre-45fa0ebA0 read inherits the proxy caveat). - crypto-shortterm-fill-space-closed-15m-pivot-proposal-2026-07-18 — mechanism named: STRUCTURAL LAST-LOOK ⇒ producer-side speed is non-binding on the 5m band (2026-07-18): our PUBLIC-info signal (Binance+Chainlink) is repriced by sub-second makers inside the venue’s mandated ~250ms taker protective delay; the clean-window A1+ reprice fills ≈ −0.5¢ breakeven are the price we get AFTER the reprice → even infinite producer-side speed only reaches that repriced ask, so the fill ceiling is breakeven regardless of latency. Unifies why co-lo (shelved OOS) and the front-loaded ask-run both bottom out identically. Escaping it needs a non-public / faster-than-last-look signal, a different microstructure, or a slower-reprice timeframe (the PROPOSED 15m bet).
Liquidity & Tradeability Risk
- crypto-shortterm-phase1-emit — pre-live review (commit
bc38734) added tradeability guards on the live emit path: book staleness gate (5s) + binance staleness gate (30s) + finite/>0ask guard before pricingmax_price, andvalid_until_ts ≥ now+10sso signals can’t arrive already-expired — the order won’t fire against a stale or empty top-of-book. - crypto-shortterm-phase0-depthprofile — the top risk is WEAKENED (2026-06-18): 360 windows of recorded book depth in the candidate regime (τ∈[60,150)s, c≥0.30) show take-side touch median ~5,109 and 3¢ cumulative ~432/trade) is circular (rests on the unverified 7¢ edge), and 1s-snapshot depth ≠ depth surviving ~150ms latency (needs real fills). Next: depth-aware re-run capping fills to recorded sizes.
- crypto-shortterm-phase0-depthaware — unfillable-mirage hypothesis REJECTED (2026-06-19): two-tier depth-cap fill model (touch tier + 3¢ sweep tier, unfilled = zero) applied to 524 windows; edge clears Bonferroni at all sizes ≤2000 shares with monotonically declining ¢/share — a physically consistent liquidity-bounded edge. Remaining risk is latency survival (1s snapshot depth ≠ live depth 150ms after signal); bounds latency cost → next gate is a funded real-fill test.
- crypto-shortterm-phase0-codebase-complete — TOP RISK: first measured Polymarket book spread ≈ 0.98 (bid ~0.01 / ask ~0.99 = effectively empty/untradeable); challenges the tradeable-edge premise if it holds (echoes ~$150–250 touch depth). Thin (2 windows) — must be resolved by the continuous run.
- crypto-shortterm-data-sources — the ~$150–250 touch-depth snapshot finding it echoes; taker capacity limits.
- crypto-shortterm-strategy-design — the edge premise (a crossable book near expiry) this risk threatens;
half-spreadterm in the entry threshold. - crypto-shortterm-fak-nomatch-root-cause-2026-07-02 — no-match ≠ empty books (2026-07-02): ask side empty in only 1/~2,200 fires; the failure mode is repricing above our limit within ~0.7s (DOWN worse: +2.4–3.1c avg move vs +1.4–1.9c UP).
- crypto-shortterm-exit-loss-cut-study-2026-07-01 — exit-side liquidity is the killer (2026-07-02): 52–63% of wanted exits can’t fill — the moment a loser turns, its bid collapses (same thin-book reality as FAK no-match). One of the two reasons exits are NO-GO.
- crypto-shortterm-depth-aware-sizing-nogo-2026-07-10 — depth-reach is NOT the binding constraint at live size (2026-07-10): scaling the clip to touch depth (
clamp(FRAC × side_best_ask_sz, 5, MAX)) is an offline NO-GO — at 1× the ~5–10-share clip sits far inside a ~25+-share median touch (and ~400× below the 2000-share capacity ceiling), so there is no depth-reach loss to recover; the configs that beat 1× only size UP 1.9×–4.7× with no ¢/share gain. Livedepthwatchshadow: ~90% of fires would size up (15.3 vs 5 sh, ~3×). The real loss driver is adverse fill + the ~10pt label mask, not depth-reach. - crypto-shortterm-loss-decomposition-fill-adverse-selection-2026-07-10 — the tradeable +EV lives in the UNFILLED tail, and it’s latency-locked (2026-07-10): on 100% real-label coverage the filled subset is adversely selected (at-ask ceiling ~−1.9¢) while the unfilled no-match windows would’ve won 84.9% — the winners are exactly the ones whose ask ran away. Confirms depth is not the binding constraint (ties the depth-aware NO-GO): the liquidity problem is winner-capture / reprice hazard, not touch depth or clip size.
- crypto-shortterm-a0-fill-policy-offline-scope-nogo-2026-07-12 — the A0 first-touch loss is a thin-book/liquidity signature, concentrated in doge/xrp — not universal first-touch selection (2026-07-12): within the clean 07-09→11 window A0 net ¢/share is near-breakeven on the liquid legs (btc −1.10¢, eth −1.97¢) but blows out on the thin alts (doge −10.45¢, xrp −9.13¢), echoing the depth and reprice liquidity findings. Part of why the “A0 is structurally toxic” claim is downgraded to regime/asset-confounded (NO-GO to build the A0-avoidance policy). Independent liquidity-side lever: the doge/xrp thin-alt fill pocket.
- crypto-shortterm-canary-confirmed-fill-ev-live-2026-07-16 — 13.6pt adverse-selection gap confirmed on fresh LIVE fills (2026-07-15/16): the bounded −EV canary booked signal 83.8% vs fill 70.2% (below breakeven), the cleanest live confirmation that the tradeable +EV is lost at the fill (winner-capture / reprice hazard), not the model. The only untested liquidity lever left = the size/depth bid-structuring study (size DOWN to avoid stale-depth reach), expected to SHAVE not CURE; if NO-GO → edge not capturable as a taker, pivot market/timeframe.
- crypto-shortterm-size-depth-study-liquidity-not-size-nogo-2026-07-17 — fill EV is BOOK DEPTH, not our size — sizing NO-GO, depth-selectivity only shaves to breakeven (2026-07-16/17): order size held ~constant (~10 shares) across all depth buckets yet per-share net EV runs −8¢ thin (
best_ask_sz10–25) → ~breakeven deep (>150, 76% win) — pure exogenous liquidity, so size-down can’t help (can’t size a thin book into a deep one); closes the sizing lever from the other side. Depth-reach NON-monotone (0.5–1.0 worse than reach>1). A depth-conditioned fill gate (best_ask_sz ≥ ~50) is the only partial lever: real for btc/eth/sol (deep −1.4/+0.8/+0.4¢ vs thin −6.7/−9.0/−2.9¢) → shaves to breakeven; fails for xrp (+2.2¢ regardless) and doge (n=20 noisy); costs volume; calm-regime confound uncontrolled. Fill-structuring space now exhausted → pivot candidate. - crypto-shortterm-fill-space-closed-15m-pivot-proposal-2026-07-18 — the 5m [60,150)s taker fill-structuring space is FORMALLY CLOSED (2026-07-18, consolidation): every fill lever is now negative or shave-to-breakeven — A0-avoidance, exits ×2, chase/limit-raise, market/FOK/GTC-maker, co-lo, depth-aware sizing UP, size-down/depth-selectivity, recalibration,
EMIT_MAX_ASKtighten, time-of-day — unified by structural last-look (public-info signal repriced inside the ~250ms protective delay; A1+ ≈ −0.5¢ breakeven ceiling independent of our speed). No further taker bid-structuring studies on this band. Confirmed live by the 13.6pt canary gap; joins the depth NO-GO as closing evidence. Escape = pivot to a microstructure/timeframe where we’re not the picked-off taker (the PROPOSED 15m gate).
Multi-Asset Expansion
- crypto-shortterm-multi-asset-status-babylon-2026-07-02 — rollout LIVE end-to-end (2026-07-02): 10 containers (BTC live + eth/sol/xrp/doge × Up/Down dry), pipeline verified by dry order rows; source literals
{asset}_5m_algo_{up,down}(BTC legacycrypto_5m_algo_*, resolved 887 via #943);EngineStateuncertainty defaults (s_sigma 50.0/k_sigma 1.0 absolute dollars) are wrong scale for alts — affects only the p_lo/p_hi band. Plandocs/superpowers/plans/2026-06-29-multi-asset-crypto-algo.md. - crypto-shortterm-algo-accuracy-audit-2026-07-02 — cross-asset calibration transfer CONFIRMED (2026-07-02): BTC’s frozen 20-bin map on eth/sol/xrp/doge dry lanes (n≈430–445 each) — pred ~0.88 vs realized 0.865–0.903, within ~2 SE everywhere; the oracle-lag edge generalizes, per-asset refits are fine-tuning not blockers.
- crypto-shortterm-lane-state-adverse-fill-2026-07-05 — current lane state (2026-07-05): btc-up DRY (since 2026-07-04 ~20:13 UTC, Andras, babylon #1048; @deploy-confirmed from the pmv2 side 1051 —
dry_runin DB, PMDryRehearsed, last real submit 2026-07-04 20:01Z; live BUYS off, emit still fires as shadow); sol-down LIVE, ON WATCH (re-eval on first full day Jul 5: full-day WR <70% → dry-shadow, ≥70% → keep; small mag ~−$20–40/day; full days Jul 3=72%/Jul 4=71%, Jul 5 partial 63.6% too noisy); all other 8 lanes live/armed unchanged. btc-up = adverse fill, sol-down = thin signal — different diseases, different treatment. - crypto-shortterm-bnb-expansion-eval-2026-07-05 — BNB = the 6th and FINAL 5m asset — observe lane now LIVE (2026-07-05): the Polymarket 5m universe is exactly btc/eth/sol/xrp/doge + bnb (38 coins probed via Gamma
{asset}-updown-5m, only these 6 active) → BNB is the only untapped 5m coin. BNB was skipped by enum inheritance, not decision; it passes every gate — feeds verified (Binancebnbusdt; on-chain Chainlink BNB/USD0x82a6c4AF830caa6c97bb504425f6A66165C2c26e= “BNB / USD” ~128k ≈ doge). Codefeat/bnb-observemerged to main 2026-07-05 (@deploy336bebea, “PR #1”), observe-only + safety hardening:emit_supportednow needs an explicit{Btc,Eth,Sol,Xrp,Doge}allowlist ANDwindow_secs==300(was 300-only, which would not have refused a new 5m asset) → bnb observe-only by construction, no 5m asset auto-arms. babylonpmv2#1049 → 1053 DONE: merged (336bebea) + observe-onlyASSET=bnbcontainer rolled + recording VERIFIED end-to-end (786 rows / 4 windows, avg K 575.08 matches on-chain BNB/USD,p_fair0.568 zero-nulls). Open go/no-go = frozen-BTC-calibration transfer to BNB within ~2 SE — now UNBLOCKED (BNBp_fairaccruing from the live container; banka few days → one-query check). Expected doge-sized ($5–30/day). ARMED LIVE 2026-07-05 13:22 CEST — before the calibration gate:bnb_5m_algo_up/_downset live/enabled inpmv2_autotrade_sources(promoted past observe-only-by-construction); early ~breakeven (~21 resolved) + an early adverse-fill hint (17–19 CEST signal 10/11 vs fills 7/11 @0.668 = the btc-up signature); wallets carry manual BNB (Balu) → attribution caveat. - crypto-shortterm-market-expansion-scan-2026-07-09 — venue-wide expansion scan → NEGATIVE (2026-07-09): 0/25 candidates across 8 Polymarket families; hourly up/down (id 10114, 0 liq today — inherits our exact infra when it gets flow; first change to the “exactly 6 assets” fact)**; 4h cadence all assets but 392k vol24h). Best growth axis = depth in the current lane, not breadth on the venue.
Open Questions
- crypto-shortterm-open-questions — Phase-0 CONFIRM gates (hard blockers) + modeling/strategy/execution questions.
- crypto-shortterm-phase0-codebase-complete — sharpens gate 5 (empty-book / 0.98-spread = top risk); confirms T19 exit decision + funded $5 fee-at-match are now data-gated on the continuous run.
- crypto-shortterm-phase0-live-milestone — resolves Chainlink access + 5-min-market existence; surfaces the recorder-batching prerequisite.
- crypto-shortterm-order-type-fak-verdict-2026-07-09 — E2 cheap question (proposed 2026-07-09): win rate of price-refused vs filled directives — measures adverse selection on CONVERSION; quantifies what recovered conversion (the latency work) is actually worth. Joins
pm_fak_attempts×emitted_signals×pmv2_autotrade_orders. - crypto-shortterm-db-index-audit-2026-07-09 —
binance_tickspkey correctness (2026-07-09, unresolved): pkey(trade_ts, price)has NO asset column — if multi-asset ticks land in the table, cross-asset same-price ticks silently dedup; confirm BTC-only-by-construction or add anassetcolumn.
Overview
- crypto-shortterm — project index: Rev 2 thesis, scope, design-approved status, phasing, working areas.
Phasing & Status
- crypto-shortterm-handover-2026-06-26 — authoritative current-state snapshot (2026-06-26, mirrors repo
HANDOVER.md): producer LIVE on the Zurich VM, dry-validate PASSED end-to-end (DryRehearsed, no money); live real-money NOT armed. VM moved Frankfurt→Zurich to clear a Polymarket GEOLOCK — so the autotrade “didn’t work” because of geolock, NOT latency: the ~128ms latency-capturability is STILL UNTESTED. Andras’s manual Zurich trades = net profit (signal validated, small sample). Architecture v2/Pattern B (wowjeeez/pmv2-crypto-algo, main36592cd+). Open: latency arm (Andras’s $100 switch, ~20–30 fills), Down side,emitted_signals(58+) vs outcomes vs manual-fill reconciliation. - crypto-shortterm — Phase 1 — producer LIVE; dry-validate PASSED end-to-end; live real-money NOT armed (v2/Pattern B, repo
wowjeeez/pmv2-crypto-algo@36592cd+). Phase-0 offline gate PASSED. Latency STILL untested (geolock, not latency, was the Frankfurt blocker) — now testable in Zurich via Andras’s $100 live arm. v1 UP-only by design. - crypto-shortterm-phase1-execution-decision — Phase-1 execution decision (2026-06-22): producer/executor split, 128ms budget vs polymarket’s REST “can’t hit it” verdict, the staged $100 / 5-fill plan, dry-validate deploy (#264).
- crypto-shortterm-phase0-codebase-complete — the milestone that took Phase 0 from “observe live” to “codebase complete; report-gen runs; first thin data”; remaining work is data-gated (T19 + funded fee-at-match).
- crypto-shortterm-phase0-edge-analysis — T19 exit gate OPEN / validation-in-progress (2026-06-11; prior “PASSED” verdict corrected): live edge analysis shows a real directional signal but the after-cost edge is likely contaminated by near-expiry leakage and is NOT confirmed. Open gate (explain +2% baseline, exclude last 60s, realistic fills, walk-forward + deflated Sharpe, forward paper-trade) blocks any GO.
- crypto-shortterm-phase0-validation — T19 exit gate OPEN / validation-in-progress (2026-06-12) via validate.rs: OFFLINE forecast edge confirmed in the ≥60s non-leaky region (de-risks the +2.08% leakage concern), but live-capturability UNCONFIRMED (optimistic fills overstate a latency edge; slippage-fragile; single split). Remaining: purged walk-forward + deflated Sharpe, depth/capacity read, forward paper-trade.
- crypto-shortterm-phase0-walkforward — walk-forward completed (2026-06-12): K=6, 750 OOS windows, τ≥60s, 1% slip; t=1.46 < 3.0; 5/5 folds positive; EDGE FRAGILE / LIKELY OVERFIT. Do not promote to Phase 1. Need more data (est. N≥3,100 windows) or a stronger signal to clear t≥3.
- crypto-shortterm-phase0-selectivity — T19 CONDITIONAL pass (2026-06-12): selectivity sweep isolated a robust OOS signal in τ∈[60,150)s / conviction≥0.30 (t=4.61, 5/5 folds, clears Bonferroni); direction confirmed but ~7%/trade magnitude is a fill-realism mirage (1s top-of-book ≠ fillable; no book depth recorded). NOT a GO — record book sizes → depth-aware re-run → tiny real-fill test in that one cell; snapshot paper-lane still rejected.
- crypto-shortterm-phase0-depthprofile — T19 STILL CONDITIONAL, but #1 risk weakened (2026-06-18): depth profile of the new book columns (pin
69b84b1, bindepthprofile.rs, commit35aa202) over 360 candidate-regime windows shows real size at the touch (~6,171 median) — the unfillable-mirage hypothesis is no longer the path of least resistance. Not a GO: capacity ceiling is circular, latency-survival unverified, decay curve must be sane. Next gate = depth-aware selectivity re-run (cap fills to recordedbest_*_sz, plot edge-vs-size); preliminary now (360 windows), decisive ~1 week (~800); then a tiny funded real-fill test. Snapshot paper-lane still rejected. - crypto-shortterm-phase0-depthaware — T19 SURVIVES offline depth-cap gate (2026-06-19): depth-aware selectivity re-run (bin
depthaware.rs, commitbba5739); 524 windows; Bonferroni t≥2.99 cleared at all sizes ≤2000 shares; decay shape sane; unfillable-mirage hypothesis REJECTED. Remaining open gate: funded real-fill test to bound latency cost before building live machinery. Capacity ceiling 2000 shares / 2.61¢ per share. - crypto-shortterm-phase1-emit — Phase-1 emitter committed (SHA
5e92c7f, 2026-06-19); targets τ∈[60,150)s / c≥0.30 regime from selectivity sweep; shadow mode available (no NATS needed);condition_idPROVISIONAL (slug, not confirmed CLOB ID);calibration.jsonmust be generated before deploy. - crypto-shortterm-phase0-live-milestone — the milestone that moved Phase 0 from “blocked on access” to “live & accruing”; remaining work is operational + analysis.
- crypto-shortterm-open-questions — the CONFIRM gates that gate Phase 1 + capital; T19 still OPEN (offline edge confirmed, live-capturability unconfirmed).
- crypto-shortterm-crypto-5m-algo-both-sides-2026-06-27 — both-sides graduation DECISION + PLAN (2026-06-27): the producer goes from single UP-only latency-test source → real two-sided strategy (DOWN enabled + source split
crypto_5m_algo_up/crypto_5m_algo_down, independent per-side dry/live arm + cap). PLAN + babylon coordination DONE (DMs 821); code NOT yet implemented. Scope = pmv2 sources/subjects only (schema/services/repo names stay). Dry→live remains Andras’s explicit per-side switch. - crypto-shortterm-multi-asset-status-babylon-2026-07-02 — current status (2026-07-02): multi-asset rollout LIVE end-to-end — 10 lanes (BTC live + 4 alts × 2 dirs dry); babylon #942 (FAK answer to PM #917), #943 (source naming, resolved 887), #944 (stale URGENT #832 resolved as superseded — half-open-Binance-WS hypothesis, TODO idle-watchdog + startup-announce rate-limit). Supersedes the index’s UP-only/not-armed framing.
- crypto-shortterm-lane-state-adverse-fill-2026-07-05 — live lane state (2026-07-05): btc-up DRY (shadow-only since 2026-07-04 — adverse-fill not signal, do NOT re-arm on dry), sol-down LIVE on watch (pre-registered 70%-full-day rule), other 8 lanes live unchanged; plus
realized_pnl_usdconfirmed == CLOB truth (24/24) so live P&L tables need no backfill. - crypto-shortterm-loss-decomposition-fill-adverse-selection-2026-07-10 — LIVE-STATE CHANGE: ALL crypto_5m_algo lanes DRIED to
dry_run(2026-07-10, Andras → @deploy, babylonpmv2#1187): the 7 live lanes (btc-down, eth-up/down, sol-up, xrp-down, doge-up/down) →dry_run; the other 5 were already off → no crypto lane places real orders. Reason: all 8 fill-bearing lanes −4.6 to −18.1¢/share on real labels (migration0011). Reversible — re-arm lane-by-lane when a lane’s real edge crosses +EV; monitored viadepthwatch+ dry fires scored on real labels (the manual daily-loss backstop the system structurally lacked). Migration0011(real-edgecrypto_lane_healthcols) is committed on branchworktree-agent-af81d3911fd13808c, NOT applied live. - crypto-shortterm-overnight-gate-a0-lever-rearm-2026-07-10 — LIVE-STATE CHANGE: the 7 lanes RE-ARMED overnight-only (2026-07-10, Andras → @deploy, babylon
pmv21195) — supersedes the same-day all-lanes-dried state. Scheduler RESTORED; the 7 previously-live lanes (btc-down, eth-up/down, sol-up, xrp-down, doge-up/down) are LIVE 20:00–07:00 UTC (22:00–09:00 CEST) and DRY daytime 07:00–20:00 UTC; the old 13–16 CEST daytime slice explicitly REMOVED (−EV); levi/gyula (wallets 3 & 4) stay OFF; wallets 1×. Rationale: an underpowered-but-directional OOS read (overnight +EV / daytime −EV, robust leg = “daytime worse”) on the known-winner lanes = a low-risk provisional tilt, not a validated rule (re-test ~2–3 wk); the real edge-recovery lever is the A0 fill-policy, run in parallel. PM’s45fa0ebtelemetry-fix rolls alongside so overnight-forward fills are measured real. - crypto-shortterm-fill-space-closed-15m-pivot-proposal-2026-07-18 — strategic decision-point: 5m fill space CLOSED, 15m pivot PROPOSED (2026-07-18, PENDING Andras): all live lanes remain
dry_run(canary #1210 aftermath confirmed closed, kill confirmed, sources back to dry). The 5m [60,150)s taker fill-structuring space is formally closed (structural last-look), and a W0–W3 program (taker-rebate check → honest-fill harness → 15m offline gate → 5m τ∈[150,300) falsification) with a pre-committed shelve rule (W2+W3 fail under honest fills → shelve the lane, keep observe as a data asset) is proposed. No decision taken, no code/config/live change. Babylon open task #1189 (positionmanager exec-latency decomposition, READY @45fa0eb) = the latency-parameter source for W1; reply deferred until direction is set.
Risk Management
- crypto-shortterm-risk-management — net-of-fee portfolio Kelly (≤0.5×, pessimistic band edge), confidence band (moneyness-conditional near expiry — narrows clearly ITM/OTM, explodes near-the-money), circuit-breaker, kill switch, capacity, key security, WAL as financial source of truth.
- crypto-shortterm-prediction-research — volatility circuit-breaker and the Market-Maker’s-Dilemma toxic-fill guard.
- crypto-shortterm-exit-loss-cut-study-2026-07-01 — loss-cut/early-exit is a settled NO-GO (2026-07-02, two independent runs): hold-to-settlement is the policy; the ~13% loss tail is not cuttable (collapsing bid + weak loser-lead). Risk effort belongs on entry (edge-vs-ask gate,
EMIT_MAX_ASK) and sizing, not exits. - crypto-shortterm-per-wallet-size-scale-2026-07-06 — per-wallet
size_scaleturns the ~2026-07-09 2× decision into a CONTROL EXPERIMENT (2026-07-06):pmv2_wallets.size_scale(per-wallet global multiplier) lets you setwallet1.size_scale=2.0vswallet2=1.0baseline — both wallets are crypto-dedicated + trade the same windows/sides, so it’s a clean 2×-across-all-crypto A/B, not an all-or-nothing flip. Risk gotcha: the doubled bets get silently clipped unlesswallet1.daily_spend_cap_usdis bumped to match (the cap is a reject-GATE, not a resizer — the cap levers finding). Command requested on babylonpmv2#1065 (ledgered, clamped [0.5,3]). - crypto-shortterm-loss-investigation-real-vs-onchain-edge-2026-07-10 — the 3-day slide ran unchecked: no live daily-loss circuit breaker + a 4-wallet amplifier (2026-07-10): the edge is razor-thin (~1–3pt over breakeven), so side-specific intraday adverse fill flipped 07-08→07-10 negative (−326 / −$170) with no model change. 07-09 amplifier: wallets 3 & 4 (levi/gyula) were live only 07-08 20:02 → 07-09 12:58 UTC (152/154 fills each), exactly spanning the US-open blowout → 07-09 ran on 4 wallets = 2× exposure into a correlated down-side loss (risk unit = the window); pulled back to 2, but 07-10 still bled (amplifier, not cause). No backstop reacted: the
daily_spend_cap/total_exposure_capcaps are dead code (deferred) → nothing halted the slide as it developed. - crypto-shortterm-depth-aware-sizing-nogo-2026-07-10 — depth-aware dynamic sizing is a size-up, not a de-risk → NO-GO, keep fixed 1× (2026-07-10): the only per-window
clamp(FRAC × side_best_ask_sz, 5, MAX)configs that out-earn fixed 1× raise exposure 1.9×–4.7×/window (best-t ~1.97×, ~4.1) with flat-to-worse ¢/share — buying P&L with capital, not skill, straight into the no-circuit-breaker reality. Best delta t=2.60 < 3.08 bar. Shelved (supersedes HANDOVER item 5); risk effort belongs on fill selection + a daily-loss breaker, not clip-shape. - crypto-shortterm-loss-decomposition-fill-adverse-selection-2026-07-10 — the manual daily-loss backstop, applied: all lanes DRIED (2026-07-10): with the edge at the fill razor-thin and no live circuit breaker (caps are dead code), Andras dried all live lanes to
dry_run(babylonpmv2#1187) because all 8 fill-bearing lanes are −4.6 to −18.1¢/share on real labels. Dry-everything → watch the real-label edge (depthwatch+ dry fires) → re-arm lane-by-lane on +EV evidence; migration0011adds theedge_per_share_centsgauge to make it data-gated (committed, not applied). The risk lever is fill selection, not sizing (the depth-sizing NO-GO confirmed). - crypto-shortterm-overnight-gate-a0-lever-rearm-2026-07-10 — manual risk tilt: re-arm overnight-only, keep wallets 1×, keep the amplifier off (2026-07-10): with no live daily-loss circuit breaker (caps are dead code) and the edge razor-thin, the re-arm is a hand-applied risk shape — LIVE only in the observed-profitable overnight window (20:00–07:00 UTC) on the known-winner lanes, DRY across the robustly-−EV daytime, the −EV 13–16 CEST slice removed, levi/gyula OFF (the 07-09 exposure amplifier), and wallets 1× (no size-up — consistent with the depth-sizing NO-GO). Bounded, reversible, explicitly provisional; the durable risk lever remains fill selection (avoid the toxic A0 first-touch), not the clock or clip size.
- crypto-shortterm-honest-recalibration-edge-gate-verdict-2026-07-11 — actionable risk shape from the honest-recalibration verdict + a live de-risk (2026-07-11): the durable edge is in cheap asks (<0.75), the 0.78–0.85 tail is thin near-breakeven → lower
EMIT_MAX_ASK0.85→~0.78–0.80 and re-gate when re-arming (tightens, not removes, the validated bound; keepEMIT_MAX_ASK + buffer ≤ EMIT_MAX_LIMIT). Recalibrate ONLY for sizing-honesty (frozen over-sizes ~10pt), never for EV. Genuine-erosion re-check trigger: frozen-gated FILL win-rate <73% sustained over a full ≥5-day window (per-asset). LIVE-STATE: all lanes DRY (no exposure); the overnight re-arm was PULLED after night-1 lost −$189 (directional) — within the underpowered-noise band that note flagged. Risk lever remains fill selection (A0 fix), not sizing, not the clock, not recalibration. - crypto-shortterm-a0-fill-policy-offline-scope-nogo-2026-07-12 — the A0 risk lever itself is now PARKED — “avoid the toxic A0 first-touch” is a regime artifact, NO-GO to build (2026-07-12): the durable risk lever” framing repeated across the 07-10/11 risk notes rests on A0 telemetry that exists only for the 3-day drawdown — so it can’t be separated from a toxic regime. Building the A0-avoidance policy would be a 6th in-sample-overfit NO-GO. Skip-A0 produces no +EV book even optimistically (~breakeven). Pre-registered re-test after ~5 green-regime days of A0 telemetry. Remaining risk-lever candidates that survive:
EMIT_MAX_ASK 0.85→0.78–0.80and the doge/xrp thin-alt fill pocket — the general fill-selection thesis stands, only the A0-specific claim is downgraded.
Signals & Microstructure
- crypto-shortterm-strategy-design — fair-value model (P_fair) as the primary signal; moneyness-conditional near-expiry τ→0 handling (band explodes near-the-money, narrows clearly ITM/OTM); σ warm-up (prior σ=0.6 until 30 samples, validate in Phase 0); adverse-flow veto (Binance OFI/OBI, takers too).
- crypto-shortterm-prediction-research — cited survey of short-horizon BTC microstructure: OFI, OBI/Market-Maker’s-Dilemma, VPIN/CVD, lead-lag, vol clustering; what’s useless at ≤5 min; backtest traps.
- crypto-shortterm-canary-confirmed-fill-ev-live-2026-07-16 — signal healthy on fresh LIVE data, loss is microstructural at the fill (2026-07-15/16): the bounded −EV canary shows signal would-win 83.8% vs fill-win 70.2% (13.6pt adverse-selection gap), reaffirming that the model/signal is fine and the money is lost at the fill (winning-side ask reprices away). Early +128 with win-rate mean-reverting 92.6%→70% is a reminder that short windows are dominated by regime noise, not signal decay.
Strategy Design
- crypto-shortterm-strategy-design — Rev 2 oracle-lag thesis,
P_fairmodel, near-expiry handling, edge logic, phasing. - crypto-shortterm-prediction-research — evidence base for the adverse-flow veto.
- crypto-shortterm-disagreement-ceiling-nogo-2026-07-03 — edge-band fire selection is a DEAD END in BOTH directions (2026-07-03): a FLOOR (raising
EMIT_MIN_EDGE) was already wrong and a CEILING (skip the high-disagreement/low-ask tail) is now OOS-rejected — the frozen rule’s at-ask EV is thin-but-positive and slicing it by edge-band does NOT isolate +EV from −EV (every band is ~breakeven at the ask). The disagreement tail’s live loss is execution (break-even limit chasing low-ask reprices up), not selectable flow — fix the fill/limit path, not the selector. - crypto-shortterm-time-of-day-filter-nogo-2026-07-06 — time-of-day overlay OOS-rejected → the edge is the [60,150)s pocket, nothing else (2026-07-06): an overnight-print / US-open-bleed filter reversed sign OOS (in-sample +245 US-open → OOS overnight −5); 4th in-sample-great/OOS-fail overlay this session. Durable lesson: the market efficiently prices every overlay (selection, execution timing, time-of-day) — don’t look for alpha on top of the frozen regime.
- crypto-shortterm-fill-space-closed-15m-pivot-proposal-2026-07-18 — PROPOSED pivot: 5m fill-structuring closed → hunt a 15m edge on an honest harness (2026-07-18, PENDING decision): with the 5m taker fill space exhausted under structural last-look, the proposed direction is a W0–W3 program — W0 taker-rebate check, W1 honest-fill harness, W2 (primary) a 15m offline gate with its own fit-then-frozen calibration + band, W3 a cheap 5m τ∈[150,300) falsification — with a pre-committed shelve rule if W2+W3 fail under honest fills (observe stays running as a data asset; the two pre-registered 5m re-tests stay dormant unless a materially faster path or venue-structure change appears). Rejected: canary #2 now, maker/MM flip (we’d BE the stale quote), more latency spend, shave-stack re-arm, longshot-fade, HYPE now. No decision taken.
Trade Journal & Results
- crypto-shortterm-phase0-edge-analysis — first quantitative results from live data: calibrated +7.28% avg net PnL, 54.4% hit, Sharpe 0.17 overall; +19.46% in the 0–30s τ-bucket — but NOT a confirmed edge (likely near-expiry leakage; T19 OPEN).
- crypto-shortterm-phase0-validation — validation results: ≥60s gated strategy +1.61%/trade (0 slip) / +0.81% (1% slip); ≥60s baseline −3.21% (no edge = correct sign, so +2.08% was leakage). T19 OPEN — offline edge confirmed, live-capturability UNCONFIRMED (optimistic fills, slippage-fragile, single split; needs walk-forward + depth read + forward paper-trade).
- crypto-shortterm-phase0-walkforward — walk-forward results: mean PnL +2.77 / stddev 52 / t=1.46 / per-window Sharpe 0.0533; 5/5 folds positive. EDGE FRAGILE / LIKELY OVERFIT — T19 OPEN; ~+0.8%/trade from the 70/30 split does not survive K=6 purged CV at t≥3 with 1% slippage.
- crypto-shortterm-trade-journal — realized vs expected at each promotion gate; self-correction.
- crypto-shortterm-loss-filter-analysis-2026-06-26 — first live UP-token fill batch (PRELIMINARY, n=4, 2026-06-26): 32 trades on wallet
0xAdAc…aEb2, 31 BUYs → 27 wins / 4 losses = 87.1% (12.9% < ~15% priced = healthy). The 4 losses = 3 phenomena: 2 rollover-from-peak (Andras’s “climbed too fast then fell back” — CONFIRMED + the only cleanly filterable), 1 latency/thin, 1 irreducible coinflip (…473700settled $2 below strike; three wins had thinner cushions). n=4 → hypotheses only; re-run at n≥20. - crypto-shortterm-perf-dashboard-2026-07-05 — live-algo performance dashboard (per-lane W/L + net P&L, 2026-07-05): built from
pmv2_autotrade_orders.realized_pnl_usd(CLOB-settled, net of fees). Two reusable scripts —dashboard_data.py(JSON pull from the live DB via duckdb+postgres READ-ONLY) +build_dashboard.py(self-contained dark HTML) — currently in the session scratchpad (ephemeral; persist to reposcripts/if kept); deployed as a claude.ai artifact = SNAPSHOT, not live (no network → refresh = re-run + redeploy). Snapshot: booked ~+307; xrp/doge both-sides green (~78%), sol-down/eth-down the soft down cluster, btc-up the −$171 drag (now dry). - crypto-shortterm-pnl-onchain-cash-truth-2026-07-06 — realized-cash truth + current state (2026-07-06): three P&L metrics disagree — on-chain cash (TRUTH = Σ REDEEM+SELL−BUY) >
realized_pnl_usd(correct but lags at resolution, reconciles overnight) > PM UI “profit” (INFLATED 2–6×: MTM + gross of fees; wallet1 UI90). Current: combined realized cash **0 idle USDC. - crypto-shortterm-loss-investigation-real-vs-onchain-edge-2026-07-10 — the 3-day sub-breakeven slide, on CLOB-truth
realized_pnl_usd(2026-07-10): 07-05 +15 / 07 +120 / 09 −170 (partial) (live lanes) — a slide from 07-08, not a self-contained 07-09 blowout; corrects the repoHANDOVER.md“+448”. The real money-at-risk edge is razor-thin ~1–3pt over breakeven (consistent with the 73.7% WR vs ~73% BE); the on-chainresolved_upgauges read ~10pt too healthy on the filled subset (see Data & APIs). Un-peer-reviewed, read-only.