From e2485bcf2b5edf71e301bac13766f329f048ec08 Mon Sep 17 00:00:00 2001 From: Dong Zhou Date: Tue, 24 Nov 2020 10:20:29 +0800 Subject: [PATCH] add CSRankNorm impl --- qlib/data/dataset/processor.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qlib/data/dataset/processor.py b/qlib/data/dataset/processor.py index 9c45b8bcd..2201c0891 100755 --- a/qlib/data/dataset/processor.py +++ b/qlib/data/dataset/processor.py @@ -215,5 +215,8 @@ class CSRankNorm(Processor): def __call__(self, df): # try not modify original dataframe cols = get_group_columns(df, self.fields_group) - df[cols] = df[cols].groupby("datetime").apply(lambda df: (df - df.mean()).div(df.std())) + t = df[cols].groupby("datetime").rank(pct=True) + t -= 0.5 + t *= 3.46 # NOTE: towards unit std + df[cols] = t return df