/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.model.option.pricing.analytic;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class BjerksundStenslandModelDualDeltaGammaSolverTest {
@Test
(enabled = false)
public void deltaGammaTest() {
System.out.println("BjerksundStenslandModelDualDeltaGammaSolverTest.deltaGammaTest");
BjerksundStenslandModel bs = new BjerksundStenslandModel();
//BjerksundStenslandModelDualDeltaGammaSolver temp = new BjerksundStenslandModelDualDeltaGammaSolver();
final double[] s0Set = new double[] {60, 90, 100, 110, 160 };
final double k = 100;
final double r = 0.1;
final double[] bSet = new double[] {-0.04, 0.0, 0.04, 0.09, 0.11 };
final double sigma = 0.35;
final double t = 0.5;
final boolean isCall = false;
for (double s0 : s0Set) {
for (double b : bSet) {
final double eps = s0 * 1e-5;
//final double[] sense = temp.getCallDualDeltaGamma(k, s0, r - b, -b, t, sigma);
final double[] sense = bs.getPutDeltaGamma(s0, k, r, b, t, sigma);
double[] up = bs.getPriceAdjoint(s0 + eps, k, r, b, t, sigma, isCall);
double[] down = bs.getPriceAdjoint(s0 - eps, k, r, b, t, sigma, isCall);
double fd2 = (up[0] + down[0] - 2 * sense[0]) / eps / eps;
System.out.println("s0=" + s0 + "\t" + "b=" + b);
System.out.println(fd2);
System.out.println(sense[2]);
System.out.println("\n");
assertEquals(fd2, sense[2], Math.abs(fd2) * 1e-4);
}
}
}
}