使用AI工作流尝试了期货(截面)单因子回测、单策略回测、策略仿真三个功能。规则型策略和仿真能够跑通,因子回测和因子型策略还得再看看。
一、截面类单因子回测
1.1 展期收益率因子
1.1.1 因子构建及工作流生成
- 展期收益率因子是期货最经典的风险因子之一,构造方式可以是单品种时序也可以是截面多空;本案采用截面方式构造因子,因为看起来平台目前还没有提供时序因子的分析功能节点。
- 一句话生成工作流;
任务类型: 因子分析
因子名称: 展期收益率因子
交易品种: 期货
因子计算逻辑: 近、远月合约对数价格之差,表达式为(ln(P1 − P2)) ∗ 365/(N2 − N1)
测试标的: 所有上市满一年的期货品种
时间范围: 2025.1.1-2025.12.31
1.1.2 因子代码修改
- 遇到问题:AI在虚构;
- 在因子代码对话框提示AI修改,失败;
- 其实用到的数据只有近远月合约的日线级别的价格数据和合约到期日数据,不可能没有的,继续提示AI修改;
- 这个AI现阶段还真不能放心把策略交给他,把数据获取修好了以后跑回测直接报错,发现问题是因子值全部为空,仔细看代码,发现AI把“品种上市满一年”的条件错误理解为“合约上市满一年了”,继续提示AI修改;
- 没想到还是报错,因子值为空,尝试多轮AI自动修复无果后,查询平台基础因子文档,发现当前代码中基础行情获取的代码是AI瞎编的。
1.1.3 因子总结
这样看目前AI生成成功率比较高的应该还是直接基于基础因子的东西。如果想要构建类似期限结构类的这种需要对原始数据做一些复杂处理的因子,可能需要自己去做行情数据的处理,AI助手还难以理解类似需求。例如之前做过的一个白银跨期套利的策略中,需要在代码中自行手动指定两个合约的代码。
一个启示是当看到在初次生成的因子代码中,AI有类似“数据需要从外部获取”的注释表述,代表平台目前还不支持生成该因子。
1.2 经典动量因子
1.2.1 因子构建及工作流生成
- 动量因子是期货最经典的风险因子之一,构造方式可以是单品种时序也可以是截面多空;本案采用截面方式构造因子。
- 一句话生成因子;
因子名称: 126日动量因子
交易品种: 期货
因子计算逻辑: 过去126个交易日的收益率,使用主力合约
测试标的: 所有上市满一年的期货品种
时间范围: 2025.1.1-2025.12.31
1.2.2 还是跑不通
第一,不建议直接在原来工作流上重新写因子因为包含了原来的上下文记忆,很容易跑不通
第二,重新生成了一个工作流,还是失败了
看了下可能是系统级的问题,因为让AI在代码中显式排除这个L_F888.DCE也不行。等官方修复了。
二、单策略回测
2.1 因子型策略
前面的因子回测的目的是快速验证因子的有效性,而策略的目的是把想法放在类似真实的历史行情中看能跑出一个怎样的业绩。
有了因子代码,仍然需要构建策略代码,写明一些调仓、集中度等的交易层面逻辑,并把策略回测节点与因子构建节点和策略代码节点链接。不过这块已经不需要我们操心了,AI助手可以直接帮我们生成,如下图所示,逻辑还是非常清晰的:
本来上图这样因子分析和策略构建放在一个工作流里面很清晰的,不过由于因子分析节点一直跑不出来,只能先把因子分析的节点删去,简单看下利用该因子生成的策略效果:
交易参数设定–每5交易日调仓,按126日动量排序多前5空后5,单品种保证金占用5%。
可以一键AI智能分析回测结果:
给出了优化参数的建议,直接做法是参数遍历,寻找参数平原,不过暂时还没找到参数遍历的功能在哪里。
继续查看交易详情,发现问题很大:
他居然把同一个品种不同到期日的合约当成不同的标的统一纳入截面选期的标的池了。试图让AI修改,失败:每个截面只交易一两个标的了。
折腾不动了…感觉作为一个对底层代码、数据库了解不深的小白来说,还是应该先把这些东西了解清楚再说,知道回测框架的底层逻辑是什么、技术边界在哪里,不然确实是比较折腾。
2.2 规则型策略
实测下来平台对于针对单标的构建时序上的买卖规则的这类策略支持度还是很成熟的。
例如,针对贵金属品种构建一个简单时序动量策略:
工作流架构:
回测结果:
不过有个小细节是看成交记录和账户权益变动好像有点小问题,回测区间是25.10.1-25.12.31,但翻看交易记录只到11月,之前也遇到过类似的问题,不知道是不是前端显示原因。
三、策略仿真
策略仿真是我最爱的功能。可以在完全模拟真实交易的仿真环境中看自己策略的实时表现与成交情况。避免由于回测参数设置不合理、过拟合等原因导致的回测买地球实盘跌成狗的情况。