Skip to content

Instantly share code, notes, and snippets.

@Vineeth-Mohan
Created May 31, 2012 19:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Vineeth-Mohan/2845458 to your computer and use it in GitHub Desktop.
Save Vineeth-Mohan/2845458 to your computer and use it in GitHub Desktop.
package com.opengamma.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang.Validate;
import com.opengamma.analytics.financial.equity.future.pricing.EquityFuturePricerFactory;
import com.opengamma.analytics.financial.equity.future.pricing.EquityFuturesPricingMethod;
import com.opengamma.core.value.MarketDataRequirementNames;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.ComputationTargetType;
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.value.ComputedValue;
import com.opengamma.engine.value.ValueProperties;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.financial.security.equity.EquitySecurity;
/**
* The Standard Equity Model Function simply returns the market value for any cash Equity security.
*/
public class MyFunction extends AbstractFunction.NonCompiledInvoker {
// public MyFunction(final String valueRequirementName, final String pricingMethodName, final String fundingCurveName) {
// System.out.println("VINEETH " + valueRequirementName + " " + pricingMethodName + " " + fundingCurveName);
// }
@Override
public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
final EquitySecurity equity = (EquitySecurity) target.getSecurity();
//final double price = 10;
List<Double> price = new ArrayList<Double>();
price.add(5.0);
price.add(10.0);
price.add(15.0);
price.add(25.0);
//String startDateStr = desiredValues.getConstraints("STARTDATE");
System.out.println("DESIRED VALUES " + desiredValues);
// TODO this needs to annotate the result value with the currency of the value.
return Collections.<ComputedValue>singleton(
new ComputedValue(
new ValueSpecification(
new ValueRequirement(ValueRequirementNames.VineethCustomValue, ComputationTargetType.SECURITY, equity.getUniqueId(),
createValueProperties().with(ValuePropertyNames.CURRENCY, equity.getCurrency().getCode()).with("STARTDATE","VINEETH").get()),
getUniqueId()),
price));
}
@Override
public boolean canApplyTo(final FunctionCompilationContext context, final ComputationTarget target) {
if (target.getType() != ComputationTargetType.SECURITY) {
return false;
}
if (target.getSecurity() instanceof EquitySecurity) {
return true;
}
return false;
}
@Override
public Set<ValueRequirement> getRequirements(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue) {
if (canApplyTo(context, target)) {
final EquitySecurity equity = (EquitySecurity) target.getSecurity();
final Set<ValueRequirement> requirements = new HashSet<ValueRequirement>();
//requirements.add(new ValueRequirement(MarketDataRequirementNames.MARKET_VALUE, ComputationTargetType.SECURITY, equity.getUniqueId()));
return requirements;
}
return null;
}
@Override
public Set<ValueSpecification> getResults(final FunctionCompilationContext context, final ComputationTarget target) {
if (canApplyTo(context, target)) {
final EquitySecurity equity = (EquitySecurity) target.getSecurity();
return Collections.<ValueSpecification>singleton(
new ValueSpecification(new ValueRequirement(ValueRequirementNames.VineethCustomValue,
ComputationTargetType.SECURITY,
equity.getUniqueId(),
createValueProperties().
with(ValuePropertyNames.CURRENCY, equity.getCurrency().getCode()).withAny("STARTDATE")
.get()),
getUniqueId()));
}
return null;
}
@Override
public String getShortName() {
return ValueRequirementNames.VineethCustomValue;
}
@Override
public ComputationTargetType getTargetType() {
return ComputationTargetType.SECURITY;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment