Class FDMAsianHestonADI3D

java.lang.Object
net.finmath.finitedifference.solvers.adi.AbstractADI3D
net.finmath.finitedifference.solvers.adi.FDMAsianHestonADI3D
All Implemented Interfaces:
FDMSolver

public class FDMAsianHestonADI3D extends AbstractADI3D
Specialized 3D ADI solver for arithmetic Asian options under a lifted Heston state (S, v, I), where dS_t = mu_S dt + diffusion terms, dv_t = mu_v dt + diffusion terms, dI_t = S_t dt. In time-to-maturity tau = T - t, the backward pricing PDE is split as u_tau = A0 u + A1 u + A2 u + A3 u with A0: discount term and mixed derivative terms (treated explicitly) A1: S-direction drift and diffusion (treated implicitly) A2: v-direction drift and diffusion (treated implicitly) A3: I-direction transport S * u_I (treated with a specialized implicit upwind solve) There is: - no diffusion in the I direction - no mixed derivative involving I The I direction is pure transport. In tau-time, the correct upwind discretization is forward in I.
Author:
Alessandro Gnoatto
  • Constructor Details

  • Method Details

    • applyA3Explicit

      protected double[] applyA3Explicit(double[] u, double time)
      Explicit application of A3 u = S * u_I using forward upwinding in I: u_I(S_i, v_j, I_k) ~ (u_{i,j,k+1} - u_{i,j,k}) / (I_{k+1} - I_k) for k = 0,...,n2-2. The top I-row k = n2 - 1 is handled via the upper I boundary.
      Overrides:
      applyA3Explicit in class AbstractADI3D
    • solveFirstDirectionLines

      protected double[] solveFirstDirectionLines(double[] rhs, double time, double dt)
      Specified by:
      solveFirstDirectionLines in class AbstractADI3D
    • solveSecondDirectionLines

      protected double[] solveSecondDirectionLines(double[] rhs, double time, double dt)
      Specified by:
      solveSecondDirectionLines in class AbstractADI3D
    • solveThirdDirectionLines

      protected double[] solveThirdDirectionLines(double[] rhs, double time, double dt)
      Specified by:
      solveThirdDirectionLines in class AbstractADI3D