Package com.opengamma.analytics.math.statistics.leastsquare

Examples of com.opengamma.analytics.math.statistics.leastsquare.LeastSquareResultsWithTransform


  }

  @Test
  public void testExactFitOddStart() {
    final double[] start = new double[] {0.01, 0.99, 0.9, 0.4};
    final LeastSquareResultsWithTransform results = FITTER.solve(new DoubleMatrix1D(start));
    final double[] res = results.getModelParameters().getData();
    final double eps = 1e-6;
    assertEquals(ALPHA, res[0], eps);
    assertEquals(BETA, res[1], eps);
    assertEquals(RHO, res[2], eps);
    assertEquals(NU, res[3], eps);
    assertEquals(0.0, results.getChiSq(), eps);
  }
View Full Code Here


  @Test
  public void testExactFitWithFixedBeta() {
    final double[] start = new double[] {0.1, 0.5, 0.0, 0.3};
    final BitSet fixed = new BitSet();
    fixed.set(1);
    final LeastSquareResultsWithTransform results = FITTER.solve(new DoubleMatrix1D(start), fixed);
    final double[] res = results.getModelParameters().getData();
    final double eps = 1e-6;
    assertEquals(ALPHA, res[0], eps);
    assertEquals(BETA, res[1], eps);
    assertEquals(RHO, res[2], eps);
    assertEquals(NU, res[3], eps);
    assertEquals(0.0, results.getChiSq(), eps);
  }
View Full Code Here

  public void testFitWithFixedWrongBeta() {

    final double[] start = new double[] {0.1, 0.8, 0.0, 0.3};
    final BitSet fixed = new BitSet();
    fixed.set(1);
    final LeastSquareResultsWithTransform results = FITTER.solve(new DoubleMatrix1D(start), fixed);
    final double[] res = results.getModelParameters().getData();
    final double eps = 1e-6;
    assertEquals(0.8, res[1], eps);

    final double bpError = 35.0; //35 bps error
    final int n = MARKETDATA.length;
    final double exChi2 = bpError * bpError * n;
    assertTrue("chi^2 " + results.getChiSq(), results.getChiSq() < exChi2);
  }
View Full Code Here

  @Test
  public void testNoisyFit() {

    final double[] start = new double[] {0.1, 0.7, 0.0, 0.3};
    final LeastSquareResultsWithTransform results = NOISY_FITTER.solve(new DoubleMatrix1D(start));
    final double[] res = results.getModelParameters().getData();
    final double eps = 1e-2;
    assertEquals(ALPHA, res[0], eps);
    assertEquals(BETA, res[1], eps);
    assertEquals(RHO, res[2], eps);
    assertEquals(NU, res[3], eps);
    assertTrue(results.getChiSq() < 7);
  }
View Full Code Here

  }

  @SuppressWarnings("deprecation")
  private void doOldTest(final EuropeanVanillaOption[] options, final BlackFunctionData[] data, final double[] start, final BitSet fixed, final SABRNonLinearLeastSquareFitter fitter) {
    final LeastSquareResultsWithTransform lsRes = fitter.getFitResult(options, data, ERRORS, start, fixed);
    final double[] res = lsRes.getModelParameters().getData();
    final double eps = 1e-2;
    assertEquals(ALPHA, res[0], eps);
    assertEquals(BETA, res[1], eps);
    assertEquals(RHO, res[2], eps);
    assertEquals(NU, res[3], eps);
    assertTrue(lsRes.getChiSq() < 7);
  }
View Full Code Here

    }
    final double[] initialValues = new double[] {0.04, 1, -0.3, 0.2 };
    final BitSet fixed = new BitSet();
    final SABRHaganVolatilityFunction sabr = new SABRHaganVolatilityFunction();
    final SABRNonLinearLeastSquareFitter fitter = new SABRNonLinearLeastSquareFitter(sabr);
    final LeastSquareResultsWithTransform result = fitter.getFitResult(options, data, errors, initialValues, fixed);

    final double chiSqr = result.getChiSq();
    final DoubleMatrix1D params = result.getModelParameters();
    final SABRFormulaData fittedData = new SABRFormulaData(params.getEntry(0), params.getEntry(1), params.getEntry(2), params.getEntry(3));

    final Function1D<Double, Double> sabrFunction = new Function1D<Double, Double>() {
      @Override
      public Double evaluate(final Double k) {
View Full Code Here

  @Test
  public void testExactFitNLSS() {
    final BitSet fixed = new BitSet();
    final double[] start = new double[] {0.03, 0.4, 0.1, 0.2 };
    final LeastSquareResultsWithTransform results = NLSS.getFitResult(OPTIONS, DATA, ERRORS, start, fixed);
    final double[] res = results.getModelParameters().getData();
    final double eps = 1e-4;
    assertEquals(ALPHA, res[0], eps);
    assertEquals(BETA, res[1], eps);
    assertEquals(RHO, res[2], eps);
    assertEquals(NU, res[3], eps);
    assertEquals(0.0, results.getChiSq(), eps);
  }
View Full Code Here

  @Test
  public void testNoisyFitNLSS() {
    final BitSet fixed = new BitSet();
    fixed.set(1, true);
    final double[] start = new double[] {0.03, 0.5, 0.1, 0.2 };
    final LeastSquareResultsWithTransform results = NLSS.getFitResult(OPTIONS, NOISY_DATA, ERRORS, start, fixed);
    assertTrue(results.getChiSq() < 10.0);
    final double[] res = results.getModelParameters().getData();
    assertEquals(ALPHA, res[0], 1e-3);
    assertEquals(BETA, res[1], 1e-7);
    assertEquals(RHO, res[2], 1e-1);
    assertEquals(NU, res[3], 1e-2);
  }
View Full Code Here

    Arrays.fill(errors, 1e-4);
    errors[0] = 1e-1;
    errors[1] = 1e-1;
    final SmileModelFitter<MixedLogNormalModelData> fitter = new MixedLogNormalModelFitter(forward, strikes, expiry, impVols, errors, MODEL, 2, true);
    final DoubleMatrix1D start = new DoubleMatrix1D(0.15, 0.1, 0.5, 0.5);
    final LeastSquareResultsWithTransform lsres = fitter.solve(start);
    System.out.println(lsres.toString());
    final MixedLogNormalModelData data = new MixedLogNormalModelData(lsres.getModelParameters().getData());
    System.out.println(data.toString());
    for (int i = 0; i < 200; i++) {
      final double k = 700 + 1300 * i / 199.;
      final double vol = MODEL.getVolatility(new EuropeanVanillaOption(k, expiry, true), forward, data);
      System.out.println(k + "\t" + vol);
View Full Code Here

  public LeastSquareResultsWithTransform solve(final DoubleMatrix1D start, final NonLinearParameterTransforms transform) {
    final NonLinearTransformFunction transFunc = new NonLinearTransformFunction(getModelValueFunction(), getModelJacobianFunction(), transform);

    final LeastSquareResults solRes = SOLVER.solve(_marketValues, _errors, transFunc.getFittingFunction(), transFunc.getFittingJacobian(),
        transform.transform(start), getConstraintFunction(transform), getMaximumStep());
    return new LeastSquareResultsWithTransform(solRes, transform);
  }
View Full Code Here

TOP

Related Classes of com.opengamma.analytics.math.statistics.leastsquare.LeastSquareResultsWithTransform

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.