Examples of VolatilityCubeData


Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

    @SuppressWarnings("synthetic-access")
    @Override
    public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs,
        final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
      final VolatilityCubeData map = buildMarketDataMap(executionContext.getComputationTargetResolver(), inputs);
      return Sets.newHashSet(new ComputedValue(_marketDataResult, map));
    }
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

        } else {
          throw new OpenGammaRuntimeException("Instrument is both a volatility and a strike");
        }
      }

      final VolatilityCubeData volatilityCubeData = new VolatilityCubeData();
      volatilityCubeData.setDataPoints(dataPoints);
      volatilityCubeData.setOtherData(otherData);
      volatilityCubeData.setDataIds(dataIds);
      volatilityCubeData.setRelativeStrikes(relativeStrikes);
      volatilityCubeData.setATMStrikes(strikes);
      return volatilityCubeData;
    }
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

    @SuppressWarnings("synthetic-access")
    @Override
    public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs,
        final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
      final VolatilityCubeData map = buildMarketDataMap(executionContext, inputs);
      return Sets.newHashSet(new ComputedValue(_marketDataResult, map));
    }
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

        } else {
          throw new OpenGammaRuntimeException("Instrument is both a volatility and a strike");
        }
      }

      final VolatilityCubeData volatilityCubeData = new VolatilityCubeData();
      volatilityCubeData.setDataPoints(dataPoints);
      volatilityCubeData.setOtherData(otherData);
      volatilityCubeData.setDataIds(dataIds);
      volatilityCubeData.setRelativeStrikes(relativeStrikes);
      volatilityCubeData.setATMStrikes(strikes);
      return volatilityCubeData;
    }
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

      }

      @Override
      public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs,
          final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
        final VolatilityCubeData data = (VolatilityCubeData) inputs.getValue(getMarketDataRequirement());
        final VolatilityCubeData normalizedData = new VolatilityCubeData();
        final Map<VolatilityPoint, Double> volatilityPoints = data.getDataPoints();
        final Map<VolatilityPoint, Double> normalizedVolatilityPoints = new HashMap<>();
        final Map<VolatilityPoint, ExternalIdBundle> volatilityPointIds = data.getDataIds();
        final Map<VolatilityPoint, ExternalIdBundle> normalizedVolatilityPointIds = new HashMap<>();
        final Map<VolatilityPoint, Double> relativeStrikes = data.getRelativeStrikes();
        final Map<VolatilityPoint, Double> normalizedRelativeStrikes = new HashMap<>();
        final Map<Pair<Tenor, Tenor>, Double> atmStrikes = data.getATMStrikes();
        final Map<Pair<Tenor, Tenor>, Double> normalizedATMStrikes = new HashMap<>();
        final Map<Pair<Tenor, Tenor>, Double> normalizedATMVols = new HashMap<>();
        for (final Map.Entry<VolatilityPoint, Double> entry : volatilityPoints.entrySet()) {
          final VolatilityPoint oldPoint = entry.getKey();
          final Tenor swapTenor = oldPoint.getSwapTenor();
          final Tenor swaptionExpiry = oldPoint.getOptionExpiry();
          final double relativeStrike = oldPoint.getRelativeStrike();
          if (atmStrikes.containsKey(Pair.of(swapTenor, swaptionExpiry))) {
            final Pair<Tenor, Tenor> tenorPair = Pair.of(swapTenor, swaptionExpiry);
            final double absoluteStrike = atmStrikes.get(tenorPair) + relativeStrike / 10000;
            final double vol = entry.getValue();
            final VolatilityPoint newPoint = new VolatilityPoint(swapTenor, swaptionExpiry, absoluteStrike);
            if (Double.doubleToLongBits(relativeStrike) == 0) {
              if (normalizedATMStrikes.containsKey(tenorPair)) {
                throw new OpenGammaRuntimeException("Normalized ATM strike data set already contains value for " + tenorPair);
              }
              normalizedATMStrikes.put(tenorPair, atmStrikes.get(tenorPair));
              normalizedATMVols.put(tenorPair, vol);
            }
            normalizedVolatilityPoints.put(newPoint, vol);
            if (volatilityPointIds != null) {
              normalizedVolatilityPointIds.put(newPoint, volatilityPointIds.get(oldPoint));
            }
            if (relativeStrikes != null) {
              normalizedRelativeStrikes.put(newPoint, relativeStrikes.get(oldPoint));
            } else {
              normalizedRelativeStrikes.put(newPoint, relativeStrike);
            }
          }
        }
        normalizedData.setDataPoints(normalizedVolatilityPoints);
        normalizedData.setOtherData(data.getOtherData());
        normalizedData.setATMStrikes(normalizedATMStrikes);
        normalizedData.setATMVolatilities(normalizedATMVols);
        normalizedData.setDataIds(normalizedVolatilityPointIds);
        normalizedData.setRelativeStrikes(normalizedRelativeStrikes);
        return Sets.newHashSet(new ComputedValue(_cubeResult, normalizedData));
      }
    };
  }
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

    }
    final Object objectCubeData = inputs.getValue(getCubeDataRequirement(target, cubeName));
    if (objectCubeData == null) {
      throw new OpenGammaRuntimeException("Could not get volatility cube data");
    }
    final VolatilityCubeData volatilityCubeData = (VolatilityCubeData) objectCubeData;
    final SortedMap<Tenor, SortedMap<Tenor, Pair<double[], double[]>>> smiles = volatilityCubeData.getSmiles();
    final SortedMap<Tenor, SortedMap<Tenor, ExternalId[]>> smileIds = volatilityCubeData.getSmileIds();
    final SortedMap<Tenor, SortedMap<Tenor, Double[]>> smileRelativeStrikes = volatilityCubeData.getSmileRelativeStrikes();
    final DoubleArrayList swapMaturitiesList = new DoubleArrayList();
    final DoubleArrayList swaptionExpiriesList = new DoubleArrayList();
    final DoubleArrayList alphaList = new DoubleArrayList();
    final DoubleArrayList betaList = new DoubleArrayList();
    final DoubleArrayList nuList = new DoubleArrayList();
    final DoubleArrayList rhoList = new DoubleArrayList();
    final DoubleArrayList chiSqList = new DoubleArrayList();
    final Map<DoublesPair, DoubleMatrix2D> inverseJacobians = new HashMap<>();
    final Map<Pair<Tenor, Tenor>, ExternalId[]> fittedSmileIds = new HashMap<>();
    final Map<Pair<Tenor, Tenor>, Double[]> fittedRelativeStrikes = new HashMap<>();
    for (final Map.Entry<Tenor, SortedMap<Tenor, Pair<double[], double[]>>> swapMaturityEntry : smiles.entrySet()) {
      final double maturity = getTime(swapMaturityEntry.getKey());
      for (final Map.Entry<Tenor, Pair<double[], double[]>> swaptionExpiryEntry : swapMaturityEntry.getValue().entrySet()) {
        final double swaptionExpiry = getTime(swaptionExpiryEntry.getKey());
        final double[] strikes = swaptionExpiryEntry.getValue().getFirst();
        final double[] blackVols = swaptionExpiryEntry.getValue().getSecond();
        final int n = strikes.length;
        if (n != blackVols.length) {
          throw new OpenGammaRuntimeException("Strike and Black volatility arrays were not the same length; should never happen");
        }
        ExternalId[] externalIds = new ExternalId[0];
        if (smileIds != null) {
          externalIds = smileIds.get(swapMaturityEntry.getKey()).get(swaptionExpiryEntry.getKey());
          if (n != externalIds.length) {
            throw new OpenGammaRuntimeException("Strike and id arrays were not the same length; should never happen");
          }
        }
        Double[] relativeStrikes = new Double[0];
        if (smileRelativeStrikes != null) {
          relativeStrikes = smileRelativeStrikes.get(swapMaturityEntry.getKey()).get(swaptionExpiryEntry.getKey());
          if (n != relativeStrikes.length) {
            throw new OpenGammaRuntimeException("Strike and relative strike arrays were not the same length; should never happen");
          }
        }
        final double[] errors = new double[n];
        final Pair<Tenor, Tenor> tenorPair = Pair.of(swapMaturityEntry.getKey(), swaptionExpiryEntry.getKey());
        if (volatilityCubeData.getATMStrikes() != null && volatilityCubeData.getATMStrikes().containsKey(tenorPair)) {
          final double forward = volatilityCubeData.getATMStrikes().get(tenorPair);
          for (int k = 0; k < n; k++) {
            errors[k] = ERROR;
          }
          if (strikes.length > 4 && forward > 0) { //don't fit those smiles with insufficient data
            final LeastSquareResultsWithTransform fittedResult = new SABRModelFitter(forward, strikes, swaptionExpiry, blackVols, errors, SABR_FUNCTION).solve(SABR_INITIAL_VALUES, FIXED);
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

                ids.put(coordinate, id.toBundle());
              }
            }
          }
        }
        final VolatilityCubeData volatilityCubeData = new VolatilityCubeData();
        volatilityCubeData.setDataPoints(data);
        volatilityCubeData.setDataIds(ids);
        final ValueProperties properties = createValueProperties()
            .with(ValuePropertyNames.CUBE, cubeName)
            .with(SurfaceAndCubePropertyNames.PROPERTY_CUBE_DEFINITION, definitionName)
            .with(SurfaceAndCubePropertyNames.PROPERTY_CUBE_SPECIFICATION, specificationName)
            .with(SurfaceAndCubePropertyNames.PROPERTY_CUBE_QUOTE_TYPE, specification.getCubeQuoteType())
View Full Code Here

Examples of com.opengamma.core.marketdatasnapshot.VolatilityCubeData

  private static VolatilityCubeData convertVolatilityCubeMarketData(final VolatilityCubeSnapshot volCubeSnapshot) {
    final Map<VolatilityPoint, ValueSnapshot> values = volCubeSnapshot.getValues();
    final HashMap<VolatilityPoint, Double> dataPoints = buildVolValues(values);
    final HashMap<Pair<Tenor, Tenor>, Double> strikes = buildVolStrikes(volCubeSnapshot.getStrikes());
    final SnapshotDataBundle otherData = createSnapshotDataBundle(volCubeSnapshot.getOtherValues());
    final VolatilityCubeData ret = new VolatilityCubeData();
    ret.setDataPoints(dataPoints);
    ret.setOtherData(otherData);
    ret.setATMStrikes(strikes);
    return ret;
  }
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.