Skip to main content

Interactive pricing calculator

Price a contract step by step and see every formula at work. Change any input on the left and each step, figure and chart recalculates with the same formulas the pricing engine uses. Values in teal in the formulas are BlockFinaX decisions; the walkthrough explains each one.

Buyer pays1,320.27 USDC
Most it can pay8,035.71 USDC
Chance it pays26.7%
Fair rate1.084%
Part 1

What the protection pays

Start with the outcome: what the buyer gets back for each possible rate at expiry.

1

Today's rate

Everything is measured from today's rate: it is the starting point for the price and for the payout. The engine reads it from the protocol's market data feed.

Today's rate, S11.2000 GHS per USD
Standard: institutions price and settle against a recognised fixing for each currency, set out in EMTA templates [8].
2

The payout rule

Nothing is paid unless the rate ends above the strike 11.60. Above it, each step pays a fixed amount until the limit 12.50. Drag the slider to try a rate at expiry.

payout=notional×max⁡(0, min⁡(R, C)−K)Smost it can pay=notional×∣C−K∣S\text{payout} = \text{notional} \times \frac{\max\big(0,\ \min(R,\,C) - K\big)}{\textcolor{teal}{S}}\qquad \text{most it can pay} = \text{notional} \times \frac{|C - K|}{\textcolor{teal}{S}}
12.19
0k2k5k7k9kS 11.20K 11.60C 12.50
Rate at expiry, R12.1947
Payout5,309.37 USDC
Most it can pay8,035.71 USDC
Decision: the move is converted at today's rate and capped at the limit, so the maximum payout is known at purchase and reserved in full. A call spread for an Up cover, a put spread for a Down cover [6]. Handbook chapter 9.
Part 2

How likely each outcome is

The engine estimates how the rate could move before expiry. Four things decide that.

3

Time to expiry

The longer the contract runs, the further the rate can wander. Time is counted to the second from the quote until the end time, so a short contract bought earlier in the day costs slightly more.

T=seconds until 14:00 UTC on the end date31,557,600T = \frac{\text{seconds until } \textcolor{teal}{14{:}00\ \text{UTC}} \text{ on the end date}}{31{,}557{,}600}
Duration30 days
T, in years0.08214
Trading days, N21
Decision: contracts end at 14:00 UTC on the end date, weekends moved to Monday. Time in years as in every option model [6].
4

Expected drift

Some currencies weaken steadily against the dollar. The expected drift moves the centre of the likely outcomes.

μ=1Yln⁡StodaySY years agoq=r−μF=S eμT\textcolor{teal}{\mu = \frac{1}{Y}\ln\frac{S_{\text{today}}}{S_{Y\ \text{years ago}}}} \qquad q = r - \textcolor{teal}{\mu} \qquad F = S\,e^{\textcolor{teal}{\mu} T}
USD interest rate, r4.20%
Five-year trend, μ12.00%
q = r − μ-7.80%
Expected rate at expiry, F11.3109
Decision: the standard method takes the drift from the interest-rate gap (covered interest parity) [1]. Frontier currencies have no reliable forward market or usable local rate, so the pair's own five-year trend replaces it, capped at ±50% a year. Handbook chapter 5.
5

Volatility

How much the rate swings, the input that moves the price most. The engine starts from recent swings, adds a margin for the market type, holds a minimum, and blends toward the long-run level over the contract.

σ0=min⁡ ⁣(300%, max⁡(5%, σfloor, σrecent(1+m)))w=1−pNN(1−p)σ=σL2+w (σ02−σL2)\sigma_0 = \min\!\Big(300\%,\ \max\big(5\%,\ \textcolor{teal}{\sigma_{\text{floor}}},\ \sigma_{\text{recent}}(1+\textcolor{teal}{m})\big)\Big) \qquad w = \frac{1-\textcolor{teal}{p}^{N}}{N(1-\textcolor{teal}{p})} \qquad \sigma = \sqrt{\sigma_L^2 + w\,(\sigma_0^2 - \sigma_L^2)}
Recent volatility9.00%
× (1 + 0.750) Frontier margin15.75%
Minimum 15%15.75%
σ₀, between 5% and 300%15.75%
Long-run σL, persistence p18.00%, 0.93
Weight w0.5321
Volatility used, σ16.84%
Decision: with no options market to read volatility from, the historical figure gets a margin and a minimum for the market type, because history understates risk in thin markets. RiskMetrics [4] and GARCH(1,1) [5]. Handbook chapters 3 and 4.
6

Jump risk

Frontier currencies sometimes jump in a single day. Everyday volatility misses this, so the engine adds a chance of jumps.

