linear regression model is fitting the data properly as in shape of the curve of predicted value is same as curve of actual value but the predicted values are lower than the actual values. Imagine the actual curve being pulled down in the graph to give predicted curve. Can anyone suggest why is this happening? In the image- black points are the actual value and red line is the fitted value, pink and blue are prediction interval value(prediction upper and prediction lower) x axis is not an explanatory variable used to train the model, it is just the timestamp of data collection
A linear model with an intercept term will always predict the mean of the response correctly on the training data. That is, the mean of the observed response is always equal to the mean of the predicted response. You could say that the intercept "memorized" the overall response mean of the training data.
That said, when you go to a held out data set, there is no guarantee that the overall mean will stay the same. This is especially true when your new data is collected out of time, or in a different region (or for many other reasons). This phenomena is often manifested in exactly the way that you are seeing: the model captures the shape of the data well, but the overall trend is shifted by a constant amount.
I see this all the time in my industry (insurance). There is a long lag from when a model is fit to when it can be put into production due to regulatory issues. During this time, macroeconomic forces can cause the average insurance loss to drift up or down, while the ratio between the propensities for two customers to have a loss stays constant. There is a whole gamut of techniques actuaries have developed to deal with these intercept shifts.