All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opengamma.strata.measure.StandardComponents Maven / Gradle / Ivy

/*
 * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
 *
 * Please see distribution for license.
 */
package com.opengamma.strata.measure;

import java.util.List;

import com.google.common.collect.ImmutableList;
import com.opengamma.strata.calc.CalculationRunner;
import com.opengamma.strata.calc.marketdata.MarketDataFactory;
import com.opengamma.strata.calc.marketdata.MarketDataFunction;
import com.opengamma.strata.calc.marketdata.ObservableDataProvider;
import com.opengamma.strata.calc.marketdata.TimeSeriesProvider;
import com.opengamma.strata.calc.runner.CalculationFunctions;
import com.opengamma.strata.measure.bond.BillTradeCalculationFunction;
import com.opengamma.strata.measure.bond.BondFutureOptionTradeCalculationFunction;
import com.opengamma.strata.measure.bond.BondFutureTradeCalculationFunction;
import com.opengamma.strata.measure.bond.CapitalIndexedBondTradeCalculationFunction;
import com.opengamma.strata.measure.bond.FixedCouponBondTradeCalculationFunction;
import com.opengamma.strata.measure.capfloor.IborCapFloorTradeCalculationFunction;
import com.opengamma.strata.measure.cms.CmsTradeCalculationFunction;
import com.opengamma.strata.measure.credit.CdsIndexTradeCalculationFunction;
import com.opengamma.strata.measure.credit.CdsTradeCalculationFunction;
import com.opengamma.strata.measure.curve.CurveMarketDataFunction;
import com.opengamma.strata.measure.deposit.TermDepositTradeCalculationFunction;
import com.opengamma.strata.measure.dsf.DsfTradeCalculationFunction;
import com.opengamma.strata.measure.fra.FraTradeCalculationFunction;
import com.opengamma.strata.measure.fx.FxNdfTradeCalculationFunction;
import com.opengamma.strata.measure.fx.FxRateMarketDataFunction;
import com.opengamma.strata.measure.fx.FxSingleTradeCalculationFunction;
import com.opengamma.strata.measure.fx.FxSwapTradeCalculationFunction;
import com.opengamma.strata.measure.fxopt.FxOptionVolatilitiesMarketDataFunction;
import com.opengamma.strata.measure.fxopt.FxSingleBarrierOptionTradeCalculationFunction;
import com.opengamma.strata.measure.fxopt.FxVanillaOptionTradeCalculationFunction;
import com.opengamma.strata.measure.index.IborFutureOptionTradeCalculationFunction;
import com.opengamma.strata.measure.index.IborFutureTradeCalculationFunction;
import com.opengamma.strata.measure.index.OvernightFutureTradeCalculationFunction;
import com.opengamma.strata.measure.payment.BulletPaymentTradeCalculationFunction;
import com.opengamma.strata.measure.rate.RatesCurveGroupMarketDataFunction;
import com.opengamma.strata.measure.rate.RatesCurveInputsMarketDataFunction;
import com.opengamma.strata.measure.security.GenericSecurityPositionCalculationFunction;
import com.opengamma.strata.measure.security.GenericSecurityTradeCalculationFunction;
import com.opengamma.strata.measure.security.SecurityPositionCalculationFunction;
import com.opengamma.strata.measure.security.SecurityTradeCalculationFunction;
import com.opengamma.strata.measure.swap.SwapTradeCalculationFunction;
import com.opengamma.strata.measure.swaption.SwaptionTradeCalculationFunction;
import com.opengamma.strata.product.GenericSecurityPosition;
import com.opengamma.strata.product.GenericSecurityTrade;
import com.opengamma.strata.product.SecurityPosition;
import com.opengamma.strata.product.SecurityTrade;
import com.opengamma.strata.product.bond.BondFutureOptionPosition;
import com.opengamma.strata.product.bond.BondFutureOptionTrade;
import com.opengamma.strata.product.bond.BondFuturePosition;
import com.opengamma.strata.product.bond.BondFutureTrade;
import com.opengamma.strata.product.bond.CapitalIndexedBondPosition;
import com.opengamma.strata.product.bond.CapitalIndexedBondTrade;
import com.opengamma.strata.product.bond.FixedCouponBondPosition;
import com.opengamma.strata.product.bond.FixedCouponBondTrade;
import com.opengamma.strata.product.capfloor.IborCapFloorTrade;
import com.opengamma.strata.product.credit.CdsIndexTrade;
import com.opengamma.strata.product.credit.CdsTrade;
import com.opengamma.strata.product.deposit.TermDepositTrade;
import com.opengamma.strata.product.dsf.DsfPosition;
import com.opengamma.strata.product.dsf.DsfTrade;
import com.opengamma.strata.product.fra.FraTrade;
import com.opengamma.strata.product.fx.FxNdfTrade;
import com.opengamma.strata.product.fx.FxSingleTrade;
import com.opengamma.strata.product.fx.FxSwapTrade;
import com.opengamma.strata.product.fxopt.FxSingleBarrierOptionTrade;
import com.opengamma.strata.product.fxopt.FxVanillaOptionTrade;
import com.opengamma.strata.product.index.IborFutureOptionPosition;
import com.opengamma.strata.product.index.IborFutureOptionTrade;
import com.opengamma.strata.product.index.IborFuturePosition;
import com.opengamma.strata.product.index.IborFutureTrade;
import com.opengamma.strata.product.index.OvernightFuturePosition;
import com.opengamma.strata.product.index.OvernightFutureTrade;
import com.opengamma.strata.product.payment.BulletPaymentTrade;
import com.opengamma.strata.product.swap.SwapTrade;
import com.opengamma.strata.product.swaption.SwaptionTrade;

