Last active
January 1, 2016 07:09
-
-
Save febintt/8109409 to your computer and use it in GitHub Desktop.
market value weight.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies | |
* | |
* Please see distribution for license. | |
*/ | |
package com.opengamma.algotree.function; | |
import java.util.Collections; | |
import java.util.HashSet; | |
import java.util.Set; | |
import com.opengamma.engine.ComputationTarget; | |
import com.opengamma.engine.function.AbstractFunction; | |
import com.opengamma.engine.function.FunctionCompilationContext; | |
import com.opengamma.engine.function.FunctionExecutionContext; | |
import com.opengamma.engine.function.FunctionInputs; | |
import com.opengamma.engine.target.ComputationTargetType; | |
import com.opengamma.engine.value.ComputedValue; | |
import com.opengamma.engine.value.ValueRequirement; | |
import com.opengamma.engine.value.ValueSpecification; | |
/** | |
* Algotree market value function. | |
*/ | |
public class CustomMarketValueWeightFunction extends | |
AbstractFunction.NonCompiledInvoker { | |
@Override | |
public boolean canApplyTo(final FunctionCompilationContext context, | |
final ComputationTarget target) { | |
return true; | |
} | |
@Override | |
public String getShortName() { | |
return CustomValueRequirementNames.CUSTOM_MARKET_VALUE_WEIGHT; | |
} | |
@Override | |
public ComputationTargetType getTargetType() { | |
return ComputationTargetType.SECURITY; | |
} | |
@Override | |
public Set<ValueRequirement> getRequirements( | |
final FunctionCompilationContext context, final ComputationTarget target, | |
final ValueRequirement desiredValue) { | |
final Set<ValueRequirement> requirements = new HashSet<ValueRequirement>(); | |
//requirements.add(new ValueRequirement(CustomValueRequirementNames.CUSTOM_MARKET_VALUE, ComputationTargetType.SECURITY, target.getSecurity().getUniqueId())); | |
//requirements.add(new ValueRequirement(CustomValueRequirementNames.CUSTOM_BETA, ComputationTargetType.SECURITY, target.getSecurity().getUniqueId())); | |
requirements.add(new ValueRequirement(CustomValueRequirementNames.CUSTOM_MARKET_VALUE, ComputationTargetType.PORTFOLIO_NODE, target.getPortfolioNode().getUniqueId())); | |
return requirements; | |
} | |
@Override | |
public Set<ValueSpecification> getResults( | |
final FunctionCompilationContext context, final ComputationTarget target) { | |
return Collections.singleton(new ValueSpecification(CustomValueRequirementNames.CUSTOM_MARKET_VALUE_WEIGHT, | |
target.toSpecification(), createValueProperties().get())); | |
} | |
@Override | |
public Set<ComputedValue> execute( | |
final FunctionExecutionContext executionContext, | |
final FunctionInputs inputs, final ComputationTarget target, | |
final Set<ValueRequirement> desiredValues) { | |
final double customMarketValue = (Double) inputs.getValue(CustomValueRequirementNames.CUSTOM_MARKET_VALUE); | |
final ValueRequirement desiredValue = desiredValues.iterator().next(); | |
return Collections.singleton(new ComputedValue(new ValueSpecification( | |
desiredValue.getValueName(), target.toSpecification(), | |
createValueProperties().get()), customMarketValue)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment