Skip to content

Instantly share code, notes, and snippets.

@Vineeth-Mohan
Created November 14, 2012 09:30
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/4071193 to your computer and use it in GitHub Desktop.
Save Vineeth-Mohan/4071193 to your computer and use it in GitHub Desktop.
/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.algoTree.Functions;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import javax.time.calendar.Period;
import org.apache.commons.lang.Validate;
import com.opengamma.core.historicaltimeseries.HistoricalTimeSeries;
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.ValueRequirement;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.financial.OpenGammaCompilationContext;
import com.opengamma.financial.analytics.timeseries.DateConstraint;
import com.opengamma.financial.analytics.timeseries.HistoricalTimeSeriesFunctionUtils;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesResolutionResult;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesResolver;
/**
*
*/
public class AlgotreeHistoricalValueFunction extends AbstractFunction.NonCompiledInvoker {
private static HashMap<String, String> s_marketDataRequirementNamesMap;
static {
s_marketDataRequirementNamesMap = new HashMap<String, String>();
s_marketDataRequirementNamesMap.put(ValueRequirementNames.DAILY_VOLUME, "volume");
s_marketDataRequirementNamesMap.put(ValueRequirementNames.DAILY_APPLIED_BETA, "APPLIED_BETA");
s_marketDataRequirementNamesMap.put(ValueRequirementNames.DAILY_MARKET_CAP, "CUR_MKT_CAP");
s_marketDataRequirementNamesMap.put(ValueRequirementNames.DAILY_PRICE, "close");
}
private final String _requirementName;
public AlgotreeHistoricalValueFunction(final String requirementName) {
Validate.notNull(requirementName, "Requirement name");
System.out.println("Creating AlgotreeHistoricalValueFunction function");
_requirementName = requirementName;
}
@Override
public boolean canApplyTo(final FunctionCompilationContext context, final ComputationTarget target) {
return true;
}
@Override
public Set<ValueRequirement> getRequirements(final FunctionCompilationContext context, final ComputationTarget target, final ValueRequirement desiredValue) {
// final HistoricalTimeSeriesResolver resolver = OpenGammaCompilationContext.getHistoricalTimeSeriesResolver(context);
// final String fieldName = s_marketDataRequirementNamesMap.get(_requirementName);
// final HistoricalTimeSeriesResolutionResult timeSeries = resolver.resolve(target.getSecurity().getExternalIdBundle(), null, null, null, fieldName, null);
// if (timeSeries == null) {
// return null;
// }
// ValueRequirement result = HistoricalTimeSeriesFunctionUtils.createHTSRequirement(timeSeries, fieldName,
// DateConstraint.VALUATION_TIME.minus(Period.ofDays(20)), true, DateConstraint.VALUATION_TIME.yesterday(), true);
// return Collections.singleton(HistoricalTimeSeriesFunctionUtils.createHTSRequirement(timeSeries, fieldName,
// DateConstraint.VALUATION_TIME.minus(Period.ofDays(7)), true, DateConstraint.VALUATION_TIME.yesterday() , true));
return null;
}
@Override
public Set<ValueSpecification> getResults(final FunctionCompilationContext context, final ComputationTarget target) {
return Collections.singleton(new ValueSpecification(_requirementName, target.toSpecification(), createValueProperties().get()));
}
@Override
public String getShortName() {
System.out.println("Registering " + _requirementName);
return _requirementName;
}
@Override
public ComputationTargetType getTargetType() {
return ComputationTargetType.SECURITY;
}
@Override
public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
System.out.println("Executing function");
final HistoricalTimeSeries hts = (HistoricalTimeSeries) inputs.getComputedValue("Historical Time Series").getValue();
final ValueRequirement desiredValue = desiredValues.iterator().next();
return Collections.singleton(new ComputedValue(new ValueSpecification(desiredValue.getValueName(), desiredValue.getTargetSpecification(), desiredValue.getConstraints()), hts.getTimeSeries()
.getLatestValue()));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment