Feature pipelines are meant for transforming observations from the environment into meaningful features for an agent to learn from. If a pipeline has been added to a particular exchange, then observations will be passed through the
FeaturePipeline before being output to the environment.
For example, a feature pipeline could normalize all price values, make a time series stationary, add a moving average column, and remove an unnecessary column, all before the observation is returned to the agent.
Feature pipelines can be initialized with an arbitrary number of comma-separated transformers. Each
FeatureTransformer needs to be initialized with the set of columns to transform, or if nothing is passed, all input columns will be transformed.
Each feature transformer has a transform method, which will transform a single observation (a
pandas.DataFrame) from a larger data set, keeping any necessary state in memory to transform the next frame. For this reason, it is often necessary to reset the FeatureTransformer periodically. This is done automatically each time the parent
Exchange is reset.
from tensortrade.features import FeaturePipeline from tensortrade.features.scalers import MinMaxNormalizer from tensortrade.features.stationarity import FractionalDifference from tensortrade.features.indicators import SimpleMovingAverage price_columns = ["open", "high", "low", "close"] normalize_price = MinMaxNormalizer(price_columns) moving_averages = SimpleMovingAverage(price_columns) difference_all = FractionalDifference(difference_order=0.6) feature_pipeline = FeaturePipeline(steps=[normalize_price, moving_averages, difference_all]) exchange.feature_pipeline = feature_pipeline
This feature pipeline normalizes the price values between 0 and 1, before adding some moving average columns and making the entire time series stationary by fractionally differencing consecutive values.