Parametric cover · Somnia · dreamDEX

Your position buys its own cover, in the same block.

You hold ETH. It can fall while you sleep, and the instruments that would cover that fall expire every sixty seconds — so in practice nobody rolls them. Ballast does, with no keeper in the money path.

Same block · zero latency476941284
block 476941284
dreamDEXcreates the market
0x0434d364…d075d5fcd4
0blocks between
Ballasthandler runs, same market
0x79bf978b…ce061eaab74f1

Two reactive systems in one block. dreamDEX creates markets inside a callback of its own — MarketCreated is log 75 here, not the summary — and Somnia’s precompile runs the handler inside the block that triggered it.

The problem

Cover exists. Keeping up with it does not.

On this venue the instruments that would cover a fall expire every sixty seconds. Nobody sits up all night re-buying them, so the position ends up uncovered — not by decision, but by fatigue. Ballast is the part that does not get tired.

10,206
callbacks delivered without a keeper
  • cover opened
    147.91 tUSDC · asked 250 bps, got 99 bpsblock 485350182
  • No exposure
    no measured spot position in this asset — nothing to coverblock 485349902
  • window opened
    dreamDEX rolled a new window; Ballast reacted in the same blockblock 485349422
  • cover opened
    135.20 tUSDC · asked 250 bps, got 131 bpsblock 485349582
  • No liquidity
    the Down book was empty; refused rather than mispricedblock 485349902
  • attempt 1
    book not priceable yetblock 485350182
  • cover opened
    147.97 tUSDC · asked 250 bps, got 84 bpsblock 485349582
  • No exposure
    no measured spot position in this asset — nothing to coverblock 485349902
  • attempt 1
    covered 1block 485350182
  • cover opened
    147.97 tUSDC · asked 250 bps, got 85 bpsblock 485349582
  • window opened
    dreamDEX rolled a new window; Ballast reacted in the same blockblock 485350022
  • gave up
    3 attempts, book never became priceableblock 485349902
  • No exposure
    no measured spot position in this asset — nothing to coverblock 485350182
  • window opened
    dreamDEX rolled a new window; Ballast reacted in the same blockblock 485350022

Real windows from the recorded history, 13,213 of them across 1–11 September 2026. This is the thing you would have to keep up with.

How it works

Three steps, and the third one is nothing.

Ballast covers what it can measure you holding on chain. Never a number you type in.

Hold

Hold something the chain can see

Ballast covers what it can measure you holding on chain — never a number you type in. On testnet that is one transaction and no approval.

Set

Say how deep a fall to cover

The make-whole point, and the most you will pay for it per window. That is the whole of the policy. Revoking takes effect immediately and no operator can block or delay it.

Nothing

Then nothing, for as long as you like

Every window, in the block it opens, Ballast buys cover — or declines it and records which reason. No keeper in the money path. Your collateral stays in your name and unreserved balance is withdrawable unconditionally, throughout.

The honest part

Exact at one depth. Wrong on both sides of it, on purpose.

Event Contracts are at-the-money binaries: one strike per window, struck at the window’s opening price, paying a fixed amount per winning contract. There is no strike ladder — 562 markets checked, at most one strike per venue per window. So no quantity of contracts produces a flat net line, and Ballast does not claim one. The gap either side is basis risk, the defining property of parametric cover — the same trade flight-delay insurance makes, paying the same whether you missed a meeting or a wedding.

Above the point: you come out ahead

A small fall costs your spot position little, but the cover pays its full fixed amount anyway. At a 1% fall on 4,491.02 tUSDC of exposure, spot loses 44.91 and the cover nets 112.28 — so you finish ahead. That is not a bonus; it is the same fixed payout arriving when it was not fully needed, and you paid for it.

At the point: exactly whole

The make-whole point is the one depth where the fixed payout and the spot loss are equal. You set it; Ballast sizes the position to hit it. Everything either side of this line is basis risk, and it is the property you are buying rather than a defect to engineer away.

Below the point: you are short

The payout is fixed, so a larger fall is not matched by a larger payment. At a 5% fall spot loses 224.55 while the cover still nets only 112.28, leaving you 112.28 down. Deeper cover means a deeper make-whole point and more premium per window — there is no free version of this.

Not an illustration. Every figure is computed from the live measured exposure of 4,491.02 tUSDC (2 WETH at 2,245.51), the cover price of 0.494 actually paid on a settled position, and the 250 bps make-whole point on the live policy. Ballast always shows the make-whole point it achieved, never the one you asked for, and says which limit bound the size when they differ.

It has already done this

128 settled positions, 77 of which paid.

One account’s history across every engine Ballast has deployed, on 40 one-minute, 71 five-minute, 13 fifteen-minute and 4 one-hour windows.

Cumulative net · settled positions
+1490.84 tUSDC
The ledger · settled
Paid out to cover  14,787.00
Premium paid− 13,296.16
Net, settled+1,490.84
tUSDC · 128 settled positions
Windows that paid
77 of 128
60% — and the 51 that did not are the same product working
How to read this

Read this as a sample, not a result. These are 128 short windows on a thin testnet book — 40 one-minute, 71 five-minute, 13 fifteen-minute and 4 one-hour. Our own economics says rolling cover that often is ruinous over any real horizon — at those intervals the spread alone runs to thousands of percent a year, which is why the product defaults to the four-hour and twenty-four-hour windows. A favourable run of 128 does not contradict that. It is what a small sample looks like.

