/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.greeks;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.opengamma.analytics.financial.greeks.Greek;
import com.opengamma.analytics.financial.sensitivity.ValueGreek;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueRequirementNames;
/**
*
*/
public class AvailableValueGreeks {
private static final Map<String, ValueGreek> AVAILABLE_VALUE_GREEKS;
static {
AVAILABLE_VALUE_GREEKS = new HashMap<String, ValueGreek>();
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_FAIR_VALUE, new ValueGreek(Greek.FAIR_PRICE));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_DELTA, new ValueGreek(Greek.DELTA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_DELTA_BLEED, new ValueGreek(Greek.DELTA_BLEED));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_STRIKE_DELTA, new ValueGreek(Greek.STRIKE_DELTA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_DRIFTLESS_DELTA, new ValueGreek(Greek.DRIFTLESS_THETA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_GAMMA, new ValueGreek(Greek.GAMMA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_GAMMA_P, new ValueGreek(Greek.GAMMA_P));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_STRIKE_GAMMA, new ValueGreek(Greek.STRIKE_GAMMA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_GAMMA_BLEED, new ValueGreek(Greek.GAMMA_BLEED));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_GAMMA_P_BLEED, new ValueGreek(Greek.GAMMA_P_BLEED));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VEGA, new ValueGreek(Greek.VEGA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VEGA_P, new ValueGreek(Greek.VEGA_P));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VARIANCE_VEGA, new ValueGreek(Greek.VARIANCE_VEGA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VEGA_BLEED, new ValueGreek(Greek.VEGA_BLEED));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_THETA, new ValueGreek(Greek.THETA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_RHO, new ValueGreek(Greek.RHO));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_CARRY_RHO, new ValueGreek(Greek.CARRY_RHO));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_ZETA, new ValueGreek(Greek.ZETA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_ZETA_BLEED, new ValueGreek(Greek.ZETA_BLEED));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_DZETA_DVOL, new ValueGreek(Greek.DZETA_DVOL));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_ELASTICITY, new ValueGreek(Greek.ELASTICITY));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_PHI, new ValueGreek(Greek.PHI));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_ZOMMA, new ValueGreek(Greek.ZOMMA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_ZOMMA_P, new ValueGreek(Greek.ZOMMA_P));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_ULTIMA, new ValueGreek(Greek.ULTIMA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VARIANCE_ULTIMA, new ValueGreek(Greek.VARIANCE_ULTIMA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_SPEED, new ValueGreek(Greek.SPEED));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_SPEED_P, new ValueGreek(Greek.SPEED_P));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VANNA, new ValueGreek(Greek.VANNA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VARIANCE_VANNA, new ValueGreek(Greek.VARIANCE_VANNA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_DVANNA_DVOL, new ValueGreek(Greek.DVANNA_DVOL));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VOMMA, new ValueGreek(Greek.VOMMA));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VOMMA_P, new ValueGreek(Greek.VOMMA_P));
AVAILABLE_VALUE_GREEKS.put(ValueRequirementNames.VALUE_VARIANCE_VOMMA, new ValueGreek(Greek.VARIANCE_VOMMA));
}
public static ValueGreek getValueGreekForValueRequirementName(final String valueName) {
if (!AVAILABLE_VALUE_GREEKS.containsKey(valueName)) {
throw new IllegalArgumentException("Could not get value greek for ValueRequirementName " + valueName);
}
return AVAILABLE_VALUE_GREEKS.get(valueName);
}
public static String getGreekRequirementNameForValueGreekName(final String valueName) {
final ValueGreek valueGreek = AVAILABLE_VALUE_GREEKS.get(valueName);
if (valueGreek == null) {
throw new IllegalArgumentException("Could not get value greek for ValueRequirementName " + valueName);
}
return AvailableGreeks.getValueRequirementNameForGreek(valueGreek.getUnderlyingGreek());
}
public static ValueGreek getValueGreekForValueRequirement(final ValueRequirement requirement) {
final String greekName = requirement.getValueName();
if (!AVAILABLE_VALUE_GREEKS.containsKey(greekName)) {
throw new IllegalArgumentException("Could not get value greek for ValueRequirement " + requirement.toString());
}
return AVAILABLE_VALUE_GREEKS.get(greekName);
}
public static Set<String> getAllValueGreekNames() {
return AVAILABLE_VALUE_GREEKS.keySet();
}
public static Map<String, ValueGreek> getAllValueGreekNamesAndValueGreeks() {
return AVAILABLE_VALUE_GREEKS;
}
}