The question is: how to smooth out kinks in individual demand curves in a GBDT model without underfitting on the price variable?
We have some GBDTs demand models already in place (with monotonic constraints that ensure non-increasing aggregate and individual-client demand curves). The problem with these algos is that while the aggregate demand curve (averaged over all user profiles) is smooth, individual demand curves are highly irregular, non-smooth, exhibiting sudden changes that could be potentially exploited by the clients and/or their advisors.
One idea we had was to fit two models and use first of them as an offset in the second one. First one with all price-related variables, and second - without them, and only the second one using a high-accuracy non-linear (tree-based) algo. The only algo that met the smoothness requirements for the first-stage model was GLM (strictly GLM, as more general Elastic Net only worsened accuracy due to tree-based feature selection process we used), which is obviously bad for accuracy (despite the second stage model being non-linear) and results in both lower (absolute) elasticity of demand and increased implementation complexity.
Any other ideas how to solve the problem? Can it be achieved using a single tree-based model? Ideally if the final algo was a "non-academic" (battle-tested) one, like xgboost or lightgbm, for production support reasons.