k=eμJ+σJ2/2−1λ′=λ(1+k)P(n jumps)=e−λ′T(λ′T)nn!k = e^{\textcolor{teal}{\mu_J} + \textcolor{teal}{\sigma_J}^2/2} - 1 \qquad \lambda' = \textcolor{teal}{\lambda}(1+k) \qquad P(n\ \text{jumps}) = \frac{e^{-\lambda' T}(\lambda' T)^n}{n!}
Jumps a year λ, average μJ, spread σJ2.0, 8%, 12%
Expected jumps before expiry, λ′T0.1792
Chance of 0, 1, 2 jumps83.59%, 14.98%, 1.34%
Decision: jump settings come from the market type, because one currency has too few jumps to fit them; they can be set for a single pair. Merton [3]. Handbook chapter 8.
7

The likely rates at expiry

Steps 3 to 6 together give the spread of possible rates at expiry. Laid over the payout rule, the shaded part is where the contract pays.

likelyrareS 11.20K 11.60C 12.50
How likely each rate isRates where it paysPayout at that rate
Chance it pays something26.7%
Chance it pays in full7.4%
Chance it pays nothing73.3%

These chances come from the pricing model, not a forecast. Handbook chapters 1 and 2.

Part 3

The fair price

The fair price is the average payout across the likely rates, in today's money.

8

Option values

The currency option formula does that averaging exactly: it values an option at the strike and one at the limit, for each possible number of jumps, and the contract is worth the difference.

d1=ln⁡(S/K)+(r−q+12σ2)TσTd2=d1−σTCall(K)=Se−qTΦ(d1)−Ke−rTΦ(d2)d_1 = \frac{\ln(S/K) + \big(r - \textcolor{teal}{q} + \tfrac12\textcolor{teal}{\sigma}^2\big)T}{\textcolor{teal}{\sigma}\sqrt T} \qquad d_2 = d_1 - \textcolor{teal}{\sigma}\sqrt T \qquad \text{Call}(K) = S e^{-\textcolor{teal}{q}T}\Phi(d_1) - K e^{-rT}\Phi(d_2)
V=∑n=050e−λ′T(λ′T)nn![Call(K; σn,rn)−Call(C; σn,rn)]σn=σ2+nσJ2TV = \sum_{n=0}^{50} \frac{e^{-\lambda' T}(\lambda' T)^n}{n!}\Big[\text{Call}(K;\ \sigma_n, r_n) - \text{Call}(C;\ \sigma_n, r_n)\Big] \qquad \sigma_n = \sqrt{\textcolor{teal}{\sigma}^2 + \frac{n\textcolor{teal}{\sigma_J}^2}{T}}
d₁, d₂ at the strike (no jumps)-0.4987, -0.5470
Call(K) without jumps0.105120 GHS
Call(K) with jumps0.206256 GHS
Call(C) with jumps0.084845 GHS
Spread value V0.121411 GHS per USD
Standard: Garman-Kohlhagen [1], extending Black-Scholes [2], with Merton's jump sum [3]; Φ by Abramowitz and Stegun [7]. Handbook chapters 6 to 10.
9

Fair premium and checks

The spread value becomes a premium in USDC and a fair rate, and the quote is checked before it is signed.

fair premium=notional×VS1.5≤most it can payfair premium≤100\text{fair premium} = \frac{\text{notional} \times V}{S} \qquad \textcolor{teal}{1.5} \le \frac{\text{most it can pay}}{\text{fair premium}} \le \textcolor{teal}{100}
Fair premium1,084.03 USDC
Fair rate (signed as 10,840 millionths)1.0840%
Most it can pay ÷ fair premium = 7.41Quote allowed
Decision: refuse quotes that are too cheap to be real (over 100) or too dear to be useful (under 1.5).
Part 4

What the buyer pays and receives

The contract applies the pool's terms to the signed fair rate, and later pays from the oracles' agreed rate.

10

Premium

The pool's underwriters sell at a multiple of the fair rate, their markup; the protocol adds a purchase fee.

premium=notional×fair rate×markupbuyer pays=premium×(1+purchase fee)\text{premium} = \text{notional} \times \text{fair rate} \times \textcolor{teal}{\text{markup}} \qquad \text{buyer pays} = \text{premium} \times (1 + \textcolor{teal}{\text{purchase fee}})
Fair rate1.0840%
× markup 1.161.2574%
Premium1,257.40 USDC
Purchase fee 5.0%62.87 USDC
Buyer pays1,320.27 USDC
Decision: each pool sets its markup (0.9 to 5); fees are fixed per pool in the contract.
11

Settlement

After the end time the oracles report the rate; the contract settles once enough of them agree within 1%, and the buyer claims the payout less the payout fee. Try a rate:

12.19
Agreed rate at expiry, R12.1947
Payout5,309.37 USDC
Payout fee 2.0%106.19 USDC
Buyer receives5,203.19 USDC
Result after what was paid3,882.92 USDC

Example inputs, not live rates. The full method, every decision and the references are in the walkthrough and the formula handbook.