Skip to main content

Parametric options

A BlockFinaX hedge event is a parametric option. That phrase has two parts.

Option — the hedger pays a premium up front for the right to a payout that depends on where the underlying lands at a specific time. They're never forced to do anything; the payout fires automatically if the conditions are met.

Parametric — there's no claims process. The payout is a pure function of a number observed at expiry: the FX rate, read on-chain by the oracle network.

The payoff function

Every event has a strike, a payout cap, and a direction. Together they define a range in which the option pays out:

For an upward hedge (strikeAbove = true, e.g. you're protecting against the foreign currency weakening — USD getting stronger against GHS):

settlement price relative to strike & cappayout
settlement ≤ strike0 (option expires worthless)
strike < settlement ≤ capnotional × (settlement − strike) / initialRate
settlement > capnotional × (cap − strike) / initialRate (capped)

For a downward hedge (strikeAbove = false, protecting against the foreign currency strengthening) the geometry is mirrored — the strike is above the cap, and the payout grows as settlement falls.

This is mathematically equivalent to a call spread (or put spread for downward). The hedger is long the option at strike and short the option at cap, which bounds the maximum payout to the LPs' worst case. That bounded worst case is what makes the pool insurable in the first place.

Why a spread instead of an outright call?

Two reasons:

  1. LPs need bounded downside. An unbounded call would let one tail event wipe out the pool. The cap limits each hedger's maximum payout to notional × (cap − strike) / initialRate, which the contract enforces when computing totalMaxPayout against totalLiquidity.
  2. Premiums get cheaper. Most of the value of a deep OTM call comes from tail probability the buyer doesn't care about anyway. Capping it cuts the premium meaningfully.

The lifecycle

A few things are worth highlighting:

  • No automatic claims. Hedgers must claimPayout() to receive their payout. The contract holds the funds until they do (with an recoverExpiredPayouts admin path for unclaimed funds after a long delay).
  • LP capital and LP premiums are separate. withdrawCapital() returns the principal share; claimPremiums() returns the accumulated premiums. They can be called independently.
  • Creator earnings are a separate accrual. The underwriter who created the event gets a loyalty rate of the platform-fee component — a sliver of every hedger's premium.

What "self-priced" vs "engine-priced" means

The contract supports two pricing modes:

  • Self-priced — the creator sets premiumRate themselves and passes signature = "0x", quoteTimestamp = 0, quoteNonce = ZeroHash. The contract trusts the creator. This is the typical mode for sophisticated underwriters.
  • Engine-priced — the creator requests a signed quote from BlockFinaX's off-chain pricing engine and passes the signature + timestamp + nonce. The contract verifies the signature against the registered pricingEngineSigner and rejects stale quotes (>2 min). This is for venues that want quote-as-a-service.

Both produce a valid event; the only difference is who picked the number.