Possible that one model is better than two? I'm trying to predict fantasy_points for individual Basketball players in upcoming games. The formula to calculate a player's fantasy_points is:
fantasy_points = (1 * points_scored) + (1.5 * assists)
So if Player A scores 10 points and 4 assists: 
Player A fantasy_points = (1 x 10) + (1.5 x 4) = 16
I have a few seasons worth of player data. My data is organized so that one row represents a player's performance in one game. This includes explanatory variables that are knowable before the game (player age, past performance variables, opponent strength) and the target variables points_scored, assists and fantasy_points.
| player | explanatory variables | points_scored | assists      | fantasy_points |
|--------|-----------------------|---------------|--------------|---------------------:|
| A      | ...                   | 10            | 4            |             16 |
| B      | ...                   | 3             | 10           |             18 |
| C      | ...                   | <to predict>  | <to predict> | <to predict>   |

Using Scikit-Learn's ElasticNet regressor along with GridSearchCV to find the best penalty, I tried to predict how many fantasy points players will have in an upcoming game.
I've tried two approaches(training/CV not shown):
Two Model Approach: I trained two separate models:


*

*A points_scored_model trained with points_scored as it's target

*An assists_model trained with assists as it's target
To figure out how many fantasy_points a player would have in an upcoming game, I combined the predictions like this:
predicted_points_scored = points_scored_model.predict(row_for_player_c)
predicted_assists       = assists_model.predict(row_for_player_c)

predicted_fantasy_points = \
  (1 * predicted_points_scored) + (1.5 * predicted_assists)

One Model Approach: I trained one model:


*

*fantasy_points_model trained with fantasy_points as it's target


Then I predicted fantasy points like this:
predicted_fantasy_points = fantasy_points_model.predict(row_for_player_c)

Because the underlying formula (1*points + 1.5*assists) is incorporated into the Two Model Approach, I would imagine that it would be able to predict fantasy_points more accurately than the One Model Approach. 
I used R^2 score to compare the models and it turns out that the One Model Approach performs much better than the  Two Model Approach.  
It seems like the One Model Approach has less information about the problem so how could it score better? Additionally, is there a way to leverage the fantasy points formula to get better predictions?
 A: Here's a perspective: the two model approach is more constrained, hence is always going to result in an inferior model. Consider the 2m (two-model) model - it looks like:
$$ f_{2m}(\mathbf{x}) = 1.5 (\mathbf{c_1} \cdot \mathbf{x}^T) + 1.0 (\mathbf{c_2} \cdot \mathbf{x}^T)$$
where $\mathbf{c}_i$ were trained in separate models. We can rewrite this as a 1m (one-model):
$$ f_{1m}(\mathbf{x}) = \mathbf{c} \cdot \mathbf{x}^T $$
such that
$$ \mathbf{c} = 1.5\mathbf{c_1} + 1.0\mathbf{c_2}$$
There's no reason to believe that $\mathbf{c}$ is the minimum of the least squares problem  
$$ \min_{\mathbf{b}} \; (\mathbf{y} - \mathbf{b} \cdot \mathbf{X})^2$$
however, the global 1m model is the solution of that minimization problem. In fact, if  you keep using linear models, you'll never beat 1m's $R^2$ - it's an upper bound. 
In english: yes, you have given the model more information, but that doesn't mean that the solution is optimal. In a system with noise, and the guarantee of model misspecification, I think you'll always do worse than the global model.  
A: 
Impossible that one predictive model is better than two?

Rather than getting into the weeds on your specific models, let's just step back and view this question in a more general setting.  If we consider an arbitrary series of observable values, then it is possible that a model could give a perfect prediction of those values, and it is possible that a model could give terrible predictions.  That is, it is possible for one model to be right and the other to be wrong.  Now, if we combine these two models by some aggregation method, the only contribution of the second model is to pollute the first model, and introduce error.  Thus, it is clearly possible for one predictive model to be better than two.
Now, getting to your actual model, what is happening here is that you have separated your predictions for the points scored and assists for each player, and then you have aggregated them post-hoc.  It is unclear exactly what you have done to predict these.  You say you have used regression for the predictions, but you have not specified any explanatory variables, and it is also unclear if you even have multiple data points for each player.  In any case, by modelling each variable separately, this implicitly treats these two things as if they are statistically independent, when they are probably related.
A: As the previous answers have indicated, simply adding a model that is wrong can decrease performance. However, there are clever ways around this issue.
Generalized stacking algorithms (super learner is one example) is an alternative strategy to aggregating the results of multiple models. It has the advantage of discarding wrong (or poorly performing) models, so that only models with good information are retained. Essentially, it breaks the data into $k$ pieces and fits each model to each slice and predicts in a hold-out set. The results of each model are then regressed to generate weights, with better performing models having a greater weight in the final predictions. Models that don't improve predictions have weights near 0. A large number of different algorithms can be used (it increases run-time though). This open-access paper gives further explanation: Rose 2013
For a Python implementation, I use SuPyLearner (not on PyPI but you can download from GitHub)
