Chapter 5 Calibrating the Schwartz-Smith model
5.1 A Spreadsheet Procedure for Calibrating the Model
Historical futures price data provides a matrix/table where each row represents a date for which we have obtained futures prices, and for each date the prices of the futures contract for each maturity month is given in the columns. For each new day a row of futures prices is added, and the prices in the columns make up the forward curve. As a result we have a new forward curve each day. For each day, we model the forward curve using our parameters (which are static) and the state variables (which change day by day). So our goal is to find the parameters that describe the fundamental conditions of the oil futures market and for each day select the state variables (long-term and short-term components) that are implied by that day’s observed forward curve.
Figure 1 Illustration of the dataset. Prices are given in the cells of the table. The model interprets the forward curves as the risk-neutral expected prices based on the prevailing state variables and the model parameters.
Estimating the parameters and state variables can be done using a tool called the Kalman filter. This is a quite advanced method for data analysis. In this thesis, however, we have used an iterative routine that can be easily implemented in MS Excel, using Solver and macros written in Visual Basic for Applications (VBA). Had we applied the Kalman filter, then standard deviations of the parameter estimates would be obtained. Using the iterative routine we don’t get any measure of the estimates’ precision.
The procedure can be summarized like this:
1. We make a guess about the parameters based on what we believe or parameter estimates from similar markets. Starting parameters close to the true parameters will give faster convergence of the procedure. We leave the state variables for each day equal to zero.
2. For each day of data, based on the parameters we currently have, we fit that day’s modeled forward curve to the observed futures prices that day. We do this by selecting the combination of the two state variables that minimizes the squared distance (SSE – sum of squared errors) between the forward curve and the observed prices. For “picking” state variables we use Solver. 3. We have now obtained two vectors, one containing the short-term components for each day,
the other containing the long-term components. These two vectors are used to obtain estimates of σχ,σξ, ρχξ and μξ. The vectors can be interpreted as the realized development of the state
4. Now we have estimates of the state variables for each day, and also three out of six parameters of the expression for the futures price19. The last three parameters are solved for by minimizing the squared distances between all estimated forward curves and observed prices. Solver “picks” the κ (the rate of mean reversion), μξ* (the equilibrium price’s risk-neutral drift term) and λχ (the
short-term risk premium) that best fits the whole dataset.
5. We have now estimated both state variables, and all parameters. But most likely, for the new configuration of parameters, some new state variables will give an even better fit of the forward curves to the observed data. So we have to repeat the procedure from step 2 to 4 over and over again until the iterative procedure reaches convergence. We define convergence as the situation where the differences in total SSE between two iterations is so small that
Eq. 34
where δ is the convergence criterion. We set this equal to 0.0001.
At convergence we have the parameters that best describe the development of futures prices, and the state variables implied by the observed futures prices and the estimated parameters.
Below is an overview of the equations used for estimating the parameters of step 3. The equations are really just the equations for state variable development (Eq. 12 and Eq. 13) solved for the respective parameters.32 Eq. 35 Eq. 36
Where is a vector/column of the scaled increments of ; and are the estimated state
variables at time t = i and t = i – Δt, respectively. Δt is the time interval between two estimates of . is the estimated rate of mean reversion.
Eq. 37
Eq. 38
Where is a vector/column of the scaled increments of ; and are the estimated state variables at time t = i and t = i – Δt, respectively. Δt is the time interval between two estimates of . is the estimated drift parameter related to .
19 Note that the parameter μξ isn’t used in calculating the futures price. However, it needs to be calculated in order to estimate the long-term risk premium. Problems in estimating this parameter precisely are discussed later.
Eq. 39
Eq. 40
μ is the averaged equilibrium price level change per time change. This equation assumes that there is some underlying, linear drift in the development of equilibrium prices, and estimates it based on the vector of estimated state variables. In taking the averaged change per time interval, we hope to isolate the effect of the drift parameter from the influences of the random draws.
There are some issues regarding the calibration process that need being addressed. First, the iterative routine may fail in giving realistic values for the parameters if the upper and lower boundaries for Solver aren’t set properly. The limits must not be too strict, meaning they must give the parameters freedom to take on any reasonable value, but we need some sensible limits to prevent the parameters from taking on totally unreasonable values and causing the calibration procedure to come off the track. Fortunately, as long as the parameters are restricted somewhere around the true values, they will converge to the true values.20