1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-13 15:56:57 +08:00
Charles Young
2021-03-08 19:02:40 +08:00
parent fc89fec46d
commit 2f9af1af8f

View File

@@ -70,7 +70,7 @@ class EnhancedIndexingOptimizer(BaseOptimizer):
def __call__( def __call__(
self, self,
u: np.ndarray, u: Union[np.ndarray, pd.Series],
F: np.ndarray, F: np.ndarray,
covB: np.ndarray, covB: np.ndarray,
varU: np.ndarray, varU: np.ndarray,
@@ -80,7 +80,7 @@ class EnhancedIndexingOptimizer(BaseOptimizer):
) -> Union[np.ndarray, pd.Series]: ) -> Union[np.ndarray, pd.Series]:
""" """
Args: Args:
u (np.ndarray): expected returns (a.k.a., alpha) u (np.ndarray or pd.Series): expected returns (a.k.a., alpha)
F, covB, varU (np.ndarray): see StructuredCovEstimator F, covB, varU (np.ndarray): see StructuredCovEstimator
w0 (np.ndarray): initial weights (for turnover control) w0 (np.ndarray): initial weights (for turnover control)
w_bench (np.ndarray): benchmark weights w_bench (np.ndarray): benchmark weights
@@ -91,6 +91,10 @@ class EnhancedIndexingOptimizer(BaseOptimizer):
""" """
assert inds_onehot is not None or self.inds_dev is None, "Industry onehot vector is required." assert inds_onehot is not None or self.inds_dev is None, "Industry onehot vector is required."
# transform dataframe into array
if isinstance(u, pd.Series):
u = u.values
# scale alpha to match volatility # scale alpha to match volatility
if self.scale_alpha: if self.scale_alpha:
u = u / u.std() u = u / u.std()