# Crude Oil Price Forecasting Model Based on Neural Networks and Error Correction
## 3 Experiments  
### Crude Oil Price Datasets  
The closing spot prices for different time scales in West Texas Intermediate (WTI) crude oil were selected to comprehensively analyze the forecasting performance of our proposed model. The data were chosen from the US energy information administration (ELA). The data could be accessed through their official website: [[http://www.eia.gov/](http://www.eia.gov/)]([http://www.eia.gov/](http://www.eia.gov/)) (accessed on26 December 2024). These spot prices are widely recognized as a benchmark for short-term oil market analysis and reflect the actual cash market value. The three datasets were the daily price data from 15 February 2013 to 5 November 2018, the weekly price data from 27 September 1992 to 20 June 2021, and the monthly price data from July 1998 to October 2021. Figure 2 shows the detailed volatility shape of three datasets. Table 2 presents statistical information on three crude oil price datasets. Data from different time scales (daily, weekly, and monthly) were selected to thoroughly evaluate the model's forecasting performance. For consistency in dataset length, 1500 crude oil price data were used for the first two datasets. However, the third dataset was monthly and had fewer available records, so 400 crude oil price data were chosen for clarity. Furthermore, dataset #1 and dataset #2 had a different volatility shape. All of these verified the forecasting performance and generalization ability of our proposed model for different types of price data. In the paper, the raw price data were divided into three parts: training sets, validation sets, and test sets. The proportion of these three parts was 3:1:1 [41; 42; 43]. The training sets were utilized to train base predictors. Validation sets were applied to train the ensemble optimization method and error correction method. The test sets were utilized to evaluate forecasting performance. The dataset was relatively small. If the validation or test set is proportionally too large, the training data become insufficient. This diminishes the model's learning capacity. Conversely, if the validation or test set is too small, the evaluation may be unreliable. Therefore, a 3:1:1 data split provides a suitable balance. In the paper, the forecasting process used a single-step-ahead prediction framework with a sliding window of size 5. For each new time step, the most recent five real observations were fed into the neural network to generate the next single-step forecast. Thus, the state of the model is updated using real data rather than predicted data, because each time the actual value becomes available, it replaces the oldest data in the sliding window. Furthermore, forecasting is performed one by one (i.e., step-by-step). After the network produces a single-step forecast at time \(t+1\) based on \(\{t-4,t-3,t-2,t-1,t\}\) real data, \begin{table}
\begin{tabular}{c c c c} \hline \hline
**Crude Oil Price Data** & **Dataset \#1 (USD)** & **Dataset \#2 (USD)** & **Dataset \#3 (USD)** \\ \hline Minimum & 26.21 & 10.79 & 11.22 \\ Mean & 66.05 & 50.21 & 46.86 \\ Maximum & 110.53 & 145.29 & 140 \\ Standard derivation & 22.83 & 28.92 & 28.87 \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Statistical indicators of crude oil price data. Figure 2: Raw crude oil price data and their split. the window then slides by one step, and the newly observed real data at \(t+1\) enters the window for forecasting \(t+2\). This approach ensures that each prediction relies on the most up-to-date and accurate input sequence, thereby reducing the compounding of errors that can occur when predicted values are fed back into the model. Training assumptions: It was assumed that the raw crude oil price data, although relatively small, provided sufficient coverage of various market conditions for training the proposed model. A 3:1:1 data split was chosen to balance learning capacity and evaluation reliability, ensuring that neither the training set nor the validation/test sets was too small.