CodePlexProject Hosting for Open Source Software

This project makes it simple to price European puts, calls, and binary options. In addition, numerically stable calculations of greeks of all orders can be computed using the fmsdual project.

If X is a random variable then the *cumulant* of X is κ(s) = log E[exp(s X)]. If (X_{t})_{t≥0} is a stochastic process the cumulant of X_{t} is κ_{t}(s) = log E[exp(s X_{t})]. If (X_{t})
is a Lévy process then κ_{t}(s) = t κ(s), but that is not used here.

Define the *cumulant distribution function* by κ_{t}(s, z) = log E[exp(s X_{t}) 1(X_{t} ≤ z)].

The Fischer Black model gives the foward price of a put option as E[max{k - F, 0}], where k is the strike and F is the risk-neutral value of the underlying at expiration. If F = f exp(-κ_{t}(s) + s X_{t}), then E[F] = f. The put
price is

E[max{k - F, 0}] = k E[1(F ≤ k)] - E[F 1(F ≤ k)] = k P(F ≤ k) - f E[exp(-κ _{t}(s) + sX_{t}) 1(F ≤ k)]= k P(X _{t}≤ z) - f P^{*}(X_{t}≤ z),

where z = (log k/f + κ_{t}(s))/s and P^{*} is the Esscher transformation of P, i.e., dP^{*}/dP = exp(sX_{t})/E[exp(sX_{t})] = exp(-κ_{t}(s) + sX_{t}).

If X_{t} is standard Brownian motion, then κ(t, s) = s^{2}t/2 and κ_{t}(s, z) = κ_{t}(s) - log N((z - st)/√t), where N is the standard normal cummulative distribution. The above reduces to

k N(-d_{2}) - f N(-d_{1}),

for the standard values of d_{1} and d_{2}.

Last edited Apr 18, 2013 at 2:33 AM by keithalewis, version 30