帖子内容
[分享发现] 用回测筛选因子的一点经验分享 我在做量化交易,也自己做因子回测,前前后后试过不少因子,真正能长期用的,其实不多。刚入门的时候很简单: ● 看别人说动量有效 → 做动量 ● 看研报说低波动好 → 加低波动 结果就是: 回测看着还行,一实盘就不稳定。 后来才明白,因子不是“看起来对”,而是“数据上成立”。 我现在的做法: 流程一直没变: 1. 拉数据 2. 算因子 3. 分组 4. 看未来收益 5. 算 IC 方法很朴素,甚至有点老,但一直够用。 数据 import requests import pandas as pd def get\_kline(symbol): url = "https://api.alltick.co/v1/market/kline" params = { "symbol": symbol, "interval": "1d", "apikey": "your\_api\_key" } data = requests.get(url, params=params).json()\["data"\] return pd.DataFrame(data) 最简单的因子:动量 def momentum(df, n=20): df\["ret"\] = df\["close"\].pct\_change(n) return df 这个东西现在看挺基础的,但不影响用。 回测:分组 + IC def backtest(df): df = df.dropna() df\["rank"\] = pd.qcut(df\["ret"\], 5, labels=False) return df.groupby("rank")\["close"\].pct\_change().shift(-1).mean() def ic(df): df\["fut"\] = df\["close"\].pct\_change().shift(-1) return df\["ret"\].corr(df\["fut"\]) 重点就两个: ● 高分组是不是更赚钱 ● IC 是否稳定 一些坑~~~ 1. 未来函数:这个很致命,看起来没问题,其实已经作弊了。 2. 过拟合:调参数调到“完美”,换一段时间直接失效。 3. 因子失效:长期是可能有效的,但短期完全不一定。我也经历过刚上线就连续回撤的阶段。如果你正好在因子失效期开始用,很容易直接放弃。