I am implementing a Random Forest classifier algorithm on Python for predicting future stock returns (one month). My goal is to foresee whether the cumulative returns in a month will be negative or positive and the magnitude of the movement. The label of the classification is:
- -2 if the cumulative returns are negative and lower than a given threshold
- -1 if the cumulative returns are negative but over the threshold
- 1 if positive but lower than the threshold
- 2 if positive and over the threshold
In doing so, I am using a list of features (predictors) taken from the literature:
- Past $n$ returns
- Some T-Bill rates
- Financial and economical indicators such as Oil price, Gold price, treasury securities yield
- Term and default spreads
- Exchange rate
- Returns on majour indices
- Technical indicators: Volume, Volatility, Trend, Momentum
At the end I end up with more than 100 features and I apply a feature importance to select the best 20 features. However, both the in-sample and out-of-sample accuracy remain around 25% (as in the case of a random choice).
My question is whether there exist in literature better features or maybe strategies that may improve the predictive power of the model for the horizon I'm considering.