Package com.opengamma.analytics.math.surface

Examples of com.opengamma.analytics.math.surface.FunctionalDoublesSurface


        return new InvokedSerializedForm(new InvokedSerializedForm(DupireLocalVolatilityCalculator.this, "getTheta", impliedVolatilitySurface), "getFunction");
      }

    };

    return new FunctionalDoublesSurface(theta) {
      public Object writeReplace() {
        return new InvokedSerializedForm(DupireLocalVolatilityCalculator.this, "getTheta", impliedVolatilitySurface);
      }
    };
  }
View Full Code Here


        return new InvokedSerializedForm(new InvokedSerializedForm(DupireLocalVolatilityCalculator.this, "getDensity", impliedVolatilitySurface), "getFunction");
      }

    };

    return new FunctionalDoublesSurface(density) {
      public Object writeReplace() {
        return new InvokedSerializedForm(DupireLocalVolatilityCalculator.this, "getDensity", impliedVolatilitySurface);
      }
    };
  }
View Full Code Here

        return new InvokedSerializedForm(new InvokedSerializedForm(DupireLocalVolatilityCalculator.this, "getLocalVolatility", surf), "getFunction");
      }

    };

    return new FunctionalDoublesSurface(locVol) {
      public Object writeReplace() {
        return new InvokedSerializedForm(DupireLocalVolatilityCalculator.this, "getLocalVolatility", surf);
      }
    };
  }
View Full Code Here

          final double x = tx[1];
          return payoff.evaluate(x);
        }
      };

      final FunctionalDoublesSurface free = new FunctionalDoublesSurface(func);

      PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients> data = new PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients>(coef, payoff, lower, upper, free, grid[0]);
      ThetaMethodFiniteDifference solver = new ThetaMethodFiniteDifference(theta[0], false);
      res = solver.solve(data);
      for (int ii = 1; ii < n; ii++) {
View Full Code Here

        double vol1 = ShiftedLogNormalTailExtrapolation.impliedVolatility(FORWARD, LEFT_STRIKES[1][0], EXPIRY, mu, sigma) - LEFT_VOLS[1][0];
        double vol2 = ShiftedLogNormalTailExtrapolation.impliedVolatility(FORWARD, LEFT_STRIKES[1][1], EXPIRY, mu, sigma) - LEFT_VOLS[1][1];
        return vol1 * vol1 + vol2 * vol2;
      }
    };
    FunctionalDoublesSurface surf = FunctionalDoublesSurface.from(func);
    PDEUtilityTools.printSurface("debug", surf, -0.7, -0.0, 0.01, 0.4, 200, 200);
  }
View Full Code Here

        double p2 = Math.log(ShiftedLogNormalTailExtrapolation.dualDelta(f, k, t, false, mu, sigma) / dd);
        double temp = p1 * p1 + p2 * p2;
        return Double.isInfinite(temp) ? 1e6 : temp;
      }
    };
    FunctionalDoublesSurface surf = FunctionalDoublesSurface.from(func);
    PDEUtilityTools.printSurface("debug", surf, 250, 300, 70, 90.0, 200, 200);

    double mu = 0.1;
    double sigma = 0.1;

View Full Code Here

          final double x = tx[1];
          return isCall ? Math.max(x - k, 0.0) : Math.max(k - x, 0);
        }
      };

      final FunctionalDoublesSurface free = new FunctionalDoublesSurface(func);
      if (USE_BURNIN) {
        PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients> dataBurn = new PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients>(coef, payoff, lower, upper, free, gridBurn);
        PDEResults1D resBurn = INITIAL_SOLVER.solve(dataBurn);

        PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients> data = new PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients>(coef, resBurn.getTerminalResults(), lower, upper, free, grid);
View Full Code Here

          final double x = tx[1];
          return payoff.evaluate(x);
        }
      };

      final FunctionalDoublesSurface free = new FunctionalDoublesSurface(func);

      PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients> data = new PDE1DDataBundle<ConvectionDiffusionPDE1DCoefficients>(coef, payoff, lower, upper, free, grid[0]);
      ThetaMethodFiniteDifference solver = new ThetaMethodFiniteDifference(theta[0], false);
      res = solver.solve(data);
      for (int ii = 1; ii < n; ii++) {
View Full Code Here

      public Double evaluate(final Double... x) {
        return GRID_INTERPOLATOR2D.interpolate(dataBundle, new DoublesPair(x[0], x[1]));
      }
    };

    final FunctionalDoublesSurface localVolSurface = FunctionalDoublesSurface.from(localVolFunction);

    PDEUtilityTools.printSurface("LV surface", localVolSurface, 0, 5.0, SPOT / 4.0, 4.0 * SPOT);
  }
View Full Code Here

        result.put("ys", uniqueY.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
        result.put("surface", surface);
        result.put("missingValues", missingValues);
      }
    } else if (value.getSurface() instanceof FunctionalDoublesSurface) {
      FunctionalDoublesSurface functional = (FunctionalDoublesSurface) value.getSurface();

      final double[] expiries = {0.1, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 2.0, 2.5, 3., 4., 5.};
      final int nX = expiries.length;
     
      result.put("xCount", nX);
      result.put("yCount", 21);
      if (mode == ConversionMode.FULL) {
        String[] xLabels = new String[nX];
        String[] yLabels = new String[21];
        double[][] surface = new double[21][nX];
        boolean[][] missingValues = new boolean[21][nX];
        for (int i = 0; i < nX; i++) {
          double x = expiries[i];
          xLabels[i] = LABEL_FORMAT.format(x);
          double y = .45; // Moneyness from 0.5 to 2.0
          for (int j = 0; j < 21; j++) {
            y += 0.05;
            if (i == 0) {
              yLabels[j] = LABEL_FORMAT.format(y);
            }
            surface[j][i] = 100 * functional.getZValue(x, y);
          }
        }
        result.put("xs", xLabels);
        result.put("ys", yLabels);
        result.put("surface", surface);
View Full Code Here

TOP

Related Classes of com.opengamma.analytics.math.surface.FunctionalDoublesSurface

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.