{"record":{"id":"4853653916a6d5fa","repo":"microsoft/qlib","slug":"invalid-argument-type-for-target","errorCode":null,"errorMessage":"invalid argument type for `target`","messagePattern":"invalid argument type for `target`","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"qlib/model/riskmodel/shrink.py","lineNumber":82,"sourceCode":"        if isinstance(alpha, str):\n            assert alpha in [self.SHR_LW, self.SHR_OAS], f\"shrinking method `{alpha}` is not supported\"\n        elif isinstance(alpha, (float, np.floating)):\n            assert 0 <= alpha <= 1, \"alpha should be between [0, 1]\"\n        else:\n            raise TypeError(\"invalid argument type for `alpha`\")\n        self.alpha = alpha\n\n        # target\n        if isinstance(target, str):\n            assert target in [\n                self.TGT_CONST_VAR,\n                self.TGT_CONST_CORR,\n                self.TGT_SINGLE_FACTOR,\n            ], f\"shrinking target `{target} is not supported\"\n        elif isinstance(target, np.ndarray):\n            pass\n        else:\n            raise TypeError(\"invalid argument type for `target`\")\n        if alpha == self.SHR_OAS and target != self.TGT_CONST_VAR:\n            raise NotImplementedError(\"currently `oas` can only support `const_var` as target\")\n        self.target = target\n\n    def _predict(self, X: np.ndarray) -> np.ndarray:\n        # sample covariance\n        S = super()._predict(X)\n\n        # shrinking target\n        F = self._get_shrink_target(X, S)\n\n        # get shrinking parameter\n        alpha = self._get_shrink_param(X, S, F)\n\n        # shrink covariance\n        if alpha > 0:\n            S *= 1 - alpha\n            F *= alpha","sourceCodeStart":64,"sourceCodeEnd":100,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/model/riskmodel/shrink.py#L64-L100","documentation":"ShrinkRiskModel.__init__ (qlib/model/riskmodel/shrink.py:82) validates the `target` argument (the shrinking target matrix F): it must be a string in {'const_var', 'const_corr', 'single_factor'} or an np.ndarray supplied directly. Anything else (None, list, pd.DataFrame, int) raises TypeError('invalid argument type for `target`'). Note lists and DataFrames are not auto-converted.","triggerScenarios":"Constructing ShrinkRiskModel(target=None); passing target as a Python list or pandas DataFrame instead of np.ndarray; passing an int/float thinking it scales the target.","commonSituations":"Supplying a custom shrinkage target computed as a DataFrame from a prior covariance step; configs omitting target or setting it to null; assuming any array-like is accepted.","solutions":["Use one of the built-in target strings: 'const_var', 'const_corr', or 'single_factor'","Convert custom targets to np.ndarray first: target=df.to_numpy() or np.asarray(list_target)","Ensure the config value for target is a string; remove null values"],"exampleFix":"# before\nmodel = ShrinkRiskModel(target=cov_df)  # pd.DataFrame -> TypeError\n\n# after\nmodel = ShrinkRiskModel(target=cov_df.to_numpy())\n# or\nmodel = ShrinkRiskModel(target='const_corr')","handlingStrategy":"validation","validationCode":"import numpy as np\nassert isinstance(target, str) and target in ('const_var', 'const_corr', 'single_factor') or isinstance(target, np.ndarray), f'invalid target: {target!r}'","typeGuard":"def is_valid_target(t) -> bool:\n    return (isinstance(t, str) and t in ('const_var', 'const_corr', 'single_factor')) or isinstance(t, np.ndarray)","tryCatchPattern":"try:\n    model = ShrinkRiskModel(target=target)\nexcept TypeError as e:\n    raise ValueError('target must be const_var/const_corr/single_factor or np.ndarray') from e","preventionTips":["Convert DataFrames/lists to np.ndarray before passing custom targets","Keep target as one of the documented string constants in configs"],"tags":["qlib","risk-model","shrinkage","target","type-error","validation"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}