量化vibe coding常见错误(一)
最近 Vibe Coding 量化如雨后春笋般萌生,越来越多人开始使用 AI 来完成量化策略。
我也早已用ai替代了大部分古法编程。我的工作框架是:自己把控策略框架,因子细节和代码实现可以交给 agent,最终一定要自己检查 AI 生成代码细节。
我认为这种半自动的方式相对比较安全,但如果从未接触过量化、也不会 coding,不得不全盘交由 AI 来完成,那么有一些必要的细节还是需要注意,也就是我下面要说的。
这些基本都是量化行业比较常见的常识性问题,主要作为科普,也欢迎各位同行指正。
1. 未来函数
所谓未来函数,就是使用的交易价格早于或等于 signal / factor 得到的时间。
例如最简单的 5 日动量因子,如果使用今日收盘价计算,那么这个因子实际上要到今日收盘之后才能得到,因此合理的开仓价格应该是下一日开盘或者之后的价格。
当然,如果只是使用今日收盘价计算因子,然后使用今日收盘附近的价格交易,这个问题其实没有那么严重,实际交易中确实存在收盘附近成交的可能性,但这时候就需要进一步考虑交易成本或者滑点的问题,下面会说。
为了避免未来函数,最简单的方法其实就是直接 shift,因子计算完成后直接 shift(1),这样就可以保证 t 时刻计算出来的因子,在 t+1 时刻才能使用。
2. 忽略交易成本
交易成本主要包括手续费和滑点,这一点对于换手率较高的策略影响尤其大。
一般来说,交易频率越高,换手率也越高,因此日内策略尤其需要注意交易成本的问题。
很多日内策略在完全不计算手续费和滑点的时候,PnL 是一条平滑向上 45° 的完美直线,但是加入正常的手续费和滑点之后,可能立刻反过来,变成一条平滑向下的 45° 直线。
具体来说,手续费的设置需要根据不同的交易品种来确定;滑点则可以直接设置,或者通过交易价格本身来进行模拟。
例如期货可以直接设置滑点为 x 个 tick;对于一些开盘交易的策略,也可以通过计算开盘后的 TWAP 或 VWAP 价格来代替简单的滑点设置,这样通常会更加接近真实交易情况。
写不下了,如果有后续再说说过拟合和参数robust问题
量化
