About the project
Arbitrage today is hunted across platforms; we hunt it across events. We build a simple Bayesian map of real-world events on Polymarket, give each link a confidence weight, and watch for brief moments when our model’s implied odds don’t match the live market price. When a mismatch appears and passes our guardrails (latency, slippage, liquidity), we fire a trade on Polymarket (paper in the demo). Every decision is snapshotted and attested so depositors can verify the math later.
What inspired us
Dutch-book logic says if mutually exclusive outcomes add up to less than 100%, you can lock in profit. On Polymarket you can’t short, so we look for under-priced baskets and, more importantly, cross-event inconsistencies that last longer than the obvious pairs. Simple edges vanish in milliseconds; deeper event chains give us a better shot.
How we built it
We pull all active events and markets (7–49 days out), store them in Postgres, and group near-duplicate events with embeddings so we don’t compare everything to everything. Then we run a lightweight Bayesian propagation to get model odds, compare to market odds, and raise alerts. Before any action, we snapshot inputs and outputs, hash them, and get an independent attestation. The vault only acts with a valid attestation and matching hashes.
What we learned / challenges
Speed and slippage kill small edges. Liquidity is uneven. Many markets describe the same thing with different text, so embedding and grouping events first is critical. Verification matters: users should trust the process, not our claims. Calibration and replayable snapshots keep us honest.
Built With
- and
- attestations;
- bayesian
- chroma
- commitments
- data.
- e5-large-v2)
- embeddings.
- for
- gamma/clob
- key
- merkle
- next.js
- node.
- on-chain
- pattern
- polymarket
- postgresql
- prices.
- propagation.
- public
- python
- registry
- search.
- sentence-transformers
- signed
- simple
- typescript
- vector
Log in or sign up for Devpost to join the conversation.