Formula handbook
Every formula the pricing uses, explained from first principles. Each chapter covers what the formula is, why it is used, how it works, every symbol, its limits, and a worked example using the figures from the walkthrough. The chapters build on each other.
- Returns, and why rates are modelled with logarithms
- The normal distribution and Φ
- Volatility, and the RiskMetrics average
- GARCH(1,1): volatility that returns to normal
- Covered interest parity and the forward rate
- Black-Scholes
- Garman-Kohlhagen: Black-Scholes for currencies
- Merton jump-diffusion
- Option spreads: a payout between two levels
- Computing Φ: the Abramowitz and Stegun approximation
- Putting it together
1. Returns, and why rates are modelled with logarithms
What it is. A return is how much the rate changed from one day to the next. Finance measures it as a log return: the natural logarithm of today's rate divided by yesterday's.
Why it is used. Log returns add up over time, and if each day's log return is random and roughly normal, the rate can never fall below zero. This model of prices, geometric Brownian motion, is the starting point of every option formula here.
How it works.
- Each day the rate moves by a small random percentage.
- Daily log returns are treated as independent and normal, with an average (drift) and a spread (volatility).
- Over years the total log return is normal, with average and spread .
- So the rate at expiry is lognormal: its logarithm is normal.
| Symbol | Meaning |
|---|---|
| log return on day | |
| rate on day | |
| , | yearly drift and volatility |
| a random shock (Brownian motion) |
The term (from Itô's lemma) separates the average of the rate from the average of its logarithm; without it the average rate would be overstated.
Limits. Real currencies have more extreme days than a normal distribution predicts, and volatility changes over time. Chapters 4 and 8 address both.
Example. With = 11.20, = 12%, = 16.84% and = 0.0821: the middle of the likely rates at expiry is 11.30, and about two thirds of outcomes fall between 10.77 and 11.86.
2. The normal distribution and Φ
What it is. The bell curve. is the chance that a standard normal number is below .
Why it is used. Because log returns are normal, every "chance the rate ends above " question becomes a lookup of . It appears in every option formula here.
Example. = 0.5000, = 0.8413, = 0.1587, = 0.9772.
3. Volatility, and the RiskMetrics average
What it is. Volatility is the typical size of the rate's moves, stated per year.
Why it is used. It is the most important input to an option price. The RiskMetrics method [4] weights recent days more than old ones, so it reacts quickly when a currency becomes turbulent.
How it works.
- Square each day's log return: that is the day's contribution to variance.
- Each day keep 94% of yesterday's estimate and add 6% of today's squared return.
- Old days fade geometrically: after 30 days a return keeps ≈ 16% of its weight.
- Convert daily variance to yearly volatility: square root, times .
The engine starts the average from the plain variance of the first 20 of its 60 returns.
Example (five illustrative days, starting from 9% a year):
| Day | Return | Daily variance (×10⁻⁶) |
|---|---|---|
| Start | 32.143 | |
| 1 | +0.4% | 31.174 |
| 2 | −0.2% | 29.544 |
| 3 | +0.9% | 32.631 |
| 4 | −0.6% | 32.833 |
| 5 | +0.3% | 31.403 |
| Yearly volatility | 8.90% |
Limits. It only looks backwards. Banks prefer volatility implied by option prices, which frontier currencies lack; the engine adds a margin and a minimum for the market type instead.
4. GARCH(1,1): volatility that returns to normal
What it is. A model of volatility that moves in waves, with turbulence fading back toward a long-run level [5].
Why it is used. A contract needs the average volatility over its whole life, not just today's. GARCH gives a closed form for that average.
How it works.
- Each day's variance blends a long-run level, yesterday's squared return and yesterday's variance.
- The persistence sets how slowly shocks fade: at 0.93 about 7% of the gap to the long-run level closes each day.
- Averaging the forecast over days gives a weight between 0 and 1: short contracts use mostly today's volatility, long ones mostly the long-run level.
The engine uses a persistence fitted for the pair where one exists, otherwise the default for its market type: 0.97 major currencies, 0.95 major emerging, 0.94 less liquid emerging, 0.93 frontier, 0.85 pegged.
Example. = 15.75%, = 18%, = 0.93, = 21: = 0.5321 and = 16.84%.
Limits. The constants come from history and can shift after a change of exchange-rate policy.
5. Covered interest parity and the forward rate
What it is. The forward rate is the rate agreed today for a future exchange. Parity says it equals today's rate adjusted by the two currencies' interest rates.
Why it is used. Option prices need the rate expected at expiry in the risk-neutral sense, and the forward rate is that number. Otherwise borrowing in one currency and lending in the other would give a riskless profit.
| Symbol | Meaning |
|---|---|
| , | interest rates of the quote currency (cedi) and the base currency (dollar) |
| the pair's five-year trend, used in place of the rate gap |
Limits. Parity needs money to move freely. Many frontier currencies have no reliable forward market or usable local rate, so the trend stands in; that is a modelling choice, not market data.
Example. = 11.20, = 12%, = 0.0821: = 11.3109.
6. Black-Scholes
What it is. The 1973 formula for the fair price of an option [2]. Scholes and Merton received the 1997 Nobel prize in economics for this work.
Why it is used. The price equals the cost of building the same payout by trading the asset and cash, so it depends on no one's forecast. It is the common language of option markets.
How it works.
- Assume the lognormal model of chapter 1 with constant volatility.
- Price as if investors were neutral to risk: grow the price at the risk-free rate and discount at it. Hedging arguments show this gives the right price.
- is how many standard deviations the expected price at expiry sits above the strike; is the risk-neutral chance of ending above it.
- The price is what you expect to receive, , minus what you expect to pay, .
Limits. Constant volatility and rates, no jumps, continuous trading without costs. Currencies most often break the no-jumps assumption (chapter 8).
7. Garman-Kohlhagen: Black-Scholes for currencies
What it is. The 1983 adaptation of Black-Scholes to exchange rates [1], the standard formula for currency options.
Why it is used. A currency earns interest while held, like a dividend. The formula accounts for both currencies' rates.
How it works. Start from Black-Scholes; discount today's rate by the base currency's interest and the strike by the quote currency's; the gap between them sets the drift, matching the forward rate of chapter 5. A put follows with signs reversed.
| Symbol | Meaning |
|---|---|
| discount rate; the engine uses the USD rate | |
| carry; in the standard method the other currency's interest rate, in the engine , so the drift equals the trend | |
| Call − Put | put-call parity, a consistency check |
Example (no jumps, = 11.60): Call = 0.105120 GHS, Put = 0.393189 GHS; Call − Put = −0.288069, matching = −0.288069.
8. Merton jump-diffusion
What it is. The 1976 extension of Black-Scholes in which the price can also jump suddenly [3].
Why it is used. Frontier currencies often move in steps. A model without jumps calls those steps almost impossible and underprices protection against them.
How it works.
- On top of everyday moves, jumps arrive at random, times a year on average.
- Each jump's log size is normal, with average and spread .
- Given exactly jumps, the rate is again lognormal, with more variance and shifted drift, so Garman-Kohlhagen prices that case.
- Weight each case by its chance and add them up.
The term keeps the expected path on the forward rate, so jumps widen the spread of outcomes without moving their centre. The engine stops the sum at 50 jumps or when the chance becomes negligible. Jump settings come from the market type (frontier: = 2, = 8%, = 12%) and can be set for a single pair.
Example. = 0.1792, so the chance of no jump before expiry is 83.59%, one jump 14.98%, two jumps 1.34%. Adding jumps raises Call(11.60) from 0.105120 to 0.206256 GHS.
Limits. Jump frequency and size are hard to estimate from few events.
9. Option spreads: a payout between two levels
What it is. A call spread buys an option at the strike and sells one at the limit . It pays above and stops growing at .
Why it is used. Capping the payout makes protection cheaper and fixes the underwriters' maximum loss. Every contract is a spread: a call spread for an Up cover, a put spread for a Down cover.
Example. = 0.206256 − 0.084845 = 0.121411 GHS per USD of notional. If the rate ends at 12.80, = 1.20 − 0.30 = 0.90 = .
10. Computing Φ: the Abramowitz and Stegun approximation
What it is. has no simple closed form. The engine (normalCDF in server/pricing/kernel.ts) uses formula 7.1.26 from Abramowitz and Stegun [7], accurate for to about .
= 0.254829592, = −0.284496736, = 1.421413741, = −1.453152027, = 1.061405429. For negative , .
Example. by the approximation is 0.8999999, against an exact 0.9000000: a difference of .
11. Putting it together
The ten chapters fit together into one calculation. Each supplies one piece of the final price.
| Chapter | Supplies | Walkthrough step |
|---|---|---|
| 1. Log returns | The lognormal picture of where the rate can end | 5, 7 |
| 2 and 10. Φ | The probabilities inside every option value | 7 |
| 3. RiskMetrics | Today's volatility from recent moves | 5 |
| 4. GARCH | The average volatility over the contract | 5 |
| 5. Parity | The expected drift, through | 4 |
| 6 and 7. Black-Scholes, Garman-Kohlhagen | The value of an option at one level | 7 |
| 8. Merton | The allowance for sudden jumps | 6, 7 |
| 9. Spreads | The contract as the difference of two options | 2, 7 |
Written as a single formula, the fair rate the engine signs is:
with from chapters 3 and 4, from chapter 5, the jump terms from chapter 8, and from chapter 10. Everything in this formula is published and standard. The judgement lies in four inputs: the trend used as drift, the volatility margin and minimum for each market type, the persistence default, and the jump settings. Those are the inputs to review and recalibrate as frontier markets deepen and more data becomes available; the walkthrough shows how much each one moves the price.
Further reading. Hull's Options, Futures, and Other Derivatives [6] covers chapters 1 to 9 in depth; the original papers [1] [2] [3] [5] give the derivations.