Curve Construction Questions


Following on from reading the OpenGamma documents written by Richard White on the Analytical Framework and Multiple Curve Construction I have a few questions that hopefully someone can help with

  1. Is it possible to have more than one discount curve per currency and how do you specify which one a product would use (for the case where the CSA agreements are different)?

  2. It is said that the index curves can be made as spreads to the discount curves however I haven’t seen anything in the example where this appears to be done. How would you specify this in the config files? Also more generally can any curve be a spread to another (e.g. a discount curve as a spread to a index curve or an index curve as a spread to another index curve)

  3. Is it possible to define a curve as a linear combination of other curves? For example if I have a curve for an index and a curve for the expected fx rate I would like to use the sum or difference of the yields to determine a curve for another currency.

  4. The derivatives in the code such as for a future seem much simpler than the examples in the analytic framework document. I have found a reference to but not a copy of a paper called “Multi-curves implementation: Providers, calculators and sensitivities”, Technical Documentation 5. Is this publically available to help me understand the implementation?

  5. Is it possible to use Levenberg–Marquardt to solve the fitting problem?

  6. Are there any example which include effects that are overlaid onto a curve, e.g. a month end turn?

  7. For STIR futures when the convexity is given as an external parameter how can this be used in the curve construction?

  8. How would you change what is interpolated for the curves, I would like to try a series of possibilities, including discount factors, log discount factors, forwards, log forwards, yields, log yields?

Thanks in advance for any help,


As background, I am trying to compare the construction against another library


Thanks for the questions.

  • (1) It is possible to have more than one discount curve per currency for rates products. The RatesMarketDataLookup interface is passed when performing a calculation. The default approach us to pass a single instance with one discount curve per currency. However, an alternative is to use TradeCounterpartyCalculationParameter (or a similar class that you write yourself). The idea of TradeCounterpartyCalculationParameter is that is holds a number of RatesMarketDataLookup instances, and selects which one to use based on a detail of the trade.

  • (2) The AddFixedCurve class allows a fixed and spread curve to be combined. I don’t think the standard config files support this however - you’d have to write code.

  • (3) I think you’d need to implement the Curve interface yourself for that.

  • (8) Each curve specifies the type of data it contains using the ValueType class. The type of interpolation performed can also be controlled, using implementations from CurveInterpolators. I’m guessing these will meet most of your needs here.

I’ll have to ask a quant to comment on the other points.

Hope that helps