一个五日频率因子思路+代码分享
  易斋 22天前 125 1

以下是因子的代码

    def calculate(self, factors):
        close = factors['close']

        
        cum_ret_5 = RETURNS(close, 5)

        rolling_max_5 = TS_MAX(close, 5)
        drawdown_5 = (close / rolling_max_3) - 1
        max_dd_5 = TS_MIN(drawdown_5, 5)
        raw_factor = cum_ret_5 - max_dd_5

        cleaned = IF(AS_FLOAT(raw_factor == raw_factor), raw_factor, 0)
        cleaned = IF(AS_FLOAT(cleaned < 1e10), cleaned, 0)
        
return ZSCORE(cleaned)

这个因子同时考虑了短期收益和回撤,然后对收益和回撤进行简单的量化和复合。

因子以五日周期为观测窗口,同步衡量标的阶段性盈利表现与下跌承压程度,通过收益抵扣风险的计算逻辑综合打分,再经异常值清洗与截面标准化处理,最终输出可横向对比的评分结果,用于甄别盈利稳健、风险可控的投资标的。

展开讲解如下

五日累计收益计算

通过当期收盘价与五日前期价格比值,算出区间整体收益率,直观反映个股短期上涨获利能力,数值越高代表阶段性盈利表现越好。(我们粗放地认为短期越是上涨,代表趋势越好)

五日最大回撤测算

先截取五日区间内最高成交价格,计算每日价格相对区间高点的回落幅度,再选取区间内最大回落值,以此界定标的短期价格下跌风险,回撤数值越小,股价波动风险越高。(我们先粗放地认为:短期下跌代表释放风险,短期不下跌代表堆积风险)

综合得分构建

采用收益减去最大回撤的运算规则,本质是盈利水平叠加回撤绝对幅度。个股短期收益越高、下跌幅度越小,原始因子得分越高,实现奖励盈利、规避风险的设计初衷。

数据合规清洗

过滤空值、无穷数、极端异常数值,将违规数据统一归零,剔除市场异动失真数据,保障因子计算基础有效可靠。

截面标准化处理

借助均值标准差完成标准化转换,抹平不同标的数值量级差异,让全市场个股因子评分具备横向对比价值,方便筛选优质标的。

最后一次编辑于 22天前 0

易斋

本因子是粗放思路,笔者回测结果为弱有效因子,如需借鉴建议加入自己理解进行重构,有因子重构思路可以留言

2026-05-25 16:43:29      回复

推荐阅读
  sUPine   2026年04月18日   184   0   0 Python经验分享