Imagine’s Response to Negative Oil Prices

It was a historic moment to be remembered when crude oil prices plunged into negative price territory on Monday, April 20, 2020. Imagine’s Data, Technical, Development and Professional Services teams stood ready to assist users in ensuring they could continue to correctly calculate risk metrics across commodity trading books.

While negative prices are not a new thing in financial markets, it was the first time for crude oil exhibited such behavior. Standard pricing models (Black Scholes) for commodity futures options are not designed to handle negative underlying prices. As such, Imagine applied an ‘early roll’ of the front month contract of May crude to the June expiry as the negative settle price was confirmed.

The market responded by announcing a switch to the Bachelier model in these circumstances, which is based on the assumption that the underlying price follows a normal price distribution. Imagine already employs this model for pricing commodity spread options, and will be extending the model to support standard commodity futures options in an upcoming release. In addition, Imagine will provide a separate process that assumes normal price returns instead of lognormal returns for selected commodities to cope with the negative prices for risk engine calculations (term volatility and VaR calculations). Clients will have the flexibility to choose the type of process type used for selected commodities. based on their risk calculation preferences.

In parallel, Imagine is implementing a Gaussian Copula model that inherently switches from a lognormal to a normal price process; a perfect solution should negative oil prices recur.

The occurrence of negative commodity prices for the oil contracts – at this point only occurring in the front month – violates the usual mathematical underpinnings of the standard mathematical models and requires a rapid adaptation to this unprecedented situation.  Fortunately, Imagine has had ample experience over the last several years handling negative interest rates within a risk management context. There are methodologies that can swiftly be applied to ensure that Imagine not only calculates the exposures correctly, but that in the future when looking back on this time (by which we mean the time series of prices), we will be able to incorporate effectively the negative prices into calculations such as HVaR (Historical VaR) and term volatilities.

Three-Stage Response

There are three stages to our response – the immediate, the short term, and the permanent, covering the following issues:

  • How will we handle negative historical prices in HVaR and how will those prices affect calculations of realized volatilities and correlations?
  • What adjustments are we making to the roll curve when the price of the front month contract is negative?
  • What will we do if the first two months’ prices are negative, or if the price switches back to being positive again?
  • How will we handle low/negative prices for commodity futures options?
  • Will we be able to accommodate negative strikes?

Negative Historical Prices

As mentioned above, we already have ample experience with negative interest rates, and will apply the same methodology here ─ we store negative interest rates in our time series and will do the same for negative commodity prices.  However, calculating volatilities, correlations, and HVaR relies on historical returns, not prices; therefore we modified our returns calculation by introducing a “Gaussian copula” that seamlessly switches from lognormal to normal as rates drop below the threshold of 1.0 (contact us for an appendix that illustrates this methodology with some slides from previous discussions of this topic).  The only modification needed here is to specify the threshold, which we receive from the exchanges.  For example, the CME has decided that for oil prices below $8.0 per barrel, they will be switching to a normal (as opposed to lognormal) option pricing model.  Actually, they have stated that for prices between $8.00 and $11.00 they may be switching. We take that to mean a definitive switch if below $8.00.  We will discuss option pricing models later in this article.

This modification is a permanent solution, and will be implemented by the end of May.

Adjustments to the Roll Curve and the Specification of the “Spot” Month

There are two modes for specifying the forward structure of the roll curve: roll yield and roll spread.  The first relies upon lognormality, and as such cannot be used when there are negative spreads.  Fortunately, the spread formulation works perfectly well with negative prices and so we can set the affected roll curves to use the spread methodology.  We will make an additional roll curve with this setting available – with the extension “RCPS” – which can then be chosen selectively by each user.

As an immediate solution, we will continue to designate the spot month as the nearest non-negative contract.  This is an immediate solution, but the permanent solution is to implement the full model alluded to below, in which case the price of the front month could be negative and yet also serve as the spot.  It is unclear at this moment if that is desirable, but at least there will be an option to do so.

Commodity Futures Options for Low/Negative Prices

Our immediate and short-term response is to provide the normal model (Bachelier), which is valid for negative prices as well as negative strikes.  We already use this model for options on spread futures, and so it is a straightforward modification for us to make.  The Bachelier model will be made available over the next few weeks.

To support this model we will also be constructing new implied volatility surfaces to which the commodity futures options can be pointed.  It is a strength of our system that the user can choose the commodity futures options for which they want to use the Bachelier model, and those for which they prefer to use the standard lognormal model; the user is not restricted to making a single choice for the entire option series.

The permanent solution will be to introduce a commodity futures option model that transitions from normal to lognormal on its own, such as the Gaussian copula.  This development is currently underway, with plans for a roll out within the next thirty to forty-five days.  We will provide a white paper to support this model when it is released.

About the Author
Bill Daher has been with Imagine for ten years and is currently a team leader in Consulting for Imagine’s APAC region. Bill has been heavily involved in the architecture of quantitative solutions in Imagine. He holds a Masters of Actuarial Studies from Macquarie University in Sydney, Australia.

Contact Bill by email or phone: +1 646 827 4427

Pricing Rainbow Options

Responding to growing client interest, this post highlights the use of Imagine’s Monte Carlo Generator to price multi-asset best-of/worst-of options (aka Rainbow Options).

