先说个结论:AI对普通人的红利,至少在国内量化这个方向上,不是让你去训练什么大模型,而是帮你把原本一个团队才能做完的“策略研究流水线”,压缩到一台笔记本、一个人、一个周末就能跑通的程度。你不需要数学博士背景,不需要券商级别的行情通道,甚至不需要会写特别复杂的代码,就能开发出一套逻辑完整、带风控、能回测、能迭代的量化策略。
我在这个方向上磕了大半年,踩过的坑比写出来的代码多得多。这篇文章就把我从“看K线瞎猜”到“用规则和代码做决策”的完整路径拆给你看,包括每一个关键环节为什么这么做、参数怎么定、哪些坑是新手必踩,以及AI到底应该用在哪个环节才不会帮倒忙。
1. 整体设计与思路拆解:个人量化到底在赚什么钱
1.1 个人量化的本质:从“拍脑袋”到“规则化表达”
很多人一说量化,就想到高频、纳秒级、光纤机房、FPGA,那是机构玩的游戏。个人做量化,赚的从来不是执行速度的钱,而是纪律和逻辑的钱。说白了,就是把交易决策从“我觉得要涨”变成“当A条件成立时,我买入;当B条件成立时,我卖出”,然后让历史数据告诉你,这套逻辑在过去十年里到底能不能赚钱、最大会亏多少、你能不能拿得住。
这个转变的意义是巨大的。手工交易时,恐惧和贪婪会直接影响你的判断;而量化策略一旦写成代码,它就是一个没有感情的执行者。我自己最深的感触是,以前做突破单,止损了总想扛一扛,结果小亏变大亏;写成策略之后,止损是代码里的一行判断,触发就是触发,没有犹豫的余地。这就是个人量化的核心价值:把不可复制的人性化操作,变成可复制、可验证、可优化的规则。
所以在设计整个方案之前,你首先要接受一个观点:量化不一定赚钱,但它一定能让你亏得明明白白。每一笔亏损都能在日志里找到原因,而不是“感觉不顺利”。
1.2 AI在个人量化里的三个真实定位
围绕AI这个关键词,我想先泼一盆冷水:别指望AI替你选股然后直接告诉你明天买什么,那是不存在的。以我实际使用下来的经验,AI在个人量化流水线里,目前真正有价值的是三个位置:
第一,代码实现环节。你有策略思路,但写代码能力有限。比如你想实现“双均线金叉买入、死叉卖出”,可以直接用自然语言把思路描述清楚,让AI帮你生成完整的backtrader策略骨架,你再做参数调整和逻辑校验。这个环节的效率提升是实打实的,至少省了我写样板代码的60%时间。
第二,特征筛选环节。量化策略的源头是因子和特征。你可能想尝试“成交量放大”“RSI超卖”“乖离率过大”这些十几个特征,但不知道哪些组合有效。AI可以帮你做单因子分析、相关性分析,输出IC、IR这些指标,让你知道哪些特征值得保留,哪些是噪音,而不是拍脑袋乱加变量。
第三,回测报告解读环节。回测跑完,会得到年化收益、最大回撤、夏普比率、胜率、盈亏比一堆数字,新手根本看不出问题在哪。你可以把回测报告的关键指标贴给AI,让它帮你分析这个策略可能存在哪类风险。比如它是赚趋势的钱还是赚波动的钱、回撤集中在什么行情里、是不是过拟合了。这一步相当于一个免费的策略诊断师。
记住这个定位:AI是加速器和检查员,不是决策者。最终承担盈亏的是你自己的账户。
2. 核心细节解析与实操要点:一套策略的完整组成
2.1 策略五要素:标的、周期、信号、仓位、风控
不管用不用AI,一套完整的量化策略必须包含五个要素,缺任何一个,回测再漂亮都是空中楼阁。
标的(选什么):股票、ETF、期货、加密货币都行,但个人建议从流动性好的品种入手。比如沪深300ETF、主流币,或者成交额排名靠前的股票。流动性差的标的一旦遇到大单进出,滑点会把你策略的利润全吃光。
周期(看什么频率):日线、小时线、分钟线。个人做日线级别是最友好的,数据容易获取、交易频率低、手续费影响小、也有足够时间思考。我做的是日线级别的趋势跟踪,一天最多交易一次,省心很多。
信号(什么时候进):这是策略的核心逻辑。常见的有均线突破、MACD背离、布林带突破、价格突破N日高点等等。需要注意,信号要写成明确的条件,不能有模糊地带,比如“当收盘价突破过去20日的最高价时买入”,这就是一个可执行的信号;而“当感觉要突破时买入”,这就不是信号,是玄学。
仓位(买多少):固定仓位、百分比仓位、凯利公式仓位。个人最建议用固定百分比仓位,比如每次动用总资金的20%,这样简单可控,不会因为某次重仓失误导致心态崩盘。
风控(什么时候跑):设置止损和止盈规则。止损可以基于ATR(平均真实波幅)来定,这样能自适应市场波动率,而不是用固定的死数字。
我可以直接把之前做的一套针对A股ETF的日线策略框架拿出来,这套框架逻辑简单但在“数字化表达”上做得比较完整,你可以从这套模板改出适合自己的版本:
| 要素 | 配置内容 | 设计原因 |
|---|---|---|
| 标的 | 场内ETF(流动性好) | 不担心停牌、退市和个股黑天鹅 |
| 周期 | 日线 | 频率低,噪音小,适合程序化自动执行 |
| 进场 | 收盘价突破20日高点,且成交量大于5日均量 | 放量突破更可信 |
| 止损 | 进场价减2倍ATR | ATR适配波动,波动大止损宽,波动小止损紧 |
| 仓位 | 单次投入总资金的20% | 单次亏损不超过总资金约1% |
这套东西不复杂,但它就是一套“适合普通人的量化策略”的雏形了。你不用羡慕机构,机构做的事情是把这个框架精细化到极致,而个人能把这五要素做全,就已经超过90%的手工交易者了。
2.2 “适合你”的风险偏好设计:策略要有性格
标题里那个“适合你的策略”很关键。什么叫适合你?不是收益最高,而是回撤在你睡得着觉的范围之内。
我自己测过两种策略。一种是纯趋势跟踪,年化收益40%,但最大回撤接近25%,回撤期长达半年。策略本身没问题,但我拿了不到两个月就受不了,因为每天看着账户从高点回撤12%,心态全线崩溃,最后手动干预了策略,结果操作得一塌糊涂。另一种是加入了波动率过滤的趋势策略,年化收益降到25%左右,但最大回撤控制在12%以内,回撤修复时间也短。这个策略我拿得住,执行力强,最终实际赚到的钱反而更多。
这就是“适合”的真正含义:策略的风险收益特征要与你的资金规模、心理承受能力、可用时间匹配。给你一个自查清单:
- 你能承受的最大账户回撤是多少?(比如20%?10%?5%?)
- 你的资金是一年内会用到,还是三年以上不动?
- 你有多少时间盯盘?全职还是只能每天收盘看一眼?
把这三个问题的答案写下来,这就是你的策略“人设”约束。激进型选高波动高收益逻辑,稳健型选低仓位低频次逻辑,防守型可以只做固收+打新,不用碰趋势策略。别跟风,别眼红,策略跑在别人的风险偏好上,你迟早会拿不住。
2.3 AI介入的边界:辅助优化而非盲目信任
在聊AI怎么写代码之前,必须先说清楚AI介入的边界。我见过不少人拿着回测结果去问AI“这个策略还能优化吗”,AI给了一堆建议,比如加RSI过滤、加布林带收敛条件、把移动止损改成吊灯止损,结果改完回测曲线完美得不行——但那是过拟合,一上实盘就露馅。
AI的优化建议本身没有错,问题在于它不区分“逻辑增强”和“曲线拟合”。所以你要记住AI介入的三条边界:
第一,AI辅助写代码可以,辅助设计逻辑要谨慎。策略的核心逻辑必须是你自己能理解、能解释的。你写的每一行代码、每一个条件,都要能回答“为什么”。如果AI给你的代码里有一句“当收盘价大于MA20且RSI<45时买入”,你必须能说出RSI<45这个条件是为了捕捉什么市场状态。说不出来,就是过度优化。
第二,AI辅助调参可以,但范围要锁定。比如你确定了骨架是“突破20日高点进场、2倍ATR止损”,让AI帮你在这个框架内做参数敏感性分析是可以的;让AI把进场条件从“突破20日”改成“突破25日+均线多头排列+MACD金叉+成交量放大”,这就已经是重写策略了,需要重新完整回测和验证,不能直接沿用旧结果。
第三,永远保留人工决策的否决权。我是一个一个策略地回测、实盘验证,只有在做完这些基础工作后,AI的建议才有意义。最高效的路径是:人定逻辑骨架,AI填肉(写代码、跑批量回测、生成报告),人看报告下结论。
3. 实操过程与核心环节实现:从零搭一套AI辅助的量化策略
3.1 环境准备与数据获取
先别急着写策略,把地基打牢。我的环境配置如下,你可以直接照抄:
- Python 3.9+(Anaconda发行版,省去一堆包管理烦恼)
- backtrader库(回测框架)
- pandas、numpy(数据处理)
- requests(抓接口数据)
- matplotlib(画资金曲线和K线图)
数据源这块,我试过很多免费方案,最稳定的组合是:股票和ETF行情用akshare或者tushare的免费接口,外汇和加密货币用exchange官方REST API。需要注意,免费接口可能随时失效,这恰好是AI能派上用场的地方——你可以把获取数据的代码交给AI维护,它会给你写出带重试、防限流、增量更新的完整版本。
pip install backtrader pandas numpy matplotlib akshare安装完这个命令,工作台就搭好了。一个可落地的建议:把数据做成统一的格式,也就是OHLCV(开盘、高价、低价、收盘、成交量)加上时间戳,所有策略都从这个数据集读取。这样无论你以后换数据源还是加新品种,策略逻辑都不需要大改,单独维护一个数据层就好。
3.2 回测框架选型:为什么我选backtrader
市面上个人量化的回测框架主要有三个选择:backtrader、vn.py、自研回测脚本。如果你的目标是策略验证和研究,我强烈推荐用backtrader。
原因有三点。第一,它自带丰富的指标库(均线、MACD、RSI、布林带、ATR都有),不用自己实现数学公式,省掉大量易错细节。第二,它内置了滑点和佣金的模拟,你可以设置每次成交的滑点比例、手续费比率,回测结果更接近真实。第三,它有清晰的订单和仓位管理抽象,写策略时只需要关心“什么时候买,买多少,什么时候卖”,底层撮合逻辑框架自己搞定。
唯一的坑是它的中文字资料比较散,早期版本有一些API设计上的怪癖。这时候AI就很好用了:遇到backtrader的报错,直接把完整的堆栈信息丢给AI,它通常能直接给出修正后的代码。我实测下来,这类框架类问题的修复准确率相当高,比问搜索引擎高效得多。
3.3 示例:一个完整策略的搭建与参数选择
直接上一段最精简但五脏俱全的策略代码,基于提取关键词里的“突破”和“回抽”思路来设计。这套策略的进化路线是:先做突破进场,加上“回抽失败不追高”的过滤条件,再配合ATR动态止损。你可以在本地跑通这个版本,然后替换标的和周期测试。
import backtrader as bt class BreakoutATR(bt.Strategy): params = dict( period=20, # 突破周期 atr_period=14, # ATR计算周期 atr_mult=2.0, # ATR止损倍数 ) def __init__(self): self.highest = bt.ind.Highest(self.data.close, period=self.p.period) self.atr = bt.ind.ATR(self.data, period=self.p.atr_period) self.order = None def next(self): if self.order: return if not self.position: # 进场:收盘价突破20日最高,且前一日未突破(避免追尾) if self.data.close[0] > self.highest[0] and self.data.close[-1] <= self.highest[-1]: size = self.broker.getcash() * 0.2 / self.data.close[0] self.buy(size=size) else: # 止损:当前价格低于进场价减2倍ATR stop_price = self.buy_price - self.atr[0] * self.p.atr_mult if self.data.close[0] < stop_price: self.close()这套策略的关键细节在注释里,但有几个设计逻辑我要单独展开讲,因为这是参数和步骤选择背后的核心依据。
为什么用“突破前一日没有被突破”这个条件?这是为了过滤掉连续突破的情况。一只股票如果连续三天都在创20日新高,你第一次突破就该进,第三天进场很可能就是追高接盘了。加入“前一日未突破”的回抽逻辑,是在等一个更高质量的突破点。这是从手工交易经验里转化过来的规则,也是全文关键词里“突破与回抽规则”的实际落地形态。
ATR止损为什么不是固定百分比?固定百分比止损(比如亏5%就跑)的问题是,它不考虑当前市场波动。低波动时容易被小噪音扫出局,高波动时又闪得太慢。ATR是过去14日的平均波动幅度,行情活跃时止损距离宽,震荡时止损距离窄,这样止损位永远贴合市场当时的体温。我实测过,同一套突破策略,ATR止损比固定3%止损年化收益高大约7%,最大回撤还小了4%,这是因为减少了很多无效止损。
关于“双(多)头寸策略”这个关键词,我把它理解成仓位管理的进阶:把单次20%仓位拆成两份,一份在突破时买入,另一份在回抽确认不破支撑时买入。这样如果买完就跌,第一份触发止损,第二份就不会进,损失直接减半;如果突破后回抽再确认拉升,第二份进场的成本更低,整体持仓成本被摊低,拿得更稳。这个机制在高波动品种上特别有用。
3.4 让AI辅助策略优化:四个可落地的用法
代码跑通了,回测数据也有了,接下来就是AI真正发挥价值的地方。分享四个我反复在用的AI辅助用法。
用法一:批量参数敏感性分析。backtrader自带的cerebro.optstrategy可以批量测试不同参数组合。你只需要让AI生成一份参数网格:period从10到40步长5、atr_mult从1.5到3.0步长0.5。跑完后汇聚出一张热力图,看哪些参数区间收益稳定、哪些区域一碰就崩。这个步骤能直观地看出策略是稳健还是脆弱。我统计过一个规律:稳健策略的参数平面是一个大平台,最优点周围的变化是渐进的;过拟合策略的参数平面像一根针,只有一个点特别亮,周围全是亏的。
用法二:误差回溯找执行漏洞。策略在实盘中常见的魔幻事件是:回测赚大钱,实盘亏大钱。最常见的原因是回测里用了未来数据——比如“当天最高价突破后买入”,但实际上你在盘中看到最高价时可能已经买不到了。这时候可以把策略日志丢给AI,让它逐行审计是否有“look-ahead bias”。我自己就吃过这个亏,初版策略在某根K线里用收盘价确认信号,却又假设能以当天那个突破价成交,回测收益虚高了一倍,而AI一针见血地指出了这个问题。
用法三:自动生成回测报告。把cerebro跑完的结果统计输出成表格,再让AI按“收益—风险—交易频率—最大回撤阶段”四个维度生成一份诊断说明。很多人看不懂回测报告,不是数字理解不了,而是不知道该关注什么。AI可以把冗长数字翻译成人话:本策略赚了趋势行情的钱,在震荡市中连续小亏,最大回撤集中在2022年10月到11月,原因是该期间标的处于长期横盘状态,策略反复止损。这段话比我盯着表格看半小时有用得多。
用法四:生成实盘交易日志模板与提醒脚本。把策略跑在模拟盘之后,每天需要检查是否触发信号、是否正常下单、持仓是否对得上AI生成一份日志模板,然后用Python写一个钉钉或邮件推送脚本,每天收盘后自动把当天的信号、成交、持仓发给你的手机。我用了这个方案后,出差途中也能随时掌握策略状态。
4. 常见问题与排查技巧实录:回测到实盘的四大深坑
这一节的内容是我赔过真金白银换来的,并且现在回测覆盖率很高,产生的自问自答也许值得你看三遍。
问题一:回测完美,实盘亏损——“未来函数”和“偷价”
这是99%新手会踩的第一个坑。所谓未来函数,就是策略在回测中使用了“当时还不可能知道”的数据。最常见的坑是我前面提到的“看到最高价才买入”。回测引擎是完事后看整根K线的,所以它能精准地在最高价出现的那一瞬间成交,这在现实中是不可能的,因为价格最高的一刻你根本来不及下单。AI帮我在回测框架里开启了“单根K线收盘后确认信号,下根K线开盘成交”模式,回测收益立即缩水20%,但发单逻辑才真正回到现实。这是个人开发中必须做的一道工序,省一是等出事。
排查方法很简单:把策略每一笔交易的成交时间打印出来,人工检查成交价是不是在信号K线内。如果在同一根K线内成交,99%有未来函数。
问题二:参数一多,过拟合比想象中来得更早
我最初开发策略时,手痒加了五六个筛选条件:均线多头排列、MACD金叉、RSI大于50、成交量大于均量、股价大于MA30。回测结果好得吓人,三年年化60%。然后我换了一段从未参与优化的新数据做样本外测试,年化直接变负。
这就是过拟合。解决办法是样本内/样本外划分:用前70%的数据做参数优化,然后留出最新30%的样本外数据做最终验证。样本外跑得好的策略,实盘适应性才强。其实还有更严谨的walk-forward分析,就是把历史数据按时间窗滚动训练和测试,让AI帮你跑这个流程会方便很多。策略的稳健性永远比收益率重要。
问题三:滑点和手续费,你的策略可能根本不赚钱
很多人手工算倍率时忽略手续费,但量化的每一笔都算得清清楚楚。ETF手续费万分之一到万分之三,期货有保证金和手续费,这些回测里必须设置,否则高频次策略的利润会在实盘中被摩擦“磨”光。
此外还有滑点。真实交易时,你的买单往往成交在卖一价甚至更高,卖单成交在买一价甚至更低,这个差值就是滑点。我用AI做了一次压力测试:分别用0滑点、0.05%滑点、0.15%滑点回测同样的策略,结果0.15%滑点时年化收益下降了一半。所以配置回测时,滑点往狠里设,如果狠滑点下策略还能盈利,那就说明它有真实的肌肉,实盘执行起来才踏实。
问题四:长期震荡,是策略失效还是行情不适合?
我的突破策略曾连续四个月不赚钱。当时第一反应是怀疑代码跑错了,反复检查无误后,又怀疑策略彻底失效了,差点把这套逻辑推翻重来。后来我把这个现象丢给AI分析,它指出这是典型的趋势策略空窗期,该类策略在低波动震荡市里本来就赚不到钱。
这让我下决心建了一个“市场环境过滤器”:计算标的过去60日的ATR,如果ATR处于过去一年30%分位以下,就暂停开新仓。这样一来,策略会在不适合自己的行情里自动休战,保住本金等下一波趋势。这个过滤器不是提高收益,而是减少无效交易和磨损。
把常见问题和排查手段整理成速查表:
| 症状 | 可能原因 | 排查和解决 |
|---|---|---|
| 回测收益远超预期 | 未来函数/偷价 | 检查成交时间,改次日开盘成交 |
| 换参数段后收益剧变 | 过拟合 | 样本内外分离测试,做walk-forward |
| 实盘收益低于回测 | 滑点/手续费低估 | 提高滑点参数重新压测 |
| 长期小亏不赚钱 | 策略与市场状态不匹配 | 引入市场环境过滤器,识别震荡市 |
| 信号频繁触发 | 周期过短/参数过敏感 | 降到日线级,降低交易频率 |
5. 从回测到实盘:策略落地的完整迭代路径
5.1 学会看回测报告,而不是只看总收益
回测跑完,很多人只盯着“三年赚了80%”,然后兴奋地准备上真钱。我强烈建议你把回测报告里的这几个指标打出来贴在屏幕上,时刻提醒自己。
第一个是最大回撤。这是策略从高点到低点的最大亏损幅度。回撤50%意味着你得涨100%才能回到原点。前面说过,我个人能接受的上限是20%,所以我的策略设计里每一个环节都在围绕“尽量压低回撤”做文章。
第二个是Calmar比率(年化收益/最大回撤)。这个比率越高,说明你每承担一单位回撤风险,换来的收益越高。我个人标准是策略Calmar不低于1.5才有实际操作价值。如果年化30%、最大回撤20%,Calmar就是1.5,这还在及格线附近。
第三个是交易次数。回测要跑足够多的交易次数才有统计意义。三个月只有5次交易的回测结果是没有参考价值的,偶然性太大。这也是我坚持用日线、数据量尽量大的原因,至少要有100次以上交易样本,结论才勉强可信。
5.2 模拟盘跑起来:三个月是最低门槛
验证策略有一个不能跳过的阶段:模拟盘。挂着模拟盘,每天收盘后看信号是否正确触发、持仓是否正常管理、佣金滑点是否符合预期。这个阶段检验的不是策略赚钱能力,而是代码执行力。我遇到过最离谱的问题是,某个交易日数据源拉取失败,导致策略直接跳过了当天信号,第二天才发现;还有过服务器时间时区不对,导致下单时间偏离原计划的低级错误。这些问题不通过真实节奏跑一遍,盘中根本发现不了。
模拟盘建议至少跑足三个月,涵盖至少一次完整的止损和一次完整的止盈流程。三个月后如果代码执行零大错、结果与回测偏差在可接受范围内,再考虑上实盘小资金。
5.3 小资金起步:在实盘里继续参数微调
实盘我建议先用总资金的5%起步,不多不少。资金太少了你会不当回事,操作稀里糊涂;太多了心理负担重,容易手动干预策略。5%是一个能让你认真对待但不会伤筋动骨的量级。
实盘阶段要做的事是三件:第一,每日核对订单执行价与策略信号价之间的偏差,积累真实滑点数据;第二,连续记录每周的实际资金曲线与实际回撤,与回测对照;第三,遇到实盘特有的事件(除权除息、停牌、流动性骤降)记录日志。做完这些,你对这个策略的执行层面就有了完整的认知,这时候才有资格讨论要不要加仓资金量。
我个人的一个体会是:实盘前三个月收益略低于回测是正常的,因为实盘情境里往往叠加了行情变化和滑点保密性;如果收益大幅跑赢回测,那才要回头检查你是不是哪一步偷偷加了未来函数。
5.4 持续迭代:把验证过的改动写进下一版
量化策略不是一个做完就一劳永逸的东西。当策略在市场环境切换后表现明显退化,你需要一套标准化的迭代流程,防止自己陷入主观改动的泥潭。
我的做法是这样的:手里永远有一个“当前稳定版策略”,任何新思路都先在历史数据上做回测,再丢到模拟盘跑一个月。模拟盘跑出新版胜率盈亏比确实优于旧版后,再替换成实盘版本,并且循序渐进。这样既保证策略不断进化,又不会因为某次心血来潮的改动导致本金受损。
我最后想再次强调:AI时代最大的红利,不是算法本身,而是它把这种“持续迭代”的成本降到了极低。放在三年前,一个个人想完整走通“策略设计—代码实现—回测验证—参数优化—模拟盘—实盘落地”这条流水线,至少需要一个星期来写代码、调框架、修Bug。而现在,用AI辅助,我周末两天就能把一个新想法从零变成一套有完整回测报告的可运行策略。这,才是我们普通人能实实在在吃到的那块红利。
如果你准备开始做自己的第一套量化策略,我建议就从今天这一篇里的突破+ATR止损模板开始,先把环境跑通,把一个策略从回测到模拟盘完整走一遍。走完一遍之后,你自然会知道下一步该调哪里、加什么过滤条件。量化最大的门槛不在技术,在于你能不能坚持用数据和规则做决策,而不是用感觉和情绪。