A DreamDEX event contract asks one question: does this window close at or above the price it opened at? That makes the fair value of its YES token a real probability - so Vaticr derives it from the price process, tilts it with live news, and lets you trade the difference.
live from somnia testnet · refreshed every 12s
the honest part
Event contracts are rolling Up/Down windows on BTC and ETH, minted per window by BinaryMarketsModule. There is no permissionless creation entry point and the question text is fixed.
Settlement is automatic. The question is scheduled on the OracleHub at creation with its resolution gas reserved, and Somnia reactivity fires the callback at expiry.
One on-chain order book per market, quoted in YES terms, where a NO price is always 1 − yes. There is no curve to provide liquidity to.
So Vaticr does what is actually unowned. It decides what these windows are worth, trades that view through the official Bot Kit, and makes the resulting track record auditable by someone who does not trust it. The pivot cost nothing in ambition - it swapped a subsystem the protocol forbids for one it rewards.
how it works
Over seconds to an hour a driftless geometric Brownian motion is a defensible model of BTC/ETH. With S the current level, S₀ the window’s opening price and τ the seconds remaining:
This is already an edge: the honest read of where a window sits against its own open, which a book of people watching a candle chart tends to misprice near the extremes.
Five public feeds are scored for direction, salience and source credibility. Each headline contributes a log-likelihood ratio:
Every contribution is discounted three ways - by credibility, by exponential time decay, and by how much of the window is left, since a headline cannot move a contract expiring in four seconds. The total is hard-capped so a burst of correlated stories cannot run the posterior into a corner.
When the posterior clears the touch - never the mid, because paying the spread is how a signal with real edge still loses money - it crosses with an IOC. Otherwise it rests a two-sided quote.
Every forecast is committed before its window closes, then Brier-scored against what happened. A model that cannot beat 0.25 is a coin flip with extra steps, and this is the only way to know.
evidence
| sample | 900 forecasts / 300 windows |
| Brier | 0.15522 |
| coin flip | 0.25 |
| skill | +0.3791 |
| accuracy | 0.7622 |
| log loss | 0.46816 |
skill by time elapsed
Skill rises as the window closes. That is the signature of a model reading the price process rather than fitting noise: information accumulates and the posterior sharpens.
Volatility and level at each decision point use only ticks at or before that instant. All 900 cases assert it, and 120 are re-run against a physically truncated history so the assertion is not vacuous.
The headline layer is excluded, because a historical scout window cannot be reconstructed without leaking the future. This measures the price-process prior alone.
The 300s windows - where the bot actually trades - score +0.3865 over n=597. The long windows are thin and closer to a coin flip on small samples.
the mechanic
Because two opposite-side buyers cross against each other, that pair quotes both sides with no inventory and no counterparty maker. A conventional maker must hold what it sells. Vaticr never sells.
Since it only buys, its position is complete sets plus a remainder. A complete set redeems for exactly 1 collateral whatever the outcome - riskless. The only exposure is the net YES-minus-NO imbalance, which the inventory cap bounds directly.
what we measured
The docs describe the reference only as “a multi-source price reference”, which reads like spot. The feed publishes both. It settles on mark.
close-vs-open over the eight most recent settlements
The two disagreements are exactly the windows where the series drifted apart in direction - the near-the-money ones, where the probability is most sensitive and most worth trading.
Because mark is an EMA sampled every second, consecutive increments are heavily autocorrelated. The textbook estimator measures the smoothing, not the process.
| step | 1s | 5s | 15s | 30s | 60s |
|---|---|---|---|---|---|
| mark | 0.079 | 0.155 | 0.234 | 0.278 | 0.264 |
| spot | 0.248 | 0.272 | 0.298 | 0.303 | 0.274 |
Ground truth from realised 300-second moves is ≈0.33. Fed into a Gaussian model, 0.079 drives P(Up) to 0.0000 on windows that are genuinely a coin flip - maximum confidence exactly where there is least information.
under the hood
git clone github.com/mrnetwork0001/Vaticr
cd Vaticr
npm install
python -m venv .venv && ./.venv/bin/pip install -r requirements.txt
cp .env.example .env
npm run bot:start # brain + bot, one commandStarts in DRY_RUN, logging every order it would place and sending nothing.
The forecast registry is deployed, with a forecast committed on-chain 318 seconds before its window closed and a real order placed.
0x3D04ff026A4Dc553a2ae9071dbc238a40D24b27AEvery live BTC and ETH window with its prior, its posterior and the book side by side - plus the headlines moving them, every settlement recomputed from the oracle, and a wallet that can trade the gap.