I'm doing some experimentation and trying to train a forex trading model to classify based on three classes:
- Buy
- Sell
- 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 buy
and sell
items in trying to maximize accuracy to hopefully increase the number of buy
and 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.