So I am trying to see how future contracts prices with different time to maturity are able to predict the actual spot price of crude oil at the time of maturity for the contracts. I have the simple equation of:

$\hat S_{t+h} = F_{t,h}$

Hence, the predicted future spot price at e.g. h=2 (months), is equal to the observed futures contract's price at time t with maturity in h months.

The concept is quite straight forward and would allow for predictions h months in the future by looking at the corresponding futures contract of this maturity. I have obtained futures contracts prices (continuos futures to be exact) for varying maturities from: Quandl

So, my question is, is this the appropriate way to do such an evaluation based on this simple equation. In practice, what I would do from here, is to look at the futures contracts prices with maturities of say: (1-12months i.e. CL1-CL12) at a specific year and month, then set these as my predicted future spot prices in the next 12 months from the year and month they were observed. Finally evaluate these vs the actual spot prices observed for the next 12 months.

Thanks for any clarifications, as this has confused me a lot..

  • $\begingroup$ First - never predict prices; predict returns. Second - for storable commodities, futures prices are not predictions about future spot prices. They simply reflect the current spot price and the cost of carry (i.e. the cost of buying physical oil, storing it and financing the purchase, minus any convenience yield that you get from ownership of the oil). $\endgroup$ Mar 26, 2020 at 17:10
  • $\begingroup$ Although many people fail to grasp this concept, applying a first difference to the logarithm of prices, just as constructing arithmetic returns IS NOT a model-free innocuous choice you make to deal with presumably covariance stationnary process. IT IS a modeling choice and IT HAS consequences. You have about 30 years of disputes in econometrics on how to best deal with potential stochastic trends and long range dependance, not to mention ample theoretical background and empirical results showing that, very often, it's best to not difference the data. $\endgroup$
    – Stéphane
    Mar 26, 2020 at 17:26
  • $\begingroup$ (Cont'd) There is a lot of confusion about this point, but you should really only be worried if your distrubance term cannot be turned into a martingale difference. OLS on I(1) data in a linear model? Fine. It's even fine for making inference on highly nonlinear constrained functions of the parameters such as when you work with impulse response functions in VAR. The only real hickup is the LONG RUN because of the small sample downward bias of OLS in autoregressive models. Yet, it's the only alternative that is robust -- exact integration and cointegration are model restrictions. $\endgroup$
    – Stéphane
    Mar 26, 2020 at 17:36
  • $\begingroup$ Not sure what's the question? Can you use the price of a futures contract expiring in a month as a proxy for the spot price in a month? - sure, you can. $\endgroup$
    – LazyCat
    Dec 22, 2020 at 15:28

2 Answers 2


As already mentioned, in storable commodities "futures prices are not predictions about future spot prices. They simply reflect the current spot price and the cost of carry". However, one thing you can do is use Futures prices to calibrate a pricing model. Schwartz (1997) is a good example of this:


Here you can also see explicitly the code to calibrate and run your own model:



Let's start from theory. A futures is a standardized forward. In principle, its price should be \begin{align} F_{0,T} &:= \exp(r_{n0} T) E_0^Q(S_T) = \exp(r_{n0} T) S_0 \\ r_{n0} &:= \text{risk-free rate} + \text{storage cost} - \text{dividend yield} - \text{convenience yield} \end{align} where $Q$ is the risk-neutral measure and $(S_t)_{t \geq 0}$ is the price process of your asset. That equation follows from the absence of arbitrage.

One thing you could assume is that the equation does not hold exactly and the gap in $h \geq 1$ is predictable and depends on prior gaps. For example, you could write an error correction model for the rate of return on stocks: after all, if you take logarithms above and add a distrubtance term, the log forward price and log stock prices should be cointegrated, in fact with a cointegration vector of (1,-1). \begin{align} lnS_{t+1} - lnS_t = \phi_0 + \beta(lnF_{t,1} - lnS_t) + \sum_{i=1}^{p_s} \phi_{si} (lnS_{t-i} - lnS_{t-1-i}) + \sum_{i=1}^{p_f} \phi_{fi} (ln F_{t-i,1} - ln F_{t-1-i,1}) + \epsilon_{t+1}. \end{align} This can be estimated by ordinary least square and you can easily choosen the hyperparameters $(p_s,p_f)$ by using an information criteria like the BIC or by cross-validation. Even if you deal with time series, K-fold would be asymptotically valid (Bergmeir, Hyndman and Koo, 2015) and, in practice, it accounting for the time dependency in the the CV doesn't really matter either (Goulet-Coulombe, Leroux, Stevanovic and Surprenant, 2020), although I don't see the point of using that kind of slow method when you work with a linear parametric model -- the BIC should work just fine.

The above model essentially says that the arbitrage restriction holds, but only in the long run. It's not super-sophisticated and, yes, you could use the same regressors in non-linear models such as support vector regressions, kernel ridge regressions or neural networks to try to improve performance. Personally, I'd go for KRR, perhaps with a 2nd or 3rd degree polynomial kernel: it's going to prevent you from choosing the relevant regressors, it's going to allow plenty of nonlinearity and it's simple enough to code.

Note that the model I proposed imposes a restriction. It is assuming that whatever is making the prices of both futures and stock prices grow over the long run is the same (stochastic) trend. It might not hold true. One thing you could do is to compare (i) working directly with prices, (ii) exploiting the possible cointegration between futures and prices for the underlying and (iii) predict logarithmic growth rates and use them to recover prices using the current levels of prices.

This way, you get to penalize everything in the same manner and you get to see whether it's worth imposing some of those restrictions or not. Moreover, the loss you compute is an estimate of conditional expectations in all cases and that should be fine -- as long as the forecast horizon doesn't become absurdly long versus the sample frequency, the error on that expectation should be covariance stationnary (although, serially correlated if you do multiple step forecasting because you'll have overlapping errors).

  • 1
    $\begingroup$ I understand the concept of how futures involves cost of carry and convenience yield,etc., but these phenomena would be difficult to estimate values for in order to calculate a futures contract price $\Delta T$ periods ahead. Also, I am not looking into ECM quite yet, this is just a simple baseline model. To better explain what I want to do, I refer to this article by Alquist and Killian (federalreserve.gov/pubs/ifdp/2011/1022/ifdp1022.pdf) in section 5.1 p.20 they apply this model. $\endgroup$ Mar 26, 2020 at 17:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.