The pricing solution presented here leverages the flexibility of the Imagine Financial Platform (IFP). More specifically, the IFP Model Interface and the IFP Monte Carlo Simulation Generator, as described below.

  • The IFP Model Interface enables users to register their own pricing models using an app written with our JavaScript API. The interface provides access to security-level information and pricing environment inputs and when directed, passes outputs back to Fair and Greeks columns in the Imagine Trading System (ITS). Users have full control over the model calculations performed within the app. Note that any custom model registered via this interface behaves like one of Imagine’s native models.
  • The IFP Monte Carlo Simulation Generator is a JavaScript API method that gives users access to a simulation generator they can use for Monte Carlo pricing. Users have the ability to define random factors, set the pricing inputs for each factor, set the number of simulations and periods, determine the volatility lookup type, and much more. Imagine users can refer to our JavaScript API Programmers Reference for more about this method.

Users can incorporate a vast range of payoff structures into the pricing function defined by the model interface. For rainbow options, the following payoffs are considered:


For each simulation, we calculate the present value of the instrument based on the payoff function. Th e Generator then averages these values to obtain the current Fair price of the instrument.

A correlation function explicitly defined in the IFP Monte Carlo Generator takes into account any correlations between underlying assets.

Sample RBWO Security Window and Output
Take a Look: Sample rainbowPricer app

Setting up the IFP Model Interface

Create a Custom Reference Table

Setting up the IFP Model Interface starts with creating a Custom Reference Table, where you’ll store the name of the model, function, and script to be utilized by the holding or security. You can name the CRT whatever you want.

The CRT should have the following columns:




Enter the security type code to which the model(s) is relevant (e.g. RBWO for Rainbow Options).


Specify the name of the model; must be unique within the CRT.


Specify a model id number; must be unique within the CRT.


Specify the name of the library app where the model is located. The app can be saved into My Libraries, Shared Libraries, or Imagine Libraries; note that the system first checks My Libraries, then Shared Apps, then Imagine Libraries.

Only specify the library app name; omit the “.js” extension.


Specify the name of the function in the app.

If you want to provide more than one model for the security type, simply add four additional columns of the same names listed above appended with “2” instead of “1” (e.g., ModelName2, ModelId2, Script2, Function2). You may do this for an unlimited number of models.

Choose the Default IFP Models CRT

Next, specify the Custom Reference Table where your models are defined in your system preferences:

  1. Select the menu sequence Tools => Preferences => Portfolio => Recalculation.
  2. In the IFP Model Reference Table field, enter the name of your recently created CRT.
    TIP: Look up available CRTs via the magnifying glass icon on the right-hand side of the field.
  3. Right-click and select OK from the menu.
  4. Click the OK button.

Note: For the system to recognize your updated preferences, you must restart the Imagine Trading System.

Designate Models in Your Holdings

Next, link your model to a holding via its environment. To specify a user-created model for an option or placeholder holding:

  1. Double-click the holding row in the portfolio.
  2. Click the holding’s Environment button.
  3. In the Listed Option tab, change the American Model and European Model to Type.
  4. In the adjacent field, select the name of the model you created and saved.
  5. Right-click and select Save to exit the Environment window.
  6. Right-click and select Save to exit the holding window.
  7. From your portfolio, select the menu sequence Portfolio => Recalc => Fair and Implieds.

The fair and Greeks specified in your model script are recalculated according to the model calculation.

Once the model is referenced by a holding, any calculations on that holding will take this model into account, including Value at Risk, Projections, and custom column calculations.

About the Author
Bill Daher has been with Imagine for nine years and is currently a team leader in Consulting for Imagine’s APAC region. Bill has been heavily involved in the architecture of quantitative solutions in Imagine. He holds a Masters of Actuarial Studies from Macquarie University in Sydney, Australia.

Contact Bill by email or phone: +1 646 827 4427

Imagine’s Pre- and Post-trade Compliance Solution

Imagine empowers users to make informed, risk-compliant decisions in the ever-changing regulatory environment with its robust Pre- and Post-trade Compliance Solution.

With Imagine’s development of a dedicated limit monitoring dashboard, users can monitor limit utilization levels of pre-defined rules across multiple portfolios from a single dashboard view. This provides useful insight into the positions which are breaching, or almost breaching, limit rules defined by the user.
The dashboard also allows clients to upload test trades to an existing set of positions to see if this would create any limit breaches.

Drawing on Imagine’s expertise we have developed a Pre-Trade Compliance module fully integrated with an Execution Management System (EMS) used by many of our users.

The pre-trade compliance workflow is:

  • Imagine’s Consulting Team helps clients create and implement rules to be used in compliance checks
  • EMS sends Imagine a pre-trade order message to Imagine’s powerful REST platform
  • An Imagine App performs the necessary compliance calculations and checks limit breaches against the client-specified rules
  • Imagine returns a REST message to the EMS which displays the outcome for the pre-trade orders. If a trade will cause a breach, the returned status is Rejected, otherwise, its status is OK
  • Trades designated as OK go out to market for execution; rejected trades go into a pending authorization queue along with the reason for rejection

The Pre- and Post-trade Compliance Solution is enabling clients to generate orders in an EMS, while still managing their compliance calculations, using Imagine’s rich universe of data and analytics. The end result being: more informed and compliant investment decision-making by Imagine users when meeting both investor and internal requirements.

Contact us to find out more about our cutting edge Pre- and Post-trade Compliance Solution.

About the Author
Bill Daher has been with Imagine for six years and is currently a team leader in Consulting for Imagine’s APAC region. Bill has been heavily involved in the architecture of quantitative solutions in Imagine. He holds a Masters of Actuarial Studies from Macquarie University in Sydney, Australia.

Bill can be contacted by email or phone: + 61 2 9350 8832