Package com.opengamma.financial.analytics.model.bond

Source Code of com.opengamma.financial.analytics.model.bond.BondFunction

/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.bond;

import java.util.Set;

import org.threeten.bp.ZonedDateTime;

import com.opengamma.core.holiday.HolidaySource;
import com.opengamma.core.region.RegionSource;
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.financial.OpenGammaCompilationContext;
import com.opengamma.financial.analytics.conversion.BondSecurityConverter;
import com.opengamma.financial.convention.ConventionBundleSource;
import com.opengamma.financial.security.FinancialSecurityTypes;
import com.opengamma.financial.security.bond.BondSecurity;

/**
*
* @param <T> The type of data that the calculator needs
*/
public abstract class BondFunction<T> extends AbstractFunction.NonCompiledInvoker {
  /** String indicating that the calculator used curves */
  public static final String FROM_CURVES_METHOD = "FromCurves";
  /** String indicating that the calculator used the clean price */
  public static final String FROM_CLEAN_PRICE_METHOD = "FromCleanPrice";
  /** String indicating that the calculator used the dirty price */
  public static final String FROM_DIRTY_PRICE_METHOD = "FromDirtyPrice";
  /** String indicating that the calculator used the yield */
  public static final String FROM_YIELD_METHOD = "FromYield";
  /** String indicating the name for the risk-free curve */
  public static final String PROPERTY_RISK_FREE_CURVE = "RiskFree";
  /** String indicating the name for the credit curve */
  public static final String PROPERTY_CREDIT_CURVE = "Credit";
  /** String indicating the name for the risk-free curve */
  public static final String PROPERTY_RISK_FREE_CURVE_CONFIG = "RiskFreeConfig";
  /** String indicating the name for the credit curve */
  public static final String PROPERTY_CREDIT_CURVE_CONFIG = "CreditConfig";
  private BondSecurityConverter _visitor;

  @Override
  public void init(final FunctionCompilationContext context) {
    final HolidaySource holidaySource = OpenGammaCompilationContext.getHolidaySource(context);
    final ConventionBundleSource conventionSource = OpenGammaCompilationContext.getConventionBundleSource(context);
    final RegionSource regionSource = OpenGammaCompilationContext.getRegionSource(context);
    _visitor = new BondSecurityConverter(holidaySource, conventionSource, regionSource);
  }

  @Override
  public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
    final ZonedDateTime date = ZonedDateTime.now(executionContext.getValuationClock());
    final BondSecurity security = (BondSecurity) target.getSecurity();
    return calculate(date, security, getData(inputs, target, desiredValues), target, inputs, desiredValues);
  }

  @Override
  public ComputationTargetType getTargetType() {
    return FinancialSecurityTypes.BOND_SECURITY;
  }

  protected BondSecurityConverter getConverter() {
    return _visitor;
  }

  protected abstract Set<ComputedValue> calculate(final ZonedDateTime date, final BondSecurity bondSecurity, final T data, final ComputationTarget target, final FunctionInputs inputs,
      final Set<ValueRequirement> desiredValues);

  protected abstract T getData(final FunctionInputs inputs, final ComputationTarget target, final Set<ValueRequirement> desiredValues);

}
TOP

Related Classes of com.opengamma.financial.analytics.model.bond.BondFunction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.