quantlab.portfolio.predefined.expected_return#

The shipped expected return models of the mean-variance rule (ADR 0046).

An ExpectedReturnModel (quantlab.portfolio.base) turns the prediction of a mean-variance rule’s expected_return_label into the expected return mu its optimiser maximises, on [bars, symbols] arrays, so one implementation serves the per-bar rule (one row) and the approximate backtest. Five are shipped:

  • GrinoldExpectedReturn: mu = ic * sigma * z, z the prediction’s cross-sectional z-score over the bar’s candidates and sigma each candidate’s volatility on the label’s span (Grinold’s rule; a riskier name gets a larger mu);

  • ZScoreExpectedReturn: mu = ic * median(sigma) * z, the same scale without the tilt to risky names: within a bar mu ranks as the prediction;

  • UnscaledZScoreExpectedReturn: mu = z, the z-score itself, unscaled: the same units on every bar, so turnover_penalty is in z units;

  • RawExpectedReturn: mu is the prediction, which must be in return units (its label spec’s scale "raw");

  • PredictionExpectedReturn: mu is the prediction as it is, in its own units (a standardized ensemble score, say); risk_aversion and turnover_penalty are then in those units too.

Classes

GrinoldExpectedReturn

mu = ic * sigma * z: Grinold's rule, a riskier candidate getting a larger mu.

PredictionExpectedReturn

mu is the prediction as it is, whatever its units.

RawExpectedReturn

mu is the prediction, which must be a return in the label's own units.

UnscaledZScoreExpectedReturn

mu = z: the prediction's cross-sectional z-score over the candidates, unscaled.

ZScoreExpectedReturn

mu = ic * median(sigma) * z: Grinold's scale without the tilt to risky names.