¿Por qué se reduciría R-Squared cuando agrego una variable exógena en OLS usando los modelos de estadísticas de Python?

Si entiendo el modelo OLS correctamente, este nunca debería ser el caso?

trades['const']=1 Y = trades['ret']+trades['comms'] #X = trades[['potential', 'pVal', 'startVal', 'const']] X = trades[['potential', 'pVal', 'startVal']] from statsmodels.regression.linear_model import OLS ols=OLS(Y, X) res=ols.fit() res.summary() 

Si enciendo la constante, obtengo un rsquared de 0.22 y con él apagado, obtengo 0.43. ¿Cómo es eso posible?

ver la respuesta aquí Modelos de estadísticas: Calcular valores ajustados y R al cuadrado

Rsquared sigue una definición diferente dependiendo de si hay una constante en el modelo o no.

Rsquared en un modelo lineal con una constante es la definición estándar que usa una comparación con un modelo de media única como referencia. La sum total de cuadrados está degradada.

Rsquared en un modelo lineal sin una constante se compara con un modelo que no tiene regresores, o el efecto de la constante es cero. En este caso, el cálculo de R cuadrado utiliza una sum total de cuadrados que no se degradan.

Dado que la definición cambia si agregamos o eliminamos una constante, la R al cuadrado puede ir en cualquier dirección. La sum de cuadrados explicada real siempre boostá si agregamos variables explicativas adicionales, o permanecemos sin cambios si la nueva variable no contribuye en nada.