Exemplo n.º 1
0
 @Override
 protected Object computeValues(EquityIndexOption derivative, EquityOptionDataBundle market) {
   final NodalDoublesSurface vegaSurface =
       CALCULATOR.calcBlackVegaForEntireSurface(derivative, market);
   final Double[] xValues = vegaSurface.getXData();
   final Double[] yValues = vegaSurface.getYData();
   final Set<Double> xSet = new HashSet<Double>(Arrays.asList(xValues));
   final Set<Double> ySet = new HashSet<Double>(Arrays.asList(yValues));
   final Double[] uniqueX = xSet.toArray(new Double[0]);
   final Double[] uniqueY = ySet.toArray(new Double[0]);
   final double[][] values = new double[ySet.size()][xSet.size()];
   int i = 0;
   for (final Double x : xSet) {
     int j = 0;
     for (final Double y : ySet) {
       double vega;
       try {
         vega = vegaSurface.getZValue(x, y);
       } catch (final IllegalArgumentException e) {
         vega = 0;
       }
       values[j++][i] = vega;
     }
     i++;
   }
   final DoubleLabelledMatrix2D matrix = new DoubleLabelledMatrix2D(uniqueX, uniqueY, values);
   return matrix;
 }