Even if prediction is the sole focus here, it is always better to try to improve performance in ways that they neither violate / question reasonable descriptions and perceived structures of the real-world phenomenon under study, nor do they jeopardize the technical integrity (and so the robustness) of the model itself.
The intercept is perhaps the most misunderstood component of a regression specification: it is there to capture the possibly non-zero mean of the "error term" -and by doing this it contributes to the technical integrity of the model, but also it saves our theories from the need to be "global" in order for them to be useful -they can now be "local" (account for/predict the variability of the dependent variable around some mean value that is estimated by the intercept). But also, there are cases where the intercept emerges from the theory itself.
From what I can understand in your case, you have panel data and you have specified a common intercept to all cross sections. Given the information you provided, this appears to be a misspecification: Each cross-section is "firm's accounting earnings" and more over are measured in levels, and you know that they vary widely in magnitude...Why would we expect that, nevertheless, they would have a common intercept? -namely that the shocks to profits would have a common non-zero mean across so widely varying cross-sections?
(I mentioned that they are measured in levels, because if they where measured, say, as percentage of sales, then they could be much closer irrespective of company size, and so my criticism of the specification would be weakened).
So at the very least, you should specify an individual constant term for each cross section -which would change your model into an "Individual Effects" one (Fixed or Random, that's another issue). It seems to me, a serious work would entail working towards this direction also.
As for dropping the common constant term: Since I just accused it as a misspecifier (or better a "misspecification carrier"), naturally, one would conclude, "better to drop a common intercept, than have it".
Well, think of your model without constant term(s): zero regressors would imply (not just permit) zero dependent variable. That's a strong consequence, and you should check whether it represents a different misspecification by itself: for example, you say that in the regressors, you have the GDP of the country where each cross-section, each company operates... If GDP was zero, could the company had any profits? Reasonably speaking, no. So your specification already includes an even stronger assumption from the one implied by the absence of a constant term: it suffices that one regressor be zero, for the dependent variable to be expected logically to be zero. This could also be an argument of not including constants: if GDP is zero, in what sense do we expect the company to nevertheless have non-zero profits, represented by the constant?
But from another aspect, without constant term(s), the assumption that the error term has a zero mean conditional on the regressors becomes a true additional structural assumption (because otherwise it is just a convenient consequence of the constant term being present). Can you defend it?
If not, you have just created an issue with the validity of your model as a reasonable description of reality, and even if this improves its forecasting performance, it lowers the trustworthiness over time of it as a prediction mechanism.
And what about the 2nd issue? Does the absence of the constant(s) creates technical issues to your model? That is inextricably tied up with the estimator (estimation method) you are applying, and possibly with other aspects of the model: Again, does it matter for the estimator properties, that the error term may have a non-zero mean?
Your turn now.