Examples of PDEFullResults1D


Examples of com.opengamma.analytics.financial.model.finitedifference.PDEFullResults1D

    final int tNodes = 51;
    final int xNodes = 151;
    final MeshingFunction timeMesh = new ExponentialMeshing(0, T, tNodes, 7.5);
    final MeshingFunction spaceMesh = new HyperbolicMeshing(0, 10 * SPOT, SPOT, xNodes, 0.01);
    final PDEGrid1D grid = new PDEGrid1D(timeMesh, spaceMesh);
    final PDEFullResults1D res = PRICER.solve(grid, theta);

    final double[] expiries = timeMesh.getPoints();
    final double[] strikes = spaceMesh.getPoints();
    final double[] forwards = new double[tNodes];
    // double[] df = new double[tNodes];
    for (int i = 0; i < tNodes; i++) {

      forwards[i] = FORWARD_CURVE.getForward(expiries[i]);
    }

    final double[] sims = CHAIN.simulate(T, 1000);
    for (int i = 0; i < xNodes; i++) {

      if (strikes[i] < 0.08) {
        final double mcPrice = CHAIN.priceCEV(FORWARD_CURVE.getForward(T), FORWARD_CURVE.getSpot() / FORWARD_CURVE.getForward(T), strikes[i], T, BETA, sims);
        final double price = res.getFunctionValue(i, tNodes - 1);
        // System.out.println(strikes[i] + "\t" + mcPrice + "\t" + price);
        assertEquals(mcPrice, price, 1e-2 * mcPrice);
      }

    }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.finitedifference.PDEFullResults1D

  @Test
      (enabled = false)
      public void test() {

    final ConvectionDiffusionPDESolver solver = new ThetaMethodFiniteDifference(1.0, true);
    final PDEFullResults1D res = (PDEFullResults1D) solver.solve(DATA);
    PDEUtilityTools.printSurface("wave", res);
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.finitedifference.PDEFullResults1D

      spaceGrid[i] = spaceMesh.evaluate(i);
    }
    final PDEGrid1D grid = new PDEGrid1D(timeGrid, spaceGrid);

    final PDEResults1D[] res = solver.solve(DATA1, DATA2, grid, LOWER, UPPER, LOWER, UPPER, null);
    final PDEFullResults1D res1 = (PDEFullResults1D) res[0];
    final PDEFullResults1D res2 = (PDEFullResults1D) res[1];

    JSONObject json = new JSONObject();

    ByteArrayOutputStream state_1_stream = new ByteArrayOutputStream();
    PrintStream state_1_out = new PrintStream(state_1_stream, true);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.finitedifference.PDEFullResults1D

    assertArrayEquals(grid.getSpaceNodes(), GRID.getSpaceNodes(), 1e-9);
  }

  @Test
  public void testResults() {
    final PDEFullResults1D results = cycleObject(PDEFullResults1D.class, RESULTS);
    assertEquals(results.getGrid().getNumSpaceNodes(), GRID.getNumSpaceNodes());
    assertEquals(results.getGrid().getNumTimeNodes(), GRID.getNumTimeNodes());
    assertArrayEquals(results.getGrid().getTimeNodes(), GRID.getTimeNodes(), 1e-9);
    assertArrayEquals(results.getGrid().getSpaceNodes(), GRID.getSpaceNodes(), 1e-9);
    for (int i = 0; i < DATA.length; i++) {
      assertArrayEquals(results.getF()[i], DATA[i], 1e-9);
    }
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.finitedifference.PDEFullResults1D

        theta, timeSteps, spaceSteps, timeGridBunching, spaceGridBunching, maxMoneyness, pdeDirection);
    final Object pdeGridObject = inputs.getValue(gridRequirement);
    if (pdeGridObject == null) {
      throw new OpenGammaRuntimeException("PDE grid was null");
    }
    final PDEFullResults1D pdeGrid = (PDEFullResults1D) pdeGridObject;
    final double[] gridTimes = pdeGrid.getGrid().getTimeNodes();
    final double[] gridMoneyness = pdeGrid.getGrid().getSpaceNodes();
    final CurrencyPairs currencyPairs = OpenGammaExecutionContext.getCurrencyPairsSource(executionContext).getCurrencyPairs(CurrencyPairs.DEFAULT_CURRENCY_PAIRS);
    final CurrencyPair currencyPair = currencyPairs.getCurrencyPair(fxOption.getPutCurrency(), fxOption.getCallCurrency());
    //TODO interpolate
    ///////////////////////////////
    final double tau = getExpiry(fxOption, now);
    final UnorderedCurrencyPair currencies = UnorderedCurrencyPair.of(fxOption.getCallCurrency(), fxOption.getPutCurrency());
    final ValueRequirement forwardCurveRequirement = getForwardCurveRequirement(forwardCurveCalculationMethod, forwardCurveName, currencies);
    final Object forwardCurveObject = inputs.getValue(forwardCurveRequirement);
    if (forwardCurveObject == null) {
      throw new OpenGammaRuntimeException("Forward curve was null");
    }
    final ForwardCurve forwardCurve = (ForwardCurve) forwardCurveObject;
    final double forward = forwardCurve.getForward(tau);
    final double moneyness = getStrike(fxOption, currencyPair) / forward;
    final int timeIndex = SurfaceArrayUtils.getLowerBoundIndex(gridTimes, tau);
    final int spaceIndex = SurfaceArrayUtils.getLowerBoundIndex(gridMoneyness, moneyness);

    final double value1 = forward * pdeGrid.getFunctionValue(spaceIndex, timeIndex);
    final double value2 = forward * pdeGrid.getFunctionValue(spaceIndex + 1, timeIndex);
    final double m1 = pdeGrid.getSpaceValue(spaceIndex);
    final double m2 = pdeGrid.getSpaceValue(spaceIndex + 1);
    final double value = ((m2 - moneyness) * value1 + (moneyness - m1) * value2) / (m2 - m1);

    ///////////////////////////////
    final ValueSpecification resultSpec = new ValueSpecification(desiredValue.getValueName(), target.toSpecification(), desiredValue.getConstraints());
    return Collections.singleton(new ComputedValue(resultSpec, value));
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.