Skip to content

Commit 871b1da

Browse files
authored
Add files via upload
1 parent 677a0aa commit 871b1da

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

scutquant/operators.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ def ts_neg_count(data: pd.Series, n_period: int) -> pd.Series:
371371

372372

373373
def decay_n(x: pd.Series, n: int) -> pd.Series:
374-
arr = np.arange(1, n+1)
374+
arr = np.arange(1, n + 1)
375375
weights = arr / sum(arr)
376376
return x.rolling(n).apply(lambda y: np.dot(y, weights), raw=True)
377377

@@ -530,10 +530,12 @@ def cs_beta(x1: pd.Series, x2: pd.Series) -> pd.Series:
530530
var = cs_variance(x1)
531531
return cov / var
532532

533+
533534
def cs_alpha(x1: pd.Series, x2: pd.Series) -> pd.Series:
534535
beta = cs_beta(x1, x2)
535536
return cs_mean(x2) - cs_mean(x1) * beta
536537

538+
537539
def cs_resid(x1: pd.Series, x2: pd.Series) -> pd.Series:
538540
beta = cs_beta(x1, x2)
539541
alpha = cs_mean(x2) - cs_mean(x1) * beta
@@ -628,11 +630,11 @@ def neutralize(data: pd.DataFrame | pd.Series, target: pd.Series, features: list
628630
:return: pd.DataFrame, 包括中性化后的因子和未中性化的其它因子
629631
"""
630632
if isinstance(data, pd.Series):
631-
return cs_resid(data, target)
633+
return cs_resid(target, data)
632634
else:
633635
features = data.columns if features is None else features
634636
other_cols = [c for c in data.columns if c not in features]
635-
factor_neu = Parallel(n_jobs=n_jobs)(delayed(cs_resid)(data[f], target) for f in features)
637+
factor_neu = Parallel(n_jobs=n_jobs)(delayed(cs_resid)(target, data[f]) for f in features)
636638
data_neu = pd.concat(factor_neu, axis=1)
637639
data_neu.columns = features
638640
return pd.concat([data_neu, data[other_cols]], axis=1)

0 commit comments

Comments
 (0)