What I'm trying to do is adapting this research paper to another problem. In short: the authors split price variations of S&P500 index into four different classes. Then they train a Random Forest in order to predict open-close return on previously unseen data. Their approach is successful considering that they've eventually managed to systematically overperform the index. However, price fluctuations of that index are pretty balanced across classes as you can see from the figure below:
As you can see, my data is extremely unbalanced. So far my random forest has achieved a pretty decent AUROC, my micro-average across classes is 0.77. However, as you could easily imagine, most of the predictions made are about that immense number of variations around zero. What I want to do is finding a way to scientifically split data into a number of classes that is sufficiently sparse to assign pretty much the same number of data points to each class as the authors did in their paper. How would you suggest me to procede?