Garman-Kohlhagen pricing formula

OpusAMM provides 24/7/365 on-demand option pricing liquidity. Option premiums are calculated using the Garman Kohlhagen pricing formula (GKPM) for European style options. The

GKPM accounts for two interest rates to correct the Black-Scholes-Merton formula’s limiting assumption that borrowing and lending takes place at the same interest rate. GKPM inputs are sourced via external oracles (ex. Chainlink) and OpusARM:

Model inputs:

a. Spot

b. Forward Price

c. Maturity

d. Strike Price

e. Domestic Interest Rate (Rd)

f. Foreign Interest Rate (Rf)

g. Implied Volatility

Implied volatility prices are adjusted by OpusARM.

The formula

European vanilla option payoffs are calculated using spot at maturity (St) and the strike

Payoffcall=max(STK;0),  Payoffput=max(KST;0)\text{Payoff}_\text{call}=\max (S_T-K;0), \ \ \text{Payoff}_{\text{put}} = \max (K - S_T; 0)

Then option prices (premiums) are calculated as

Pricecall=SerCCY1TN(d1)KerCCY2TN(d2)\text{Price}_{\text{call}}=Se^{-r_{\text{CCY1}}T}N(d_1)-Ke^{-r_{\text{CCY2}}T}N(d_2)
Pricecall=KerCCY2TN(d2)SerCCY1TN(d1)\text{Price}_{\text{call}}=Ke^{-r_{\text{CCY2}}T}N(-d_2)-Se^{-r_{\text{CCY1}}T}N(-d_1)

where:

d1=ln(S/K)+(rCCY1rCCY2+σ2/2)TσTd_1=\frac{\ln (S/K) + (r_{\text{CCY1}} - r_{\text{CCY2}} + \sigma^2/2)\cdot T}{\sigma\sqrt{T}}
d2=ln(S/K)+(rCCY1rCCY2σ2/2)TσT=d1σTd_2=\frac{\ln (S/K) + (r_{\text{CCY1}} - r_{\text{CCY2}} - \sigma^2/2)\cdot T}{\sigma\sqrt{T}} = d_1 - \sigma\sqrt{T}

Last updated