Main Page > Articles > On Balance Volume > Feature Engineering for Time Series Forecasting in Finance

Feature Engineering for Time Series Forecasting in Finance

From TradingHabits, the trading encyclopedia · 5 min read · February 28, 2026
The Black Book of Day Trading Strategies
Free Book

The Black Book of Day Trading Strategies

1,000 complete strategies · 31 chapters · Full trade plans

In the realm of machine learning, the quality of the features used to train a model is often more important than the choice of the model itself. This is particularly true in the context of financial time series forecasting, where the raw data is often noisy and non-stationary. Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data. This article provides a practical guide to feature engineering for financial time series forecasting, covering a range of techniques from creating lag features to engineering rolling window statistics.

The Importance of Feature Engineering

Financial time series data, such as stock prices, are notoriously difficult to predict. This is because they are influenced by a complex interplay of factors, including market sentiment, macroeconomic news, and company-specific events. By engineering new features from the raw data, we can provide our models with more information about the underlying dynamics of the time series, which can lead to more accurate forecasts.

Lag Features

One of the simplest and most effective feature engineering techniques is to create lag features. A lag feature is a feature that is created by shifting the time series by a certain number of periods. For example, a lag 1 feature is the value of the time series at the previous period. The formula for a lag k feature is:

Lagk(yt)=ytkLag_k(y_t) = y_{t-k}

Lag features can be created in Pandas using the .shift() method.

python
import pandas as pd

# Assume df is a DataFrame with daily closing prices
# and a DatetimeIndex

# Create lag features
df['Lag_1'] = df['Close'].shift(1)
df['Lag_5'] = df['Close'].shift(5)

Rolling Window Features

Rolling window features are features that are calculated over a rolling window of a certain size. For example, a 20-day rolling mean is the mean of the time series over the previous 20 days. Rolling window features can be used to capture the trend and volatility of the time series.

python
# Create rolling window features
df['Rolling_Mean_20D'] = df['Close'].rolling(window=20).mean()
df['Rolling_Std_20D'] = df['Close'].rolling(window=20).std()

Date-Based Features

For time series with a DatetimeIndex, we can create features based on the date and time. For example, we can create features for the day of the week, the month of the year, and the quarter of the year. These features can be used to capture seasonality in the data.

DateCloseDay_of_WeekMonth
2023-01-02102.1001
2023-01-03102.8011
2023-01-04103.2021
python
# Create date-based features
df['Day_of_Week'] = df.index.dayofweek
df['Month'] = df.index.month
df['Quarter'] = df.index.quarter

Feature Selection

After creating a large number of features, it is important to select the most relevant features for our model. This can be done using a variety of feature selection techniques, such as correlation analysis, mutual information, and recursive feature elimination.

In conclusion, feature engineering is a important step in the process of building a financial time series forecasting model. By creating new features from the raw data, we can provide our models with more information about the underlying dynamics of the time series, which can lead to more accurate forecasts. The techniques discussed in this article, from creating lag features to engineering rolling window statistics, provide a solid foundation for anyone seeking to build robust and reliable time series forecasting models.