Created
November 14, 2012 09:30
-
-
Save Vineeth-Mohan/4071193 to your computer and use it in GitHub Desktop.
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.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