Package com.opengamma.core.position

Examples of com.opengamma.core.position.PositionOrTrade


  public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
    final ValueRequirement desiredValue = desiredValues.iterator().next();
    BigDecimal tradeValue = null;
    HistoricalTimeSeries htsMarkToMarket = null;
    HistoricalTimeSeries htsCostOfCarry = null;
    final PositionOrTrade trade = target.getPositionOrTrade();
    for (final ComputedValue input : inputs.getAllValues()) {
      if (ValueRequirementNames.VALUE.equals(input.getSpecification().getValueName())) {
        tradeValue = BigDecimal.valueOf((Double) input.getValue());
        if (trade instanceof Trade) {
          // Need to scale the value by the trade quantity
          tradeValue = ((Trade) trade).getQuantity().multiply(tradeValue);
        }
      } else if (ValueRequirementNames.HISTORICAL_TIME_SERIES.equals(input.getSpecification().getValueName())) {
        final String field = input.getSpecification().getProperty(HistoricalTimeSeriesFunctionUtils.DATA_FIELD_PROPERTY);
        if (_costOfCarryField.equals(field)) {
          htsCostOfCarry = (HistoricalTimeSeries) input.getValue();
        } else if (_mark2MarketField.equals(field)) {
          htsMarkToMarket = (HistoricalTimeSeries) input.getValue();
        }
      }
    }
    final Security security = trade.getSecurity();
    LocalDate tradeDate = getPreferredTradeDate(executionContext.getValuationClock(), trade);
    tradeDate = checkAvailableData(tradeDate, htsMarkToMarket, security, _mark2MarketField, _resolutionKey);
    final ValueSpecification valueSpecification = new ValueSpecification(getResultValueRequirementName(), target.toSpecification(), desiredValue.getConstraints());
    final double costOfCarry = getCostOfCarry(security, tradeDate, htsCostOfCarry);
    Double markToMarket = htsMarkToMarket.getTimeSeries().getValue(tradeDate);
    if (security instanceof FutureSecurity) {
      final FutureSecurity futureSecurity = (FutureSecurity) security;
      markToMarket = markToMarket * futureSecurity.getUnitAmount();
    }
    final BigDecimal dailyPnL = tradeValue.subtract(trade.getQuantity().multiply(BigDecimal.valueOf(markToMarket + costOfCarry)));
    s_logger.debug("{}  security: {} quantity: {} fairValue: {} markToMarket: {} costOfCarry: {} dailyPnL: {}",
          new Object[] {trade.getUniqueId(), trade.getSecurity().getExternalIdBundle(), trade.getQuantity(), tradeValue, markToMarket, costOfCarry, dailyPnL });
    final ComputedValue result = new ComputedValue(valueSpecification, MoneyCalculationUtils.rounded(dailyPnL).doubleValue());
    return Sets.newHashSet(result);
  }
View Full Code Here


    return result;
  }

  @Override
  public Set<ValueRequirement> getRequirements(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue) {
    final PositionOrTrade positionOrTrade = target.getPositionOrTrade();
    final Security security = positionOrTrade.getSecurity();
    final ValueRequirement securityOrTradeValue;
    if (positionOrTrade instanceof Trade) {
      // If a TRADE, request the SECURITY's value and scale up during the execute
      securityOrTradeValue = new ValueRequirement(ValueRequirementNames.VALUE, ComputationTargetType.SECURITY, security.getUniqueId(), getCurrencyProperty(security));
    } else {
View Full Code Here

      }
    });
    getName.put(ComputationTargetType.POSITION.or(ComputationTargetType.TRADE), new Function1<ComputationTarget, String>() {
      @Override
      public String execute(final ComputationTarget target) {
        final PositionOrTrade position = target.getPositionOrTrade();
        Security security = position.getSecurity();
        if (security != null) {
          return security.getName();
        }
        final SecurityLink link = position.getSecurityLink();
        if (link != null) {
          security = link.getTarget();
          if (security != null) {
            return security.getName();
          }
          final ExternalIdBundle identifiers = link.getExternalId();
          if (identifiers != null) {
            if (identifiers.size() > 0) {
              return position.getQuantity() + " x " + identifiers.iterator().next();
            } else {
              return position.getQuantity() + " x " + identifiers;
            }
          } else if (link.getObjectId() != null) {
            return position.getQuantity() + " x " + link.getObjectId();
          }
        }
        return null;
      }
    });
View Full Code Here

TOP

Related Classes of com.opengamma.core.position.PositionOrTrade

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.