Package com.opengamma.financial.analytics.fudgemsg

Source Code of com.opengamma.financial.analytics.fudgemsg.PDEResultsFudgeBuilder$ForexLocalVolatilityPDEPresentValueResultCollectionBuilder

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.fudgemsg;

import java.util.HashMap;
import java.util.Map;

import org.fudgemsg.FudgeMsg;
import org.fudgemsg.MutableFudgeMsg;
import org.fudgemsg.mapping.FudgeBuilderFor;
import org.fudgemsg.mapping.FudgeDeserializer;
import org.fudgemsg.mapping.FudgeSerializer;

import com.opengamma.analytics.financial.greeks.BucketedGreekResultCollection;
import com.opengamma.analytics.financial.greeks.PDEResultCollection;
import com.opengamma.analytics.financial.model.finitedifference.PDEFullResults1D;
import com.opengamma.analytics.financial.model.finitedifference.PDEGrid1D;
import com.opengamma.financial.analytics.model.volatility.local.deprecated.ForexLocalVolatilityPDEPresentValueResultCollection;

/**
* @deprecated Builds results from deprecated functions
*/
/* package */@Deprecated
final class PDEResultsFudgeBuilder {

  private PDEResultsFudgeBuilder() {
  }

  @FudgeBuilderFor(PDEGrid1D.class)
  public static final class PDEGrid1DFudgeBuilder extends AbstractFudgeBuilder<PDEGrid1D> {
    private static final String TIME_NODES_FIELD = "timeNodesField";
    private static final String SPACE_NODES_FIELD = "spaceNodesField";

    @Override
    public PDEGrid1D buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
      final double[] timeNodes = deserializer.fieldValueToObject(double[].class, message.getByName(TIME_NODES_FIELD));
      final double[] spaceNodes = deserializer.fieldValueToObject(double[].class, message.getByName(SPACE_NODES_FIELD));
      return new PDEGrid1D(timeNodes, spaceNodes);
    }

    @Override
    protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final PDEGrid1D object) {
      serializer.addToMessage(message, TIME_NODES_FIELD, null, object.getTimeNodes());
      serializer.addToMessage(message, SPACE_NODES_FIELD, null, object.getSpaceNodes());
    }

  }

  @FudgeBuilderFor(PDEFullResults1D.class)
  public static final class PDEFullResults1DFudgeBuilder extends AbstractFudgeBuilder<PDEFullResults1D> {
    private static final String SOLVER_DATA_FIELD = "solverDataField";
    private static final String GRID_FIELD = "gridField";

    @Override
    public PDEFullResults1D buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
      final double[][] solverData = deserializer.fieldValueToObject(double[][].class, message.getByName(SOLVER_DATA_FIELD));
      final PDEGrid1D grid = deserializer.fieldValueToObject(PDEGrid1D.class, message.getByName(GRID_FIELD));
      return new PDEFullResults1D(grid, solverData);
    }

    @Override
    protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final PDEFullResults1D object) {
      serializer.addToMessage(message, SOLVER_DATA_FIELD, null, object.getF());
      serializer.addToMessage(message, GRID_FIELD, null, object.getGrid());
    }
  }

  @FudgeBuilderFor(PDEResultCollection.class)
  public static final class PDEResultCollectionFudgeBuilder extends AbstractFudgeBuilder<PDEResultCollection> {
    private static final String STRIKES_FIELD = "strikesField";
    private static final String GRID_IMPLIED_VOLS_FIELD = "impliedVolatilityField";
    private static final String GRID_FOREX_PV_QUOTES_FIELD = "forexPVQuotesField"; //DEBUG trying to get a new number out
    private static final String GRID_PRICE_FIELD = "gridPriceField";
    private static final String GRID_BLACK_PRICE_FIELD = "gridBlackPriceField";
    private static final String GRID_BLACK_DELTA_FIELD = "gridBlackDeltaField";
    private static final String GRID_BLACK_DUAL_DELTA_FIELD = "gridBlackDualDeltaField";
    private static final String GRID_BLACK_GAMMA_FIELD = "gridBlackGammaField";
    private static final String GRID_BLACK_DUAL_GAMMA_FIELD = "gridBlackDualGammaField";
    private static final String GRID_BLACK_VEGA_FIELD = "gridBlackVegaField";
    private static final String GRID_BLACK_VANNA_FIELD = "gridBlackVannaField";
    private static final String GRID_BLACK_VOMMA_FIELD = "gridBlackVommaField";
    private static final String GRID_DELTA_FIELD = "gridDeltaField";
    private static final String GRID_DUAL_DELTA_FIELD = "gridDualDeltaField";
    private static final String GRID_GAMMA_FIELD = "gridGammaField";
    private static final String GRID_DUAL_GAMMA_FIELD = "gridDualGammaField";
    private static final String GRID_VEGA_FIELD = "gridVegaField";
    private static final String GRID_VANNA_FIELD = "gridVannaField";
    private static final String GRID_VOMMA_FIELD = "gridVommaField";

    @Override
    public PDEResultCollection buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
      final double[] strikes = deserializer.fieldValueToObject(double[].class, message.getByName(STRIKES_FIELD));
      final PDEResultCollection result = new PDEResultCollection(strikes);
      if (message.getByName(GRID_IMPLIED_VOLS_FIELD) != null) {
        final double[] impliedVol = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_IMPLIED_VOLS_FIELD));
        result.put(PDEResultCollection.GRID_IMPLIED_VOL, impliedVol);
      }
      //DEBUG trying to get a new number out
      if (message.getByName(GRID_FOREX_PV_QUOTES_FIELD) != null) {
        final double[] domesticAbsolute = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_FOREX_PV_QUOTES_FIELD));
        result.put(PDEResultCollection.GRID_DOMESTIC_PV_QUOTE, domesticAbsolute);
      }

      if (message.getByName(GRID_PRICE_FIELD) != null) {
        final double[] price = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_PRICE_FIELD));
        result.put(PDEResultCollection.GRID_PRICE, price);
      }
      if (message.getByName(GRID_BLACK_PRICE_FIELD) != null) {
        final double[] price = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_PRICE_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_PRICE, price);
      }
      if (message.getByName(GRID_BLACK_DELTA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_DELTA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_DELTA, greek);
      }
      if (message.getByName(GRID_BLACK_DUAL_DELTA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_DUAL_DELTA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_DUAL_DELTA, greek);
      }
      if (message.getByName(GRID_BLACK_GAMMA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_GAMMA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_GAMMA, greek);
      }
      if (message.getByName(GRID_BLACK_DUAL_GAMMA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_DUAL_GAMMA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_DUAL_GAMMA, greek);
      }
      if (message.getByName(GRID_BLACK_VEGA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_VEGA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_VEGA, greek);
      }
      if (message.getByName(GRID_BLACK_VANNA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_VANNA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_VANNA, greek);
      }
      if (message.getByName(GRID_BLACK_VOMMA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_BLACK_VOMMA_FIELD));
        result.put(PDEResultCollection.GRID_BLACK_VOMMA, greek);
      }
      if (message.getByName(GRID_DELTA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_DELTA_FIELD));
        result.put(PDEResultCollection.GRID_DELTA, greek);
      }
      if (message.getByName(GRID_DUAL_DELTA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_DUAL_DELTA_FIELD));
        result.put(PDEResultCollection.GRID_DUAL_DELTA, greek);
      }
      if (message.getByName(GRID_GAMMA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_GAMMA_FIELD));
        result.put(PDEResultCollection.GRID_GAMMA, greek);
      }
      if (message.getByName(GRID_DUAL_GAMMA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_DUAL_GAMMA_FIELD));
        result.put(PDEResultCollection.GRID_DUAL_GAMMA, greek);
      }
      if (message.getByName(GRID_VEGA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_VEGA_FIELD));
        result.put(PDEResultCollection.GRID_VEGA, greek);
      }
      if (message.getByName(GRID_VANNA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_VANNA_FIELD));
        result.put(PDEResultCollection.GRID_VANNA, greek);
      }
      if (message.getByName(GRID_VOMMA_FIELD) != null) {
        final double[] greek = deserializer.fieldValueToObject(double[].class, message.getByName(GRID_VOMMA_FIELD));
        result.put(PDEResultCollection.GRID_VOMMA, greek);
      }
      return result;
    }

    @Override
    protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final PDEResultCollection object) {
      serializer.addToMessage(message, STRIKES_FIELD, null, object.getStrikes());
      if (object.contains(PDEResultCollection.GRID_IMPLIED_VOL)) {
        serializer.addToMessage(message, GRID_IMPLIED_VOLS_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_IMPLIED_VOL));
      }
      //DEBUG trying to get a new number out
      if (object.contains(PDEResultCollection.GRID_DOMESTIC_PV_QUOTE)) {
        serializer.addToMessage(message, GRID_FOREX_PV_QUOTES_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_DOMESTIC_PV_QUOTE));
      }
      if (object.contains(PDEResultCollection.GRID_IMPLIED_VOL)) {
        serializer.addToMessage(message, GRID_IMPLIED_VOLS_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_IMPLIED_VOL));
      }
      if (object.contains(PDEResultCollection.GRID_PRICE)) {
        serializer.addToMessage(message, GRID_PRICE_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_PRICE));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_PRICE)) {
        serializer.addToMessage(message, GRID_BLACK_PRICE_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_PRICE));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_DELTA)) {
        serializer.addToMessage(message, GRID_BLACK_DELTA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_DELTA));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_DUAL_DELTA)) {
        serializer.addToMessage(message, GRID_BLACK_DUAL_DELTA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_DUAL_DELTA));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_GAMMA)) {
        serializer.addToMessage(message, GRID_BLACK_GAMMA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_GAMMA));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_DUAL_GAMMA)) {
        serializer.addToMessage(message, GRID_BLACK_DUAL_GAMMA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_DUAL_GAMMA));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_VEGA)) {
        serializer.addToMessage(message, GRID_BLACK_VEGA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_VEGA));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_VANNA)) {
        serializer.addToMessage(message, GRID_BLACK_VANNA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_VANNA));
      }
      if (object.contains(PDEResultCollection.GRID_BLACK_VOMMA)) {
        serializer.addToMessage(message, GRID_BLACK_VOMMA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_BLACK_VOMMA));
      }
      if (object.contains(PDEResultCollection.GRID_DELTA)) {
        serializer.addToMessage(message, GRID_DELTA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_DELTA));
      }
      if (object.contains(PDEResultCollection.GRID_DUAL_DELTA)) {
        serializer.addToMessage(message, GRID_DUAL_DELTA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_DUAL_DELTA));
      }
      if (object.contains(PDEResultCollection.GRID_GAMMA)) {
        serializer.addToMessage(message, GRID_GAMMA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_GAMMA));
      }
      if (object.contains(PDEResultCollection.GRID_DUAL_GAMMA)) {
        serializer.addToMessage(message, GRID_DUAL_GAMMA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_DUAL_GAMMA));
      }
      if (object.contains(PDEResultCollection.GRID_VEGA)) {
        serializer.addToMessage(message, GRID_VEGA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_VEGA));
      }
      if (object.contains(PDEResultCollection.GRID_VANNA)) {
        serializer.addToMessage(message, GRID_VANNA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_VANNA));
      }
      if (object.contains(PDEResultCollection.GRID_VOMMA)) {
        serializer.addToMessage(message, GRID_VOMMA_FIELD, null, object.getGridGreeks(PDEResultCollection.GRID_VOMMA));
      }
    }
  }

  @FudgeBuilderFor(BucketedGreekResultCollection.class)
  public static final class BucketedGreekResultCollectionFudgeBuilder extends AbstractFudgeBuilder<BucketedGreekResultCollection> {
    private static final String EXPIRIES_FIELD = "expiriesField";
    private static final String STRIKES_FIELD = "strikesField";
    private static final String BUCKETED_VEGA_FIELD = "bucketedVegaField";

    @Override
    public BucketedGreekResultCollection buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
      final double[] expiries = deserializer.fieldValueToObject(double[].class, message.getByName(EXPIRIES_FIELD));
      final double[][] strikes = deserializer.fieldValueToObject(double[][].class, message.getByName(STRIKES_FIELD));
      final BucketedGreekResultCollection result = new BucketedGreekResultCollection(expiries, strikes);
      if (message.getByName(BUCKETED_VEGA_FIELD) != null) {
        final double[][] greek = deserializer.fieldValueToObject(double[][].class, message.getByName(BUCKETED_VEGA_FIELD));
        result.put(BucketedGreekResultCollection.BUCKETED_VEGA, greek);
      }
      return result;
    }

    @Override
    protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final BucketedGreekResultCollection object) {
      serializer.addToMessage(message, EXPIRIES_FIELD, null, object.getExpiries());
      serializer.addToMessage(message, STRIKES_FIELD, null, object.getStrikes());
      if (object.contains(BucketedGreekResultCollection.BUCKETED_VEGA)) {
        serializer.addToMessage(message, BUCKETED_VEGA_FIELD, null, object.getBucketedGreeks(BucketedGreekResultCollection.BUCKETED_VEGA));
      }
    }

  }

  @FudgeBuilderFor(ForexLocalVolatilityPDEPresentValueResultCollection.class)
  public static final class ForexLocalVolatilityPDEPresentValueResultCollectionBuilder extends AbstractFudgeBuilder<ForexLocalVolatilityPDEPresentValueResultCollection> {
    private static final String STRIKES_FIELD = "strikes";

    @Override
    public ForexLocalVolatilityPDEPresentValueResultCollection buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
      final double[] strikes = deserializer.fieldValueToObject(double[].class, message.getByName(STRIKES_FIELD));
      final Map<String, double[]> pvDataMap = new HashMap<String, double[]>();
      if (message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PIPS) != null) {
        final double[] array = deserializer.fieldValueToObject(double[].class, message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PIPS));
        pvDataMap.put(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PIPS, array);
      }
      if (message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PUT_PV) != null) {
        final double[] array = deserializer.fieldValueToObject(double[].class, message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PUT_PV));
        pvDataMap.put(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PUT_PV, array);
      }
      if (message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.LV_CALL_PV) != null) {
        final double[] array = deserializer.fieldValueToObject(double[].class, message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.LV_CALL_PV));
        pvDataMap.put(ForexLocalVolatilityPDEPresentValueResultCollection.LV_CALL_PV, array);
      }
      if (message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PIPS) != null) {
        final double[] array = deserializer.fieldValueToObject(double[].class, message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PIPS));
        pvDataMap.put(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PIPS, array);
      }
      if (message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PUT_PV) != null) {
        final double[] array = deserializer.fieldValueToObject(double[].class, message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PUT_PV));
        pvDataMap.put(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PUT_PV, array);
      }
      if (message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_CALL_PV) != null) {
        final double[] array = deserializer.fieldValueToObject(double[].class, message.getByName(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_CALL_PV));
        pvDataMap.put(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_CALL_PV, array);
      }
      return new ForexLocalVolatilityPDEPresentValueResultCollection(strikes, pvDataMap);
    }

    @Override
    protected void buildMessage(final FudgeSerializer serializer, final MutableFudgeMsg message, final ForexLocalVolatilityPDEPresentValueResultCollection object) {
      serializer.addToMessage(message, STRIKES_FIELD, null, object.getStrikes());
      serializer.addToMessage(message, ForexLocalVolatilityPDEPresentValueResultCollection.LV_PIPS, null, object.getPV(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PIPS));
      serializer.addToMessage(message, ForexLocalVolatilityPDEPresentValueResultCollection.LV_PUT_PV, null, object.getPV(ForexLocalVolatilityPDEPresentValueResultCollection.LV_PUT_PV));
      serializer.addToMessage(message, ForexLocalVolatilityPDEPresentValueResultCollection.LV_CALL_PV, null, object.getPV(ForexLocalVolatilityPDEPresentValueResultCollection.LV_CALL_PV));
      serializer.addToMessage(message, ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PIPS, null, object.getPV(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PIPS));
      serializer.addToMessage(message, ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PUT_PV, null, object.getPV(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_PUT_PV));
      serializer.addToMessage(message, ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_CALL_PV, null, object.getPV(ForexLocalVolatilityPDEPresentValueResultCollection.BLACK_CALL_PV));
    }
  }
}
TOP

Related Classes of com.opengamma.financial.analytics.fudgemsg.PDEResultsFudgeBuilder$ForexLocalVolatilityPDEPresentValueResultCollectionBuilder

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.