/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.model.option.pricing.tree;
/**
*
*/
public class JabbourKraminYoungLatticeSpecification extends LatticeSpecification {
@Override
public double[] getParameters(final double spot, final double strike, final double timeToExpiry, final double volatility, final double interestRate, final int nSteps, final double dt) {
final double mudt = (interestRate - 0.5 * volatility * volatility) * dt;
final double sigmaRootT = volatility * Math.sqrt(dt);
final double upProbability = 0.5 * (1. - sigmaRootT / Math.sqrt(4. + volatility * volatility * dt));
final double den = Math.sqrt(upProbability * (1. - upProbability));
final double upFactor = Math.exp(mudt + (1. - upProbability) * sigmaRootT / den);
final double downFactor = Math.exp(mudt - upProbability * sigmaRootT / den);
return new double[] {upFactor, downFactor, upProbability, 1. - upProbability };
}
}