
1. 为什么现在聊个人量化这件事时机真的不一样了三年前我跟朋友说我自己写策略跑ETF对方第一反应是你有多少资金量没个几百万做量化不是开玩笑吗。这个反应在当时完全合理——传统量化团队要养数据源、养服务器、养研究员一套像样的回测框架搭起来光数据清洗就能耗掉一个人两个月。个人想进场门槛高得离谱。但这两年情况变了。变化的核心不是量化变简单了而是写代码这件事本身的成本被AI压到了地板。以前你脑子里有个策略想法从想法到能跑的回测代码中间隔着一整套工程能力数据接口怎么接、复权怎么处理、滑点怎么建模、信号怎么对齐。现在这些环节里有相当一部分可以让AI帮你起草你负责判断和修正。这就是标题里说的红利——不是量化本身变容易了而是从想法到可执行代码的转化效率被AI拉高了一个数量级。我自己的路径很典型最早用Excel手动算均线后来学Python写pandas再后来用backtrader搭框架中间踩过的坑能写一本书。现在回头看如果当初有AI辅助至少能省掉一半的试错时间。所以这篇不是教你AI一键生成赚钱策略——那种东西不存在——而是把我这几年从零搭一套个人量化策略的完整思路拆开告诉你哪些环节AI能帮上忙、哪些环节必须自己扛、以及最容易翻车的地方在哪。适合谁看有基础Python能力、对ETF或股票有基本认知、想用业余时间跑一套自己策略的人。如果你完全没写过代码也能看懂思路但落地时需要先补Python基础。全文围绕量化、AI辅助编码、策略设计、ETF回测这几个核心点展开不涉及任何具体平台的推荐。2. 个人量化的真实边界先搞清楚你能做什么、不能做什么2.1 个人和机构拼的不是同一个东西很多人一上来就想做高频、做套利、做多因子选股这是典型的定位错误。个人量化的优势从来不是速度、不是数据广度、不是算力而是灵活性和耐心。机构要管几十亿资金策略容量是硬约束很多小容量但稳定的策略他们看不上个人管自己的钱几万到几百万的容量完全够用反而能捡机构不要的机会。具体来说个人能做的方向大致三类ETF轮动类在几个宽基或行业ETF之间按动量、波动率等指标切换。容量大、流动性好、不用选股最适合入门。择时类对单一标的做仓位管理比如均线系统、波动率目标。逻辑简单但参数敏感容易过拟合。低频多因子月度或周度调仓用估值、质量、动量等因子选一篮子股票。工程量大但容量和稳定性都不错。不能碰的日内高频拼不过机构、需要另类数据的策略拿不到数据、依赖极低延迟的套利硬件跟不上。认清这条线能省掉大量无用功。2.2 一套策略的最小可行结构不管什么方向一套能跑的策略至少包含五个模块我用一张表说清楚每个模块干什么、个人最容易在哪翻车模块作用个人常见翻车点数据层获取行情、复权、对齐复权处理错误导致信号失真信号层根据规则生成买卖信号用了未来数据回测虚高仓位层决定买多少、怎么分配满仓单标的回撤扛不住回测层模拟历史表现忽略滑点和手续费执行层实盘下单与监控回测和实盘逻辑不一致这五个模块里数据层和回测层是AI最能帮上忙的地方——因为它们是工程活有标准答案而信号层和仓位层是策略的灵魂必须你自己想清楚AI只能帮你实现不能帮你决策。2.3 关于量化泄露未来信息这个高频坑热词里出现了量化泄露未来信息这其实是个人量化最隐蔽也最致命的错误。什么叫泄露未来信息简单说就是在计算某个时间点的信号时用到了那个时间点之后才知道的数据。举个最常见的例子你想用过去20日均线判断今天是否买入。如果你写代码时用了df[close].rolling(20).mean()然后直接和当天收盘价比较看起来没问题。但如果你在收盘前就要下单那当天的收盘价你根本不知道——你用了未来数据。正确做法是用shift(1)把信号延后一天或者用开盘价执行。更隐蔽的财务数据有披露延迟你用了报告期的数据但没考虑实际公布日期指数成分股会调整你用了当前成分股回测历史。这些坑AI不一定能主动帮你避开因为AI不知道你的数据实际可得时间。判断数据可得性这件事只能你自己扛。3. AI在量化开发里到底能帮到什么程度3.1 把AI当成懂pandas的实习生而不是策略大师我用AI辅助写量化代码有一段时间了最大的体会是它的定位应该是执行你明确指令的编码助手而不是替你想策略的顾问。你让它帮我写一个ETF动量轮动策略它给你的代码大概率能跑但里面的参数、逻辑细节、边界处理都是它猜的未必符合你的意图。正确的用法是拆解任务。比如你要实现计算每个ETF过去60个交易日的收益率选最高的持有每20个交易日调仓一次这个描述足够具体AI能给你一份结构清晰的代码。然后你再逐段检查收益率算法对不对、调仓日怎么定义、空仓期怎么处理。我一般这样组织对话先让它写数据获取和清洗的骨架我确认数据格式再让它实现信号计算我检查有没有未来函数最后让它写回测循环我核对交易成本和执行逻辑每一步都自己过一遍比一次性生成一大坨然后debug要高效得多。3.2 代码生成之外AI真正省时间的地方除了写代码AI在几个环节的价值被低估了第一解释报错。回测跑出来一堆NaN或者收益率曲线诡异把报错和上下文贴给AI它往往能指出是数据对齐问题还是索引错位。这比翻Stack Overflow快。第二代码审查。把自己写的信号函数贴给AI问这段代码有没有用到未来数据它经常能揪出你自己没注意的shift缺失。当然它也会误报需要你判断。第三参数敏感性分析的脚手架。你想测试不同均线周期组合让AI写个循环框架几分钟的事。第四文档和注释。策略跑通后补注释、写说明AI能帮你把逻辑描述清楚方便以后自己回看。但有一条红线AI生成的任何涉及资金操作的代码必须逐行看懂再用。我见过有人直接把AI给的实盘下单代码接上账户结果因为一个符号错误导致重复下单。回测代码出错顶多浪费时间实盘代码出错是真金白银。3.3 一个具体的协作示例动量轮动信号假设我要实现一个简单的动量信号我的提示词会这样写我有一个DataFrameindex是日期columns是各ETF的收盘价。 请帮我计算每个交易日每只ETF过去60个交易日的累计收益率 然后选出收益率最高的那只输出一个Series表示每日持仓标的。 注意计算收益率时不能包含当天数据信号要能用于次日开盘执行。这个描述里我明确了三件事数据结构、计算逻辑、不能包含当天数据。最后这条是关键如果不说AI很可能直接用当天收盘价算导致未来函数。它给我的代码大概是这样def momentum_signal(prices, window60): # 计算过去window日的收益率shift(1)确保不含当天 returns prices / prices.shift(window) - 1 # 信号延后一天用于次日执行 signal returns.shift(1) # 选出每日收益率最高的标的 holding signal.idxmax(axis1) return holding这段代码逻辑是对的但有几个细节要自己确认shift(window)和shift(1)的组合是否符合你的调仓时点定义、idxmax遇到全NaN时怎么处理、停牌日的数据怎么对齐。这些AI不会主动帮你想到得靠你对数据的理解去补。4. 从想法到能跑的策略一套ETF轮动的完整落地过程4.1 数据准备复权和对齐是两座大山ETF数据相对干净但有两个坑必须处理。复权问题。ETF会分红分红当天价格会跳空。如果你用未复权价格算收益率会把分红当成下跌信号完全失真。大部分数据接口提供前复权或后复权价格回测一律用后复权——前复权会随着新分红不断调整历史数据导致每次回测结果都不一样没法复现。对齐问题。不同ETF的交易日历可能不完全一致比如某只ETF某天停牌。如果你直接做矩阵运算停牌日的NaN会污染整个信号。处理方式有两种一是用ffill前向填充假设停牌期间价格不变二是直接剔除该日但这样会导致持仓标的临时缺失。我一般用前向填充同时在信号层加一个该标的近5日有成交的过滤条件。数据获取这块AI能帮你写接口调用和清洗代码但数据源的选择和字段含义必须自己搞清楚。不同接口的复权方式、时间戳时区、字段命名都不一样这些细节AI不知道你用的是什么只能你自己核对。4.2 信号设计简单往往比复杂更稳我试过很多信号最后发现对个人来说简单信号严格风控的组合长期表现不比复杂模型差而且更容易理解和维护。以动量轮动为例核心逻辑就一句话持有近期表现最好的标的。但近期和最好怎么定义有讲究回看窗口太短如5日噪音大太长如250日反应慢。60到120个交易日是常见区间我一般用60日和120日双窗口两个都排前列才买。排序指标可以用累计收益率也可以用夏普比率或波动率调整后收益。后者在震荡市更稳。调仓频率日度调仓交易成本高月度调仓反应慢。周度或双周度是折中我倾向双周。这里有个经验不要用单一窗口。单一窗口的策略在参数微调下表现差异巨大说明它过拟合了。用双窗口或加入波动率过滤能显著降低参数敏感性。4.3 仓位管理决定你能不能活下来信号决定买什么仓位决定买多少。个人最容易犯的错是满仓单标的——信号说买A就全仓A一旦A暴跌回撤直接击穿心理防线。我的做法是波动率目标仓位根据标的近期波动率动态调整仓位波动大就少买波动小就多买。具体公式目标仓位 目标波动率 / 标的近期波动率比如目标年化波动率设15%某ETF近期年化波动率30%那仓位就是50%。这样能让组合的整体波动保持相对稳定回撤更可控。再叠加一个最大回撤止损组合从高点回撤超过某个阈值如15%强制减仓或空仓等信号重新转好再进。这个规则在趋势策略里特别有用能避开大熊市的主跌段。仓位管理这块AI能帮你写计算代码但阈值设多少、止损怎么触发必须结合你自己的风险承受能力。别人能扛20%回撤不代表你能扛这个只有自己知道。4.4 回测把交易成本算进去结果才可信回测最容易自欺欺人的地方就是忽略成本。ETF交易有佣金虽然很低但不是零、有买卖价差、有冲击成本。日度调仓的策略如果不算成本回测收益能虚高一大截。我的回测里固定加这几项单边佣金按万分之几算具体看你的券商滑点按成交价的千分之一到千分之二估算调仓日信号生成后次日开盘执行不用当天收盘价加完这些很多看起来很美的策略收益会腰斩但这才是真实情况。回测收益打七折还能接受的策略才值得考虑实盘。回测框架我用backtrader比较多它的优点是事件驱动、逻辑清晰、容易扩展。AI对backtrader的API很熟能帮你快速搭起策略类、写analyzer、加自定义指标。但backtrader的学习曲线有点陡新手可以先从纯pandas手写回测循环开始理解每一步在干什么再迁移到框架。5. 那些让我亏过时间幸好没亏钱的坑5.1 过拟合回测越漂亮越要警惕我做过一个策略回测年化30%、最大回撤8%曲线平滑得像画出来的。兴奋了三天实盘跑了两个月亏了6%。回头一看参数是在特定历史区间调出来的换一段数据就崩。过拟合的典型特征参数特别多、回测区间特别短、收益曲线异常平滑、对参数微调极度敏感。判断方法很简单把策略放到没调过参的时间段跑一遍。如果表现大幅下滑基本就是过拟合。防过拟合的实用手段参数越少越好、逻辑越简单越好、样本外测试必须做、多市场多品种验证。AI能帮你快速做参数扫描但扫描出来的最优参数往往是最过拟合的这点要清醒。5.2 回测和实盘不一致魔鬼在细节里回测用收盘价成交实盘可能只能按次日开盘价回测假设全额成交实盘可能因为流动性不足只成交一部分回测用后复权价格实盘账户看到的是实际价格。这些差异累积起来能让实盘和回测差出好几个点。我的做法是回测尽量贴近实盘用次日开盘价执行、加流动性约束单日成交量不超过标的日均成交量的1%、用实际价格而非复权价格计算持仓市值。这样回测会难看一些但和实盘更接近。5.3 数据源的坑免费的最贵早期我用免费数据源遇到过复权因子错误、停牌日数据缺失、时间戳时区混乱等各种问题。有一次策略信号突然全乱查了半天发现是数据源某天返回了错误的价格。数据质量是量化的地基地基不稳上面盖什么都是危房。建议用之前先做数据校验——检查价格是否有异常跳变、复权因子是否连续、交易日历是否完整。这些校验代码AI能帮你写但发现异常后怎么处理需要你判断是数据错误还是真实行情。5.4 心理关策略失效时你扛不扛得住这是最容易被忽略但最致命的一关。任何策略都有失效期连续几个月跑输基准是常态。这时候你会怀疑策略、想改参数、想换标的——而这些冲动操作往往让情况更糟。我的经验是策略上线前就想清楚什么情况下该停。比如连续6个月跑输基准、或者回撤超过历史最大回撤的1.5倍就暂停检查。把这个规则写下来到时候按规则执行而不是凭感觉。AI帮不了你这关这是认知和纪律的问题。6. 给想入场的你几条实在建议如果你现在想开始我的建议是按这个顺序来别跳步第一步先用模拟盘或纸面交易跑三个月。不投真钱就按策略信号记录买卖看看实际执行和回测差多少。这一步能暴露大量工程问题。第二步小资金实盘。用你亏光了也不影响生活的钱跑半年。重点不是赚钱是验证策略在真实环境下的表现和心理承受度。第三步逐步加仓。只有前两步都验证过了才考虑加大投入。而且加仓也要分批别一次到位。关于AI的使用我的态度是把它当成效率工具不是决策工具。它能帮你写代码、查bug、做分析但策略逻辑、风险控制、资金管理这些核心决策必须你自己负责。AI不知道你的风险偏好不知道你的资金状况也不知道市场什么时候会变。最后说个我自己的体会个人量化最大的敌人不是市场是频繁改策略。我见过太多人策略跑了两周不赚钱就换换来换去手续费交了一堆一个都没跑透。一套逻辑清晰的简单策略坚持跑一两年大概率比不断折腾的复杂策略表现好。AI能帮你更快地实现想法但耐心这件事它替不了你。