I'm working in Python with statsmodels. I estimate an OLS multiple regression model (n=10763; 12 predictors; r^2=0.29) The model coefficients all have signs pointing the correct theoretical direction and are significant. Multicollinearity is not a problem (VIFs and condition number are good). The residuals show no discernible pattern, so there appears to be negligible heteroskedasticity, but the residuals' distribution skew is 0.317 and the kurtosis is 3.543.
The problem is that the actual vs predicted plot does not adhere to a y=x line:
The model seems to under-predict high values and over-predict low values when compared to the actual observations. What is this telling me? Is there a major problem with my model that I must re-specify or do something with outliers?