Last updated: 2026-07-09
This file is the honest record of what was tried, what died, and why. It is not
a README that sells the project — it is the documentary proof that the system
was built to say no, and that it did so, repeatedly, without burning real
capital. Every strategy below ran in paper (LIVE_MODE=False); zero real
dollars were exposed at any point.
If you came here looking for a money printer: there isn't one. What there is is a cost-aware research infrastructure and a method that caught eight self-deceptions in two nights. That is the haul.
Five hypotheses tested with preregistered gates. Five dead or dying. Zero tradable edge confirmed. Zero capital lost.
| Strategy | Outcome | Why |
|---|---|---|
| UMA whale-conflict | REFUTED (clean kill) | Whales do vote their own book (true, p=1.5e-05) but their stake is negligible against the total DVM: they do not move the outcome. corr(tilt, outcome) = −0.02, Fisher p = 1.00. |
| Cross-platform arb | DEAD | 0 EXACT pairs out of 2500 candidates. No real rule equivalence across the scanned universe. |
| Void-arb (disputes) | DEAD in one night | The "67% voids" was a mislabel: the sentinel is a RESET (it goes back to a vote), not a refund. True voids: 5 out of 973. |
| RF trader (Polymarket) | headed for the archive | Longshot bias: edge ~+30% almost uniform on every entry, sub-5c markets. Same signature as the dojo-dante detectors. Formal verdict 2026-07-20. |
| negRisk set-arb | verdict 2026-07-20 | 345 scans, 0 windows with ≥2c net margin on the verified whitelist. Post-2026-03-30 sports fees erode the margins. Trend: fail. |
negRisk scanner under launchd (auto-restart), two nohup traders (RF Polymarket + paper Kalshi), daily Telegram digest at 09:00. 430 passing tests (14 skipped).
- negRisk: 38,608 log rows over 345 scans (2026-07-07 → 07-08). Windows with
a net margin ≥2c on the verified whitelist: 0. The only positive windows
sit on
catchall(exhaustiveness inferred, not verified, 85 cases) or on non-exhaustiveGATEDevents (traps by construction: the sum is below 1 because an outcome is missing, not because there is edge). 3 sets open in paper. - RF trader: 80 trades, 76% bought below 5c. Incident 2026-07-07: 34 positions opened in 10 minutes, −$105.68, circuit breaker fired correctly. The digest shows edge ~+30% uniform = systematic bias, not alpha.
- Paper Kalshi: 1,633 trades, +$3.19 lifetime (noise).
Risk-management bugs found and fixed in this cycle:
- Daily halt that did not auto-reset across midnight with the process alive
(fix:
halt_scopedaily/sticky, reset insidecan_trade()). - Per-process
cumulative_pnlmasquerading as lifetime (fix: seed from the CSV at startup). - Non-atomic position-state writes; a malformed event that could crash-loop the scanner; per-share fee multiplied by the notional.
Two additive modules, no wiring into the trading loops.
UMA dispute module. WSJ hypothesis: UMA whales holding Polymarket positions on the disputed market vote their own book. Pipeline entirely on public RPC, zero paid Dune.
- Base rate "the DVM confirms the proposal": 77.6% (246/317). Predicted 85% / 80-85%. Close, both high.
- Dispute↔DVM vote join: 939/973, verified (the stake-weighted vote
reproduces the on-chain
settled_price939/939 — a misjoin cannot do that). - Historical position reconstruction: Safe proxies derived offline via CREATE2,
CTF balances read with
balanceOfBatchpinned to the dispute block. - negRisk questionId→conditionId mapping: 830/830 questions, 100% coverage.
- Directional own-book rate: 63.2% (172/272) against 50% random, p=1.5×10⁻⁵. The phenomenon is real.
- Edge backtest: NOT TRADABLE. N=76, sign accuracy 6/76=0.079, net PnL −$2,314.91 (fees $317.04), temporal gate failed (+0.005 then −0.614). Rule-independent test: corr(tilt, outcome) = −0.020, Fisher p = 1.00.
Cross-platform arb module (rules-first). Kalshi PROD, two-stage matcher (fuzzy → structured diff of the rules → EXACT/DIVERGENT/UNKNOWN), real fees. First real scan: 0 EXACT, 1775 DIVERGENT, 725 UNKNOWN. Zero signals. The old version (3c divergence on textual similarity) would have found dozens of fake arbs; this one tells the truth.
whale holds a directional position → TRUE
→ votes their own book → TRUE (63.2%, p=1.5e-05)
→ that vote moves the DVM outcome → FALSE (negligible stake vs total)
→ the market had not priced it → irrelevant, link 3 is broken
The conflict of interest is documentable but not predictive. It is an oracle-integrity result, not a strategy. The preregistration had named link 3 as the likely killer: so it was.
Methodological note: the preregistered metric (share of whales with conflict_rate > 0.8) came out at 0.176, almost identical to the predicted 18%. It is an artifact, not a confirmation: a whale with a single linked vote scores 1.00 or 0.00 by construction. Raising the floor to ≥3 linked votes collapses it to 4.2%. The prediction was "confirmed" by n=1 noise. Retracted.
- Sentinel mislabel — the "67% voids" was a RESET, not a void. Caught by
reading the
UmaCtfAdaptersource, not by trusting the number. - Silent null RPCs — some public RPCs answer
nullinstead of an error on old txs: read naively it gave 941/973 false negatives in an apparently healthy dataset.call_nonnull()rotates on null. - Dune cartesian product — joining on the hash alone merged the reset
rounds (577k rows). Clean key:
(stamped_hash, dvm_request_time). - Sharpe on 6 winners — the Hill estimator returns
infon few tail observations; read as α≥2 it would have printed a Sharpe on 6 winning trades out of 76. Withdrawn, fallback to gain-to-pain. - The n=1 artifact in conflict_rate >0.8 (see above).
- Net vs gross exposure — an equal YES+NO is a complete set that pays $1 either way (hedged inventory, not conflict). Counting it would have inflated the conflict_rate.
- Pruned node = fake archive — a pruned node answers 0 to every historical query: same class as the nulls. Asserted a nonzero control balance before trusting the archive.
- Self-diagnosed specification error — the forecast could not disagree with extreme prices (flip in 1 trade out of 76); recognized, and followed by a rule-independent test that killed the hypothesis anyway.
| Metric | Prediction | Observed | Outcome |
|---|---|---|---|
| Base rate, proposal confirmed | 85% / 80-85% | 77.6% | close, both high |
| Whale conflict_rate >0.8 | 18% / <30% | 0.176 (n=1 artifact) | bogus "bullseye" |
| Backtest edge passes the gate | 25-30% | failed decisively | right direction, wrong mechanism |
| Sign accuracy | 0.58 | 0.079 (inverted) | wrong |
Recurring lesson: getting the direction of a conclusion right is not understanding the mechanism. Both advisor and executor called the final verdict correctly, but neither had modelled the price distribution of disputes (concentrated at the extremes), which is what determined the outcome.
Counting the previous project too (dojo-dante): simple momentum, daily TSM, and now UMA whale-conflict — three disciplined, preregistered hypotheses, three dead, plus cross-arb and void-arb. This is not bad luck. It is that the classes of edge a single operator can generate on these markets lie in crowded or efficient corners, where the inefficiency is already compressed or never existed.
The process is first-rate — very few build a system that says no five times without losing a dollar. But the process does not manufacture edge where there is none. The open question is not "which variant to try next", it is whether the next attempt should come from a structurally different advantage (informational, or get-paid type such as liquidity/funding) rather than from another micro-inefficiency.
- Reusable infrastructure: cost-aware backtester, free on-chain dispute↔vote join, historical position reconstruction via CREATE2 + Transfer replay, negRisk mapping, gate harness with bootstrap CI, scanner, digest, hardened risk manager, 430 passing tests (14 skipped).
- One real (non-tradable) result: on Polymarket/UMA, positioned voters vote their own book (63.2%, p=1.5e-05), but their stake is negligible against the DVM — documentable conflict, oracle substantially sound on the outcome.
- A demonstrated method: preregistration, gates on both temporal halves, kill criteria, and the refusal to print numbers below the floor or a Sharpe on nonexistent tails.
Capital was never touched. The project closes these threads with the infrastructure as the haul and zero real losses — which was the entire purpose of the gates.