Package com.opengamma.core.position

Examples of com.opengamma.core.position.Position


    String parentRowIdText = parentRow != null ? Integer.toString(getGridStructure().getRowIds(parentRow.getTarget())[0]) : null;

    String name;
    String quantity;
    if (target.getType() == ComputationTargetType.POSITION) {
      Position position = portfolioRow.getPosition();
      name = position.getSecurity().getName();
      quantity = position.getQuantity().toPlainString();
    } else {
      name = portfolioRow.getAggregateName();
      quantity = "";
    }
View Full Code Here


  private static final TimeSeriesDifferenceOperator DIFFERENCE = new TimeSeriesDifferenceOperator();

  @Override
  public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target,
      final Set<ValueRequirement> desiredValues) throws AsynchronousExecution {
    final Position position = target.getPosition();
    final ValueRequirement desiredValue = Iterables.getOnlyElement(desiredValues);
    final DoubleLabelledMatrix1D sensitivities = ((DoubleLabelledMatrix1D) inputs.getValue(YIELD_CURVE_NODE_SENSITIVITIES));
    final String currency = inputs.getComputedValue(YIELD_CURVE_NODE_SENSITIVITIES).getSpecification().getProperty(CURRENCY);
    final double[] ycns = sensitivities.getValues();
    final Object[] labels = sensitivities.getLabels();
    final CurveSpecification curveSpec = (CurveSpecification) inputs.getValue(CURVE_SPECIFICATION);
    final int n = ycns.length;
    if (n != curveSpec.getNodes().size()) {
      throw new OpenGammaRuntimeException("Do not have a sensitivity for each node");
    }
    final Tenor[] tenors = new Tenor[n];
    final LocalDateDoubleTimeSeries[] returnSeries = new LocalDateDoubleTimeSeries[n];
    final HistoricalTimeSeriesBundle tsBundle = (HistoricalTimeSeriesBundle) inputs.getValue(CURVE_HISTORICAL_TIME_SERIES);
    final Iterator<CurveNodeWithIdentifier> iterator = curveSpec.getNodes().iterator();
    for (int i = 0; i < n; i++) {
      final double sensitivity = ycns[i];
      final CurveNodeWithIdentifier curveNode = iterator.next();
      final HistoricalTimeSeries ts = tsBundle.get(curveNode.getDataField(), curveNode.getIdentifier());
      if (ts == null) {
        throw new OpenGammaRuntimeException("Could not get time series for id " + curveNode.getIdentifier() + " and data field " + curveNode.getDataField());
      }
      final LocalDateDoubleTimeSeries pnlSeries = getReturnSeries(ts.getTimeSeries(), desiredValue, executionContext);
      tenors[i] = curveNode.getCurveNode().getResolvedMaturity();
      returnSeries[i] = pnlSeries.multiply(sensitivity * position.getQuantity().doubleValue());
    }
    final TenorLabelledLocalDateDoubleTimeSeriesMatrix1D matrix = new TenorLabelledLocalDateDoubleTimeSeriesMatrix1D(tenors, labels, returnSeries);
    final ValueProperties properties = desiredValue.getConstraints().copy()
        .withoutAny(CURRENCY)
        .with(CURRENCY, currency)
View Full Code Here

  private static final TimeSeriesDifferenceOperator DIFFERENCE = new TimeSeriesDifferenceOperator();

  @Override
  public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target,
      final Set<ValueRequirement> desiredValues) throws AsynchronousExecution {
    final Position position = target.getPosition();
    final ValueRequirement desiredValue = Iterables.getOnlyElement(desiredValues);
    final DoubleLabelledMatrix1D sensitivities = ((DoubleLabelledMatrix1D) inputs.getValue(FX_FORWARD_POINTS_NODE_SENSITIVITIES));
    final String currency = inputs.getComputedValue(FX_FORWARD_POINTS_NODE_SENSITIVITIES).getSpecification().getProperty(CURRENCY);
    final double[] fcns = sensitivities.getValues();
    final Object[] labels = sensitivities.getLabels();
    final CurveSpecification curveSpec = (CurveSpecification) inputs.getValue(CURVE_SPECIFICATION);
    final int n = fcns.length;
    if (n != curveSpec.getNodes().size()) {
      throw new OpenGammaRuntimeException("Do not have a sensitivity for each node");
    }
    final Tenor[] tenors = new Tenor[n];
    final LocalDateDoubleTimeSeries[] returnSeries = new LocalDateDoubleTimeSeries[n];
    final HistoricalTimeSeriesBundle tsBundle = (HistoricalTimeSeriesBundle) inputs.getValue(CURVE_HISTORICAL_TIME_SERIES);
    final Iterator<CurveNodeWithIdentifier> iterator = curveSpec.getNodes().iterator();
    for (int i = 0; i < n; i++) {
      final double sensitivity = fcns[i];
      final CurveNodeWithIdentifier curveNode = iterator.next();
      final HistoricalTimeSeries ts = tsBundle.get(curveNode.getDataField(), curveNode.getIdentifier());
      if (ts == null) {
        throw new OpenGammaRuntimeException("Could not get time series for id " + curveNode.getIdentifier() + " and data field " + curveNode.getDataField());
      }
      LocalDateDoubleTimeSeries pnlSeries;
      if (curveNode instanceof PointsCurveNodeWithIdentifier) {
        final PointsCurveNodeWithIdentifier pointsCurveNode = (PointsCurveNodeWithIdentifier) curveNode;
        final HistoricalTimeSeries underlyingSeries = tsBundle.get(pointsCurveNode.getUnderlyingDataField(), pointsCurveNode.getUnderlyingIdentifier());
        if (underlyingSeries == null) {
          throw new OpenGammaRuntimeException("Could not get time series for id " + pointsCurveNode.getUnderlyingIdentifier() + " and data field " + pointsCurveNode.getUnderlyingDataField());
        }
        pnlSeries = getReturnSeries(ts.getTimeSeries().add(underlyingSeries.getTimeSeries()), desiredValue, executionContext);
      } else {
        pnlSeries = getReturnSeries(ts.getTimeSeries(), desiredValue, executionContext);
      }
      tenors[i] = curveNode.getCurveNode().getResolvedMaturity();
      returnSeries[i] = pnlSeries.multiply(sensitivity * position.getQuantity().doubleValue());
    }
    final TenorLabelledLocalDateDoubleTimeSeriesMatrix1D matrix = new TenorLabelledLocalDateDoubleTimeSeriesMatrix1D(tenors, labels, returnSeries);
    final ValueProperties properties = desiredValue.getConstraints().copy()
        .withoutAny(CURRENCY)
        .with(CURRENCY, currency)
View Full Code Here

 
  protected Collection<Position> positions(PositionSearchRequest positionSearch) {
    s_logger.debug("findPositions.positionSearchRequest {}", positionSearch);
    List<Position> positions = Lists.newArrayList();
    for (ObjectId positionObjectId : positionSearch.getPositionObjectIds()) {
      Position position = getDelegatingPositionSource().getPosition(positionObjectId, VersionCorrection.LATEST);
      if (position != null) {
        positions.add(position);
      } else {
        s_logger.warn("Position {} cannot be found in DelegatingPositionSource {}", positionObjectId, getDelegatingPositionSource());
      }
View Full Code Here

    sourceNode.setUniqueId(nodeId);
    sourceNode.setName(manNode.getName());
    sourceNode.setParentNodeId(manNode.getParentNodeId());
    if (manNode.getPositionIds().size() > 0) {
      for (final ObjectId positionId : manNode.getPositionIds()) {
        final Position foundPosition = positionCache.get(positionId);
        if (foundPosition != null) {
          sourceNode.addPosition(foundPosition);
        } else {
          s_logger.warn("Position {} not found for portfolio node {}", positionId, nodeId);
        }
View Full Code Here

public class FXForwardPointsCurrencyExposurePnLFunction extends AbstractFunction.NonCompiledInvoker {

  @Override
  public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target,
      final Set<ValueRequirement> desiredValues) throws AsynchronousExecution {
    final Position position = target.getPosition();
    final ValueRequirement desiredValue = Iterables.getOnlyElement(desiredValues);
    final FXForwardSecurity security = (FXForwardSecurity) position.getSecurity();
    final MultipleCurrencyAmount mca = (MultipleCurrencyAmount) inputs.getValue(FX_CURRENCY_EXPOSURE);
    final Currency payCurrency = security.getPayCurrency();
    final Currency receiveCurrency = security.getReceiveCurrency();
    final CurrencyPairs currencyPairs = (CurrencyPairs) inputs.getValue(CURRENCY_PAIRS);
    final CurrencyPair currencyPair = currencyPairs.getCurrencyPair(payCurrency, receiveCurrency);
    final Currency currencyNonBase = currencyPair.getCounter(); // The non-base currency
    final double exposure = mca.getAmount(currencyNonBase);
    final LocalDateDoubleTimeSeries fxSpotReturnSeries = (LocalDateDoubleTimeSeries) inputs.getValue(RETURN_SERIES);
    final LocalDateDoubleTimeSeries pnlSeries = fxSpotReturnSeries.multiply(position.getQuantity().doubleValue() * exposure); // The P/L time series is in the base currency
    final ValueSpecification spec = new ValueSpecification(ValueRequirementNames.PNL_SERIES, target.toSpecification(), desiredValue.getConstraints());
    return Collections.singleton(new ComputedValue(spec, pnlSeries));
  }
View Full Code Here

    return Collections.singleton(new ValueSpecification(DV01, target.toSpecification(), ValueProperties.all()));
  }

  @Override
  public Set<ValueRequirement> getRequirements(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue) {
    final Position position = target.getPosition();
    final ValueRequirement requirement = new ValueRequirement(PV01, ComputationTargetType.POSITION, position.getUniqueId(), desiredValue.getConstraints().withoutAny(
        ValuePropertyNames.FUNCTION).withoutAny(ValuePropertyNames.SHIFT));
    return Collections.singleton(requirement);
  }
View Full Code Here

    return Sets.newHashSet(new ValueSpecification(_requirementName, target.toSpecification(), ValueProperties.all()));
  }

  @Override
  public Set<ValueRequirement> getRequirements(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue) {
    final Position position = target.getPosition();
    final Collection<Trade> trades = position.getTrades();
    final Set<ValueRequirement> result = new HashSet<ValueRequirement>();
    final ValueProperties inputConstraint = desiredValue.getConstraints().withoutAny(ValuePropertyNames.FUNCTION);
    for (final Trade trade : trades) {
      result.add(new ValueRequirement(_requirementName, ComputationTargetType.TRADE, trade.getUniqueId(), inputConstraint));
    }
View Full Code Here

    assertEquals("Child", testResult.getRootNode().getChildNodes().get(0).getName());
    assertEquals(UID3, testResult.getRootNode().getChildNodes().get(0).getUniqueId());
    assertEquals(UID2, testResult.getRootNode().getChildNodes().get(0).getParentNodeId());
    assertEquals(1, testResult.getRootNode().getChildNodes().get(0).getPositions().size());
    assertEquals(0, testResult.getRootNode().getChildNodes().get(0).getChildNodes().size());
    Position pos = testResult.getRootNode().getChildNodes().get(0).getPositions().get(0);
    assertEquals(UID4, pos.getUniqueId());
    assertEquals(BigDecimal.valueOf(1235), pos.getQuantity());
    assertEquals(ExternalIdBundle.of("AA", "BB"), pos.getSecurityLink().getExternalId());
    assertEquals(1, pos.getTrades().size());
    Trade trade = pos.getTrades().iterator().next();
    assertEquals(UID5, trade.getUniqueId());
    assertEquals(BigDecimal.valueOf(1234), trade.getQuantity());
    assertEquals(ExternalIdBundle.of("CC", "DD"), trade.getSecurityLink().getExternalId());
  }
View Full Code Here

    final PositionMaster mockPosition = mock(PositionMaster.class);
    final PositionDocument doc = new PositionDocument(new ManageablePosition(BigDecimal.TEN, ExternalId.of("B", "C")));
    doc.getPosition().setUniqueId(UID);
    when(mockPosition.get(UID)).thenReturn(doc);
    MasterPositionSource test = new MasterPositionSource(mockPortfolio, mockPosition);
    Position testResult = test.getPosition(UID);
    verify(mockPosition, times(1)).get(UID);
    assertEquals(UID, testResult.getUniqueId());
    assertEquals(BigDecimal.TEN, testResult.getQuantity());
    assertEquals(ExternalId.of("B", "C").toBundle(), testResult.getSecurityLink().getExternalId());
  }
View Full Code Here

TOP

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

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.