磕磕绊绊手搓因子体验(内测第五周作业
  汉堡贼香 13天前 175 1

先完成作业

1.AI助手生成工作流
image.png
1.2 根据建议更换调仓周期、回测时间,结果如下,表现一般。
image.png
1.3肚子里没货,去问问大模型,为了提高点难度选择了震荡市的因子。他给了十几个。

1.4随机选择了自认为有用的三个因子,让AI助手生成代码。但是实现不了,只能一个个因子分别尝试。(问题1)
image.png
1.5用非线性模型先尝试了20日成交额变化率因子(这里用python代码输入里的ai助手帮忙生成标准规范的公式格式粘贴到特征工程输入的公式输入部分)
image.png
1.6根据AI 建议做因子标准化/去极值/市值行业中性化处理。这里我不会处理,ai助手给我了完成的处理代码,但是因为特征工程只能输入公式。(问题2)
image.png
1.7交互的过程中给我了看起来有用的因子处理。(虽然能力不够,但是这个思路挺牛的)
========= 1. 价格相对中期均线(估值 / 趋势水平) =========
price_ma_60 = MA(close, 60)
price_ma_60 = IF(price_ma_60 == 0, 1, price_ma_60)
price_level = close / price_ma_60 # 原始比例 >1 偏高 <1 偏低
price_level_cs = ZSCORE(price_level) # 截面标准化

    # ========= 2. 动量特征:20 日收益 + 60 日趋势 =========
    ret_20   = RETURNS(close, 20)              # 20 日累计收益
    slope_60 = SLOPE(close, 60)               # 60 日线性回归斜率
    raw_mom  = 0.7 * ret_20 + 0.3 * slope_60  # 你的原始动量组合
    mom_cs   = ZSCORE(raw_mom)                # 截面标准化动量

    # ========= 3. 换手率特征:绝对水平 + 相对自身波动 =========
    to_ma_20 = MA(turnover, 20)               # 20 日均换手率(绝对水平)
    to_ts_z  = TS_ZSCORE(turnover, 20)        # 20 日时间序列 z-score(自身体感)
    raw_to   = 0.5 * to_ma_20 + 0.5 * to_ts_z
    to_cs    = ZSCORE(raw_to)                 # 截面标准化换手

    # ========= 4. 成交额 / 流动性特征 =========
    amt_ma_20 = MA(amount, 20)
    amt_ma_20 = IF(amt_ma_20 <= 0, 1, amt_ma_20)
    liq       = LOG(amt_ma_20)
    liq_cs    = ZSCORE(liq)                   # 截面流动性

    # ========= 5. 量的波动 / 噪音特征 =========
    vol_chg = RETURNS(volume, 1)
    vol_vol = TS_ZSCORE(ABS(vol_chg), 20)     # 20 日内量的波动强度

    # 原先用于抑制高噪声标的的惩罚项,也保留为单独特征
    vol_penalty = 1 / (1 + ABS(vol_vol))      # (0,1]
    vol_penalty = MAX(vol_penalty, 0.2)
    vol_penalty = MIN(vol_penalty, 1)

    # ========= 6. 部分非线性 / 交互特征(给 ML 提供先验结构) =========
    # 动量 × 换手:高换手下的动量,与低换手下的动量区分
    mom_to_inter = mom_cs * to_cs

    # 价格水平 × 动量:高位强势 vs 低位反弹
    price_mom_inter = price_level_cs * mom_cs

    # 二次项:供非线性模型捕捉曲线关系
    mom_sq = mom_cs * mom_cs
    to_sq  = to_cs  * to_cs

    # ========= 7. 打包多列特征返回 =========
    # 平台允许多列输出,我们直接返回“特征名 -> 序列”的映射
    # 后续 ML 节点可以把这些列当作 X 特征矩阵

    features = {
        # 价格 / 趋势相关特征
        'price_level_cs':  price_level_cs,   # 价格相对 60 日均线(截面标准化)
        'ret_20':          ret_20,           # 20 日累计收益
        'slope_60':        slope_60,         # 60 日趋势斜率
        'mom_cs':          mom_cs,           # 综合动量(截面)

        # 换手 / 筹码活跃
        'to_ma_20':        to_ma_20,         # 20 日平均换手
        'to_ts_z':         to_ts_z,          # 换手率 20 日 TS z-score
        'to_cs':           to_cs,            # 换手综合(截面)

        # 流动性
        'liq_cs':          liq_cs,           # 20 日平均成交额的 log 截面

        # 噪音 / 稳定性
        'vol_vol':         vol_vol,          # 成交量波动强度(20 日 TS z-score)
        'vol_penalty':     vol_penalty,      # 惩罚项(原本用于抑制高噪标的)

        # 非线性交互 / 二次项
        'mom_to_inter':    mom_to_inter,     # 动量 × 换手
        'price_mom_inter': price_mom_inter,  # 价格水平 × 动量
        'mom_sq':          mom_sq,           # 动量平方
        'to_sq':           to_sq,            # 换手平方
    }

1.8继续交给工作流,试图帮我生成完整的框架。但跟我想的不一样,只有一个线性工作流。
image.png

不气馁,开始手搓。

2.1尝试短期反转因子,好像还可以
image.png
2.2看别的大佬的优秀帖子,学习、调整机器学习的参数
image.png
2.3反复手搓调整参数。发现还是最开始的的数据比较好,在决策树上和学习率上做了调整,
image.png
2.4根据AI的建议把公式取负-,并把因子方向调整为1
image.png
2.5用单因子尝试了不同年份:2022下跌行情的表现
image.png
2.6用机器学习了单因子在2020-2021的数据,回测2023-2025呢?
image.png
2.7AI助手再次建议我在构建因子前先做数据过滤,如:波动率、市值、流动性。(问题3,那就又跟上面的问题一致了,这建议公式输入前面增加一个代码输入可以用来过滤数据?(或许专家模式里可以实现,不过平台自己能用AI指导教学就好))
image.png
2.8继续手搓换手率因子
image.png
2.9搓出第一个ic=0.5的因子哈哈哈哈(不过这里回测区间很短)
image.png
2.10继续搓特异波动率因子,看介绍好像挺有用的,但是调整了半天数据,没什么显著提升。
image.png

手搓不动了,先搭个多因子非线性组合框架

image.png
3.1 继续调整机器学习的参数、调仓周期,搓了半天。变化不大
image.png
3.2 调整长时间的回测区间,看看这三个因子的结果(五日反转、换手率、20日动量)**
3.3最后依旧是建议我优化构建因子细节**
image.png

体验总结、建议

体验总结

1.首先专业度还是很高的。大幅降低门槛,(不管怎么样已经可以吹牛说:我已经在用机器学习实现非线性多因子的组合了。(狗头
2.还是要更系统深入地学习和理解机器学习,不然不能根据因子的特征调整,从而使因子变得更有效。如果机械手搓调整,还是有点浪费时间。
3.还是得把专家模式啃下来,才算真的入门.也希望平台帮助我们更好的使用和用好专家模式.(这里我也不知道具体该怎么做,但我觉得很多想法应该是可以通过专家模式实现的)
4.整体的体验碰壁次数还是比较多的,时间精力的摩擦比较大(但是这里有自己不熟练的原因)如果自己想进阶一下,手搓一个粗糙的复杂的工作流还是可以的.如果想在交互过程中完善工作流,学习,还是不够流畅,因为既不能找AI助手生成/优化想要的工作流,也不能通过手动搭建顺利解决途中遇到的各种报错,就会卡住。

建议

1.希望在工作空间建立因子文件夹,方便自己分类整理收集。
2.希望在因子结果分析等类似的分析窗口上抬头,与工作流的名字呼应,这样更直观。
3.希望在因子结果分析等分析窗口左侧出一列近期回测结果,和与之相对应的工作流名称。
4.希望在公式输入内部内置一个AI助手,或者在公式输入左侧加入一个代码输入的节点,这样就可以实现因子构建时的过滤和优化处理。(不过我认为专家模式应该可以实现这个目的)
5.希望出一个我的因子库、策略库、研报库、数据库。里面存放自己挖出来的有效因子策略等等。
尤其是数据库这个模块,如果可以帮忙统计和存放自己想要探索的数据后续给可以做组合试验,
(比如说我想统计尝试探索过去一年日频的MACD金叉数量,与过去一年成交量大于万亿的交易日的数量,和他们之间的关系。到时候各种数据包做排列组合,说不定会有意想不到的化学反应)
6.希望AI助手深度学习一下工作流与各个节点的使用和常见错误问题,还有根据代码搭建
7.希望帖子编辑时能自动保存或提高图片缓存数量,体验下来,超过10张图片的文档保存或发布时间会很长,这个时候刷新就会全部清空。
8.希望网站首页的问题反馈功能增加微信截图的PNG图片上传格式。还有,问题反馈界面出一个保存的按钮

最后一次编辑于 9天前 0

汉堡贼香

30张图删到5张才发出来,不能直观展示全过程了哈哈。

2026-03-22 14:32:28      回复

推荐阅读