/**
 * Factory methods for creating standard Strata components.
 * 

* These components are suitable for performing calculations using the built-in asset classes, * market data types and pricers. *

* The market data factory can create market data values derived from other values. * For example it can create calibrated curves given market quotes. * However it cannot request market data from an external provider, such as Bloomberg, * or look up data from a data store, for example a time series database. * Instances of {@link CalculationRunner} are created directly using the static methods on the interface. */ public final class StandardComponents { /** * The standard calculation functions. */ private static final CalculationFunctions STANDARD = CalculationFunctions.of( new BulletPaymentTradeCalculationFunction(), new CdsTradeCalculationFunction(), new CdsIndexTradeCalculationFunction(), new FraTradeCalculationFunction(), new FxNdfTradeCalculationFunction(), new FxSingleBarrierOptionTradeCalculationFunction(), new FxSingleTradeCalculationFunction(), new FxSwapTradeCalculationFunction(), new FxVanillaOptionTradeCalculationFunction(), new IborCapFloorTradeCalculationFunction(), new SecurityPositionCalculationFunction(), new SecurityTradeCalculationFunction(), new SwapTradeCalculationFunction(), new SwaptionTradeCalculationFunction(), new CmsTradeCalculationFunction(), new TermDepositTradeCalculationFunction(), new GenericSecurityPositionCalculationFunction(), new GenericSecurityTradeCalculationFunction(), BondFutureTradeCalculationFunction.TRADE, BondFutureTradeCalculationFunction.POSITION, BondFutureOptionTradeCalculationFunction.TRADE, BondFutureOptionTradeCalculationFunction.POSITION, CapitalIndexedBondTradeCalculationFunction.TRADE, CapitalIndexedBondTradeCalculationFunction.POSITION, DsfTradeCalculationFunction.TRADE, DsfTradeCalculationFunction.POSITION, FixedCouponBondTradeCalculationFunction.TRADE, FixedCouponBondTradeCalculationFunction.POSITION, BillTradeCalculationFunction.TRADE, BillTradeCalculationFunction.POSITION, IborFutureTradeCalculationFunction.TRADE, IborFutureTradeCalculationFunction.POSITION, OvernightFutureTradeCalculationFunction.TRADE, OvernightFutureTradeCalculationFunction.POSITION, IborFutureOptionTradeCalculationFunction.TRADE, IborFutureOptionTradeCalculationFunction.POSITION); /** * Restricted constructor. */ private StandardComponents() { } //------------------------------------------------------------------------- /** * Returns a market data factory containing the standard set of market data functions. *

* This factory can create market data values from other market data. For example it * can create calibrated curves given a set of market quotes for the points on the curve. *

* The set of functions are the ones provided by {@link #marketDataFunctions()}. * * @return a market data factory containing the standard set of market data functions */ public static MarketDataFactory marketDataFactory() { return marketDataFactory(ObservableDataProvider.none()); } /** * Returns a market data factory containing the standard set of market data functions. *

* This factory can create market data values from other market data. For example it * can create calibrated curves given a set of market quotes for the points on the curve. *

* The set of functions are the ones provided by {@link #marketDataFunctions()}. * * @param observableDataProvider the provider of observable data * @return a market data factory containing the standard set of market data functions */ public static MarketDataFactory marketDataFactory(ObservableDataProvider observableDataProvider) { return MarketDataFactory.of(observableDataProvider, TimeSeriesProvider.none(), marketDataFunctions()); } /** * Returns the standard market data functions used to build market data values from other market data. *

* These include functions to build: *

    *
  • Par rates from quotes *
  • Curve groups from par rates *
  • Curves from curve groups *
  • Discount factors and index rates from curves *
  • FX rates from quotes *
  • FX option volatilities from quotes *
* * @return the standard market data functions */ public static List> marketDataFunctions() { return ImmutableList.of( new CurveMarketDataFunction(), new RatesCurveGroupMarketDataFunction(), new RatesCurveInputsMarketDataFunction(), new FxRateMarketDataFunction(), new FxOptionVolatilitiesMarketDataFunction()); } /** * Returns the standard calculation functions. *

* These define how to calculate the standard measures for the standard asset classes. *

* The standard calculation functions require no further configuration and are designed to allow * easy access to all built-in asset class coverage. * The supported asset classes are: *

    *
  • Bond future - {@link BondFutureTrade} and {@link BondFuturePosition} *
  • Bond future option - {@link BondFutureOptionTrade} and {@link BondFutureOptionPosition} *
  • Bullet Payment - {@link BulletPaymentTrade} *
  • Cap/floor (Ibor) - {@link IborCapFloorTrade} *
  • Capital Indexed bond - {@link CapitalIndexedBondTrade} and {@link CapitalIndexedBondPosition} *
  • Credit Default Swap - {@link CdsTrade} *
  • CDS Index - {@link CdsIndexTrade} *
  • Deliverable Swap Future - {@link DsfTrade} and {@link DsfPosition} *
  • Forward Rate Agreement - {@link FraTrade} *
  • Fixed coupon bond - {@link FixedCouponBondTrade} and {@link FixedCouponBondPosition} *
  • FX spot and FX forward - {@link FxSingleTrade} *
  • FX NDF - {@link FxNdfTrade} *
  • FX swap - {@link FxSwapTrade} *
  • FX vanilla option - {@link FxVanillaOptionTrade} *
  • FX single barrier option - {@link FxSingleBarrierOptionTrade} *
  • Generic Security - {@link GenericSecurityTrade} and {@link GenericSecurityPosition} *
  • Rate Swap - {@link SwapTrade} *
  • Swaption - {@link SwaptionTrade} *
  • Security - {@link SecurityTrade} and {@link SecurityPosition} *
  • STIR Future (Ibor) - {@link IborFutureTrade} and {@link IborFuturePosition} *
  • STIR Future (Overnight Indices) - {@link OvernightFutureTrade} and {@link OvernightFuturePosition} *
  • STIR Future Option (Ibor) - {@link IborFutureOptionTrade} and {@link IborFutureOptionPosition} *
  • Term Deposit - {@link TermDepositTrade} *
* * @return calculation functions used to perform calculations */ public static CalculationFunctions calculationFunctions() { return STANDARD; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy