NFCP (version 0.1.0)

Spot.Price.Forecast: Spot.Price.Forecast

Description

Analytically forecast expected spot prices following the "true" process of a given n-factor stochastic model

Usage

Spot.Price.Forecast(X.0, parameters, t, Percentiles = NULL)

Arguments

X.0

Initial values of the state vector.

parameters

A named vector of parameter values of a specified N-factor model. Function NFCP.Parameters is recommended.

t

a vector of discrete time points to forecast

Percentiles

Optional. A vector of percentiles to include probabilistic forecasting intervals.

Value

Spot.Price.Forecast returns a vector of expected future spot prices under a given N-factor model at specified discrete future time points. When percentiles are specified, the function returns a matrix with the corresponding confidence bands in each column of the matrix.

Details

Future expected spot prices under the N-factor model can be forecasted through the analytic expression of expected future prices under the "true" N-factor process.

Given that the log of the spot price is equal to the sum of the state variables (equation 1), the spot price is log-normally distributed with the expected prices given by:

E[S_t] = exp(E[ln(S_t)] + 12Var[ln(S_t)])exp(E[ln(S[t])] + 1/2 Var[ln(S[t])]) Where: E[ln(S_t)] = _i=1^Ne^-(_it)x_i(0) + tE[ln(S[t])] = sum_i=1^N (e^(-(kappa[i] t)) x[i,0] + mu * t)

Where _i = 0kappa[i] = 0 when GBM=T and = 0mu = 0 when GBM = F

Var[ln(S_t)] = _1^2t + _i.j1_i_j_i,j1-e^-(_i+_j)t_i+_j Var[ln(S[t])] = sigma[1]^2 * t + sum_i.j != 1 (sigma[i] sigma[j] rho[i,j] (1 - e^(-(kappa[i] + kappa[j])t)) / (kappa[i] + kappa[j]) )

and thus:

E[S_t] = exp(_i=1^N e^-_itx_i(0) + ( + 12_1^2)t + 12_i.j1 _i_j_i,j1-e^-(_i+_j)t_i+_j) E[S[t]] = exp( sum_i=1^N e^(-kappa[i] t) x[i,0] + (mu + 1/2 sigma[1]^2)t + 1/2 (sum_i.j != 1( sigma[i] sigma[j] rho[i,j] (1 - e^(-(kappa[i] + kappa[j])t)) / (kappa[i] + kappa[j]))) )

Under the assumption that the first factor follows a Brownian Motion, in the long-run expected spot prices grow over time at a constant rate of + 12_1^2mu + 1/2 sigma[1] as the e^-_ite^(-kappa[i] * t) and e^-(_i + _j)te^(-(kappa[i] + kappa[j])) terms approach zero.

An important consideration when forecasting spot prices using parameters estimated through maximum likelihood estimation is that the parameter estimation process takes the assumption of risk-neutrality and thus the true process growth rate mu is not estimated with a high level of precision. This can be shown from the higher standard error for mu than other estimated parameters, such as the risk-neutral growth rate ^*mu^*. See Schwartz and Smith (2000) for more details.

References

Schwartz, E. S., and J. E. Smith, (2000). Short-Term Variations and Long-Term Dynamics in Commodity Prices. Manage. Sci., 46, 893-911.

Cortazar, G., and L. Naranjo, (2006). An N-factor Gaussian model of oil futures prices. Journal of Futures Markets: Futures, Options, and Other Derivative Products, 26(3), 243-268.

Examples

Run this code
# NOT RUN {
# Forecast the Schwartz and Smith (2000) two-factor oil model:

##Step 1 - Run the Kalman filter for the two-factor oil model:
Schwartz.Smith.Oil <- NFCP.Kalman.filter(SS.Oil$Two.Factor,
                                      names(SS.Oil$Two.Factor),
                                      log(SS.Oil$Stitched.Futures),
                                      SS.Oil$dt,
                                      SS.Oil$Stitched.TTM,
                                      verbose = TRUE)

##Step 2 - Probabilistic forecast of n-factor stochastic differential equation (SDE):
E.Spot <- Spot.Price.Forecast(X.0 = Schwartz.Smith.Oil$X.t,
                                 parameters = SS.Oil$Two.Factor,
                                 t = seq(0,9,1/12),
                                 Percentiles = c(0.1, 0.9))
# }

Run the code above in your browser using DataCamp Workspace