I'm doing some experimentation and trying to train a forex trading model to classify based on three classes:
- No action
Input rows are labeled as
buy when the price at some later time is X% greater than the current price and labeled as
sell when the future price is X% less than the current price. All other rows are labeled as
no action, which is the large majority of rows.
The problem I'm running into is that the
no action items represent about 84% of the total dataset, however the model is predicting
no action almost 99% of the time. I suppose the reason for this is that the model is aiming for maximum accuracy and it doesn't realize that
no action items are of no use.
So what I would like, if possible, is for the model to only care about
sell items in trying to maximize accuracy to hopefully increase the number of
sell predictions (to the extent that this helps the profitability of the model).
One way that I think I could do this is to increase the number of classes and have each class represent a roughly equal percentage of the total items, however, that would be pretty messy, so I'm curious if there's a way that directly affects the way accuracy is calculated.
EDIT: I've added additional details here: Variability in CNN test results
But the focus is still in maximizing the accuracy of the buy/sell categories. Looking through the Tensorflow metrics (https://www.tensorflow.org/api_docs/python/tf/metrics), I think I could use two separate binary classifiers and use the
TruePositives metric, however, I'd prefer to keep things simple and get it all in one model.