Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Exit liquidity for tokenized US stocks on Bitget, measured from the book that exists, at the size you actually hold.
FinancePython · JavaScriptGitHub @RitapossibleOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Built for Bitget AI Hackathon S2 - AI Trading Desk track
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Bitget lists tokenized US stocks you can enter in one click. Egress measures
what it costs to leave.
Built for the Bitget AI Base Camp Hackathon S2 - AI Trading Desk, Execution
Assistance.
Every other tool for tokenized equities is built for the same ten names. The risk
lives in the rest: listed in one click, and in practice unexitable. You find out
at the moment you need out.
Egress crawls the whole listed universe every five minutes and answers a question
nobody else is asking - *at my size, what does leaving actually cost, and when is
it cheapest?*Read the full README ↗Bitget lists tokenized US stocks you can enter in one click. Egress measures what it costs to leave.
Built for the Bitget AI Base Camp Hackathon S2 - AI Trading Desk, Execution Assistance.
Live: egress-v1.vercel.app
Every other tool for tokenized equities is built for the same ten names. The risk lives in the rest: listed in one click, and in practice unexitable. You find out at the moment you need out.
Egress crawls the whole listed universe every five minutes and answers a question nobody else is asking - at my size, what does leaving actually cost, and when is it cheapest?
POST /api/ask. The reader picks a ticker and
a size; every number after that is computed by code.Stated rather than listed, because "integrated" and "answering" are different claims and only one of them is checkable.
| Skill | Where | What it returns today |
|---|---|---|
bitget-mcp-server → equity_price_quote | egress/mcp.py, on every desk answer | Answering. The listed share price behind the token, which is where the basis figure comes from. |
bitget-signal → news_feed/latest | egress/signal.py, on the Ask path, 6s fuse | Reachable, carrying nothing. 44 feeds, 0 articles. The desk prints that rather than assembling a briefing out of an empty feed. |
Agent Hub CLI → market/orderbook | egress/hub.py, every crawl | Answering, and used as an adversary. See below. |
The news Skill cannot move the number. The exit cost comes from the venue's order book; news has no business touching it. The block is built after the cost is already fixed, and a test asserts the entire answer is byte-identical whether that service replies, returns nothing, or dies. A news feed wired into a pricing answer is a liability the moment it is slow or wrong.
The Agent Hub is not a wrapper around the REST call this project already makes - it is the adversary to it. Everything here comes through one HTTP client, and a bug in that client would look exactly like a property of the market. That is an uncomfortable position for a project whose argument is that the venue's own numbers do not always agree with each other. So the same exit is priced again through a different SDK in a different process, costed by the same code so any gap is the book rather than the arithmetic. Agreement does not prove the cost is right - both clients read the same exchange and would inherit the same error - it rules out our own transport, which was previously unchecked. The comparison is published, disagreements included.
Python 3.10 or newer (CI tests 3.10 to 3.13). No runtime dependencies - the standard library does the HTTP, the gzip and the CSV.
python -m egress.crawl --once one snapshot of the whole universe
python -m egress.crawl --loop keep going, five minute cadence
python -m egress.crawl --coverage what the record holds, including gaps
python -m egress.page rebuild the site into docs/
python -m unittest discover -s tests
No API key. No account. Every endpoint the crawler uses is public. The one secret in the project is the reader key for the desk, and it lives in the serverless function, never in a page.
Median spread on tokenized US stocks, by market phase, against crypto pairs on the same venue as a control. The live figures are on the evidence page and are regenerated from the record on every crawl - nothing in this README is a measurement, because a number typed into a document goes stale the moment the record moves and nobody notices.
What the record shows so far: the spread on a tokenized stock widens by roughly an order of magnitude once New York closes, while the crypto control on the same matching engine and the same fee schedule does not move. Same venue, same engine, same fees - so the effect is not venue-wide.
How long a name has been listed matters more than anything else measured here. The headline medians cover names listed thirty days or more, with recent listings reported beside them rather than mixed in. That split is not tidiness: Bitget listed 480 tokenized stocks in a single wave and the median taken across every quoted name jumped by more than half, with nothing happening in the market at all. Split apart, recently listed names cost several times more to leave overnight than established ones - and a new listing is exactly the position a holder is least likely to know is expensive to leave. Both cohorts are published, and so is the blended figure, so the composition effect stays visible instead of being quietly corrected away.
The listed universe is re-read hourly while the crawl runs, and the site says how old that count is whenever it is worth saying. Listings arrive in bulk; a count nobody can see the age of is the kind of stale number this project exists to avoid.
A few days is not a study. Every table on the site prints the snapshot count behind it and the gaps in the record, so you can see how thin it still is.
docs/HACKATHON.md - each handbook requirement mapped to
the file that satisfies itdocs/SUBMISSION.md - the six-part descriptionARCHITECTURE.md - the decisions that matter, and whyPLAN.md - schedule, cut list, what is being testedMEMORY.md - verified facts and the traps already hitMIT, see LICENSE.