At-the-money cover is the most expensive cover this instrument offers. Because the strike is the window’s open, there is no cheaper out-of-the-money strike to buy instead, so you pay for the very likely small moves too. Recorded run, 1–11 September 2026.

And it refuses

A refusal is a decision.

13,248 windows were declined and 7,374 were abandoned after the retry ladder ran out. Each carries the reason the contract recorded — not a generic failure. A system that shows only what it did is hiding what it chose not to.

No exposure
7,043
no measured spot position in that asset — nothing to cover
No liquidity
3,792
the Down book was empty; refused rather than mispriced
Below minimum lot
1,411
the affordable size rounds to zero on the venue's lot grid
Placement failed
453
the purchase reverted — the pool refused it, or it ran out of gas; the rest of the batch continued
Cover too expensive
385
Down priced above 0.90, where size diverges

Current state

Subscribed, but it has stopped being woken.

We said here that Somnia bills a reactive callback at its gas limit. It does not, and it never did: every charge we could check — 255 blocks on six engines, 1 to 11 September — is gas used × price, to the wei. The 0.07 STT a wake we quoted was our own contract’s worst-case estimate, read as a bill. The 1–2 September run cost 27.23 STT for 2,715 wakes, not the 190 we claimed.

Acting on that number, we cut the limit to 4,000,000 to save money that was never being charged, and no purchase fit: a callback that buys cover has used up to 9,218,505 gas, so the limit is back at 10,000,000. Restarting took a new contract in the end, because every order the old one placed outlived a sixty-second market. Opening a subscription requires the engine to hold 32 STT, a floor checked once at creation and never spent. It holds 0.07. topUp() is payable and permissionless, so anyone can fund it — but reopening a closed subscription is owner-only.

Engine balance
0.073102 STT
Subscribed
true — but stale
Callbacks delivered
36,634
Last callback
2026-09-26 07:30:00 UTC
Vault balance
11,024.20 tUSDC
Withdrawable now
11,024.20 tUSDC
ETH spot
2,245.51
Read at
2026-11-03 05:32:51 UTC

Questions

The ones worth asking.

Every number in these answers comes from the chain or from the recorded run. None of them is illustrative.

What happens if ETH falls 50%?
You are covered for a fraction of it, and the page will say so rather than imply otherwise. The payout is fixed: 221.89 contracts pay 221.89 tUSDC whatever the size of the fall. At a 50% fall your spot loses 2,245.51 and the cover nets +112.28, leaving -2,133.23. That is basis risk working against you, and it is the trade parametric cover makes. If you want deeper cover you set a deeper make-whole point and pay more premium per window for it. The full payoff, with the three regions →
Do I pay every window?
Yes. Premium is paid per window, which is exactly why the frequency matters so much. At the live price a 250 bps make-whole point costs 109.61 tUSDC per window on this position. Rolling that every sixty seconds is ruinous — the spread alone runs to hundreds of percent a year — which is why the product defaults to the four-hour and twenty-four-hour windows. The sixty-second series exists here because it is what makes the same-block behaviour visible in a demo, not because it is what you should buy. What the roll frequency costs →
Where does the payout come from?
The binary market’s own collateral. Ballast buys Down contracts on dreamDEX with your deposited tUSDC and holds them in its own name; when the window resolves it redeems them and credits the proceeds straight to your vault balance. There is no counterparty of ours, no pool of ours, and nothing to be solvent. A losing redeem returns zero rather than failing, which is a normal outcome, not an error. The contracts and the on-chain path →
Why did the engine stop in September?
We gave the wrong reason for nine days, so here is the corrected one. We reported that Somnia billed a reactive callback at its gas limit — 0.07 STT a wake. It never did: every charge is gas used × price, about 0.010 STT a wake. The 0.07 was our own contract’s worst-case estimate. Acting on it, we cut the limit to 4,000,000, too small for any purchase; and opening a subscription needs 32 STT held, against a faucet paying 0.5 a day. Restarting took a new contract in the end — the old one’s orders outlived sixty-second markets. topUp() is payable and permissionless, so anyone can fund it; reopening the subscription is owner-only. The measurement behind it →
Is my collateral locked?
No. Unreserved collateral is withdrawable unconditionally and no operator can block or delay it. Only collateral committed to cover that is currently open is reserved, and that releases automatically when the window settles. Revoking the policy stops new cover immediately; cover already open runs to settlement and pays out to you as normal. Custody, consent and revocation →
What does it do when it cannot price the book?
It refuses, and records why. If the Down side is one-sided, or priced above 0.90 where size diverges, or the affordable size rounds below the venue’s minimum lot, the window is skipped with that reason written to the chain. It never guesses a price, and it never reports a position as covered before the fill is confirmed. Every refusal reason →

What is not proven

A void has never happened on chain.

The void settlement branch is covered by unit tests against a mock and has never executed against a real voided market.

poke() is untested at mainnet liquidity.

It has only run against thin testnet books. Behaviour under deep books — partial fills in particular — is not demonstrated.

SOMI cannot be covered at all.

Binary markets exist for BTC and ETH only, so SOMI spot has no corresponding binary. The exposure source returns zero rather than guessing.