normalize_ts_feature

czsc.normalize_ts_feature(df, x_col, n=10, **kwargs)[source]

对时间序列数据进行归一化处理

函数计算逻辑:

  1. 首先,进行一系列的断言检查,确保因子值的取值数量大于分层数量,并且因子列没有缺失值。

  2. 从kwargs参数中获取分层方法method的值,默认为”expanding”,以及min_periods的值,默认为300。

  3. 如果在DataFrame的列中不存在x_col_norm列,则进行以下操作:
    • 如果分层方法是”expanding”,则使用expanding函数对因子列进行处理,计算每个时间点的标准化值,公式为(当前值 - 平均值) / 标准差。

    • 如果分层方法是”rolling”,则使用rolling函数对因子列进行处理,计算每个窗口的标准化值,窗口大小为min_periods,公式同上。

    • 如果分层方法不是上述两种情况,则抛出错误。

    • 对于缺失值,获取原始值,然后进行标准化。

  4. 如果在DataFrame的列中不存在x_col_qcut列,则进行以下操作:
    • 如果分层方法是”expanding”,则使用expanding函数对因子列进行处理,计算每个时间点的分位数,将其转化为分位数的标签(0到n-1)。

    • 如果分层方法是”rolling”,则使用rolling函数对因子列进行处理,计算每个窗口的分位数,窗口大小为min_periods。

    • 如果分层方法不是上述两种情况,则抛出错误。

    • 使用分位数后的值填充原始值中的缺失值。

    • 对于缺失值,获取原始值,然后进行分位数处理分层。

    • 创建一个新的列x_col分层,根据分位数的标签值,将其转化为”第xx层”的字符串形式。

Parameters:
  • df – 因子数据,必须包含 dt, x_col 列,其中 dt 为日期,x_col 为因子值,数据样例:

  • x_col – 因子列名

  • n – 分层数量,默认为10

  • kwargs

    • method: 分层方法,expanding 或 rolling,默认为 expanding

    • min_periods: expanding 时的最小样本数量,默认为300

Returns:

df, 添加了 x_col_norm, x_col_qcut, x_col分层 列