Explicit FD method / Calls, puts and binaties (chapter 77)

The advantages of explicit method:

  • Easy to program and hard to make mistakes
  • It copes well with the coefficients that are asset and/or time-dependent.
  • Easy to incorporate embedded decisions.

\(\frac{\partial V}{\partial t} + \frac{1}{2} \sigma^{2} S^{2} \frac{\partial^{2} V}{\partial S^{2}} +r S \frac{\partial V}{\partial S} - r V = 0 \)

Approximation to the Black-Scholes equation:

\(\frac{V^{k}_{i} - V^{k+1}_{i}}{\delta t} + \frac{1}{2} \sigma^{2} S^{2}_{i} \frac{V^{k}_{i+1}-2V^{k}_{i} + V^{k}_{i-1} }{ \delta S^2} + r S_{i} \frac{V^{k}_{i+1} - V^{k}_{i-1}}{2 \delta S} + r V^{k}_{i} = O(\delta t, \delta S^2)\)

At expiry the option value is just the payoff function:  \(V^{0}_{i} = \mbox{Payoff}(i \delta S)\)   This final condition will get finite-diffrence scheme started.

We must specify  boundary conditions at \(S = 0\) and at \(S = I \delta S%\). Boundary conditions will depend on the type of option we are solving. Here are some examples:

  • \(V^{k}_{0} = 0\) for call option because at \(S=0\) we know that the value is always zero.
  • For large S the call value asymptotes to \(S - K e^{-r(T-t)}\),  thus \(V^{k}_{I} = I \delta S - K \, e^{-r k \, \delta t}\)
  • For put option \(V^{k}_{0} = K e^{ -r k \, \delta t }\) and \( V^{k}_{I} = 0 \)
  • We can also substitute \(S=0\) in the  Black-Scholes equation to obtain boundary condition for most contracts: \( \frac{\partial V}{\partial t} (0,t) - r \,V(0,t) = 0\). Numerically, this becomes \(V^{k}_{0} = (1 - r \, \delta t) V^{k-1}_{0} \).
vector FiniteDifference::GetPrice ()
{
  SetUpFinalCondition();
  double delta = 0;
  double gamma = 0;
  double theta = 0;
  for (unsigned long k = 1; k   {
    for (unsigned long i = 1; i     {
      // Central difference for delta and gamma
      delta = (VOld[i+1] - VOld[i-1]) / (2*dS);
      gamma = (VOld[i+1] - 2*VOld[i] + VOld[i-1]) / (dS * dS);
      // theta from Black-Shoules
      theta = -0.5 * volSquared * S[i] * S[i] * gamma -
              interestRate * S[i] * delta + interestRate * VOld[i];
      VNew[i] = VOld[i] - dt * theta;
    }

    VNew[0] = VOld[0] * (1 - interestRate * dt); // Boundary condition at S=Smin
    VNew[noAssetSteps] = 2*VNew[noAssetSteps - 1] - VNew[noAssetSteps - 2]; // Boundary condition at S=Smax

    for (unsigned long i = 0; i getPayOff(S[i]));
      VOld[i] = VNew[i];
    }
  }

  return VNew;
}

Although the explicit method is simple to implement it does not always converge. For convergence, finite-difference scheme is necessary to be stable with respect to the initial data. It means that if a perturbation is introduced into the initial data, then the corresponding perturbation of the solution will be no more than \(c\) (constant which does not depend on the grid step) times greater in magnitude than the original perturbation of the data.

In particular, it should hold for harmonic perturbation. With harmonic initial condition, the solution can be found in the form: \(V^{k}_{i} = \lambda^{k} \, e^{\sqrt{-1} \alpha i}\). The spectrum of the transition operator that corresponds to the difference equation must belong to the disk of radius \(1+ c_{1} \, \delta t\) centered at the origin on the complex plane.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>