第一次做量化时,我和很多人一样,盯着 K 线看了半天。
那时候特别喜欢一句话——“感觉这个形态快启动了。”
后来回头看,我发现自己干的事和在云里找动物没区别。看久了,总能看出一只兔子、一条鱼,甚至一头大象。但云还是那片云。
读到《量化交易:创建自己的算法交易事业》第 2 章时,我突然意识到一个问题:
市场里最贵的东西,不是策略,而是“判断这个策略是不是幻觉”的能力。
我曾经踩过一个很典型的坑。
当时做 A 股动量策略,疯狂调均线参数:
MA5
MA10
MA20
MA30
...
MA250
一路往后试。试到 MA73 的时候,年化收益突然起飞,Sharpe 漂亮得像 PPT,我当时激动坏了,觉得自己挖到了 Alpha。结果实盘三个月,直接回撤 18%。
后来才明白——不是我找到了规律,而是我把随机噪声调成了规律。
这就是 Chan 在这一章反复提醒的:数据挖掘偏差。
你试得足够多,市场迟早会奖励你一个“假答案”。这有点像买彩票。买一张,中不了。买一万张,总有人中奖。问题是——你以为中奖了的是技术。
这一章让我感触最深的一句话,不是 Alpha 来源,不是动量,也不是因子。
而是:大部分交易想法不是策略。
以前我听别人说:
“AI 还会涨。” “这个票突破平台了。” “MACD 金叉了。”
我会认真记下来。现在我的第一反应变成:
规则呢?能不能写代码?能不能回测?能不能复现?
如果答案是否定的,那它只是观点。量化世界里,观点不值钱,规则才值钱。
我后来给自己定了一个习惯。
任何交易想法,必须在 30 分钟内写成代码,写不出来,就直接扔。
例如一个最简单的动量假设:过去 20 天涨幅靠前的股票,未来继续上涨。
它至少要落地成这样:
import requests
import pandas as pd
# AllTick 行情接口示例(示意)
url = "https://quote.alltick.io/quote/kline"
params = {
"symbol": "AAPL.US",
"period": "1d",
"count": 60,
"token": "YOUR_API_KEY"
}
res = requests.get(url, params=params)
data = res.json()
df = pd.DataFrame(data["data"])
# 计算20日收益率
df["ret20"] = df["close"].pct_change(20)
latest_ret = df["ret20"].iloc[-1]
if latest_ret > 0.10:
print("进入候选池")
这段代码很粗糙。
但它已经完成了一件重要的事:把“感觉”翻译成了机器语言。
量化的起点,不是策略,是翻译。
把直觉翻译成规则,把规则翻译成代码,把代码翻译成收益曲线。
这一章里还有一个观点,我特别认同。
Chan 说:个人投资者的优势不是信息,而是灵活。
这句话我做了几年才体会到。
机构管理几十亿资金。很多策略他们不能碰。日成交 500 万的小票?容量太低。盘口套利?放不下仓位。但个人账户十万、二十万,反而能钻进去。
有点像大船和小艇,大船稳,但进不了小河道,小艇反而能找到鱼。所以后来我越来越少研究“大家都在研究什么”。
我更关心:哪些地方资金还没挤满。
现在回头看,第 2 章其实讲的不是“找策略”。
它讲的是另一件事:市场观察 → 提出假设 → 写规则 → 回测 → 去掉幻觉 → 留下真实信号
这条路很长。而且大部分时间,你不是在发现 Alpha,你是在删 Alpha。删掉过拟合,删掉幸存者偏差,
删掉看起来很美的曲线,删到最后剩下那一点点,才是真东西。
我做量化这些年最大的感受是:
赚钱策略不稀缺,市场每天都能制造新的赚钱曲线。
稀缺的是——知道哪条曲线只是运气。