明天就是量化公开课开讲的日子。标题里那句“打开量化大门之后第一步怎么走”大概戳中了不少人的真实状态资料存了一堆工具装了不少代码也能照着抄几段但真要说清“接下来先做什么”反而被卡住了。这篇文章想解决的就是这个问题——在你听完公开课、或者说刚开始接触量化的头两周第一步到底应该迈到哪儿以及为什么这步棋能决定你未来三年在量化这条路上走得顺不顺。这篇内容不是写给已经在跑实盘的交易员而是给两类人看的一类是刚听完公开课、准备认真入门的编程背景同学另一类是懂点金融、但代码能力还很薄弱的投资爱好者。无论你属于哪一类只要愿意花两周时间把下面这套“最小闭环”走通你对量化的理解就会和我刚入行那会儿有质的不同。1. 打开量化大门之后为什么要先想清楚“第一步”1.1 量化不是“学代码”是“搭系统”很多人对量化有个误解觉得第一步就是把Python练熟或者把一个策略模型看懂。实际上量化投资是一个系统不是单个策略。一套完整的量化体系包含数据获取、信号生成、风险控制、执行撮合、绩效归因这些环节任何一个环节掉链子整体结果都会变形。我习惯用一个类比来解释这件事学量化就像学做菜背菜谱和会开火完全是两码事。你把《随园食单》倒背如流不如亲手做一碗西红柿炒蛋。量化也是这样第一步不应该是背一百个指标公式而是用一个最简单的方法——哪怕是双均线这种被讲烂的策略——把“数据到结果”这整条流水线跑通。等这条流水线通了你之后想加估值因子、加机器学习模型都只是往轨道上挂新车厢而已。这里要注意我说的“跑通”不是指在商业平台上点个按钮出个结果而是指你的电脑本地能从原始数据开始完成清洗、信号计算、回测统计这一整套动作。这个过程会别扭、会报错但恰恰是这些别扭和报错才是量化能力的真正起点。1.2 三种最容易出错的开局方式这几年我带过不少新人发现开局踩坑的路径几乎可以用三句话总结清楚。第一种是“资料囤积型”收藏夹里塞满了策略拆解、大佬访谈、课程录播看起来学习量很大实际上连一行代码都没在本地跑通过。第二种是“工具依赖型”一上来就装商业量化终端策略被封装成“点几下鼠标出结果”的黑盒平台一旦升级或账号到期研究体系直接归零。第三种是“模型冒进型”第一次回测就上Transformer、LSTM数据量不够、特征工程没做跑出来的曲线漂亮得吓人拿到样本外一测就现原形。这三种开局方式本质上都是绕开了“用最小闭环建立手感”这一步。前面两种会让你的量化始终停在“看客”心态后面一种则会让你在错误的路径上用错误的工具反复撞墙。我见过好几个新手在这样三个岔路口耗掉两三个月最后得出“量化不适合我”的结论其实不是量化不适合他是他第一步就没走对。1.3 第一步的影响范围比你想的更深远为什么说第一步能决定未来三年因为这一步不只是选语言、选工具的问题它会在无形中塑造你的研究习惯。比如你从一开始就养成了“每次回测都扣手续费”的习惯以后实盘就不会被成本击穿你养成了“每次修改参数前先保存旧结果截图”的习惯策略出问题时就能快速定位是哪个变更造成的。再往大了说第一步决定了你看待量化世界的坐标系。如果你是从数据清洗入手的你天然会对“数据质量是地基”有敬畏心如果你是从策略逻辑入手的你会更重视信号背后的经济学解释。这些认知一旦形成很难被后期课程扭转。所以这篇文章虽然聊的是“第一步”但它辐射到的是你未来读研报、选数据源、跟同行交流时的判断力。2. 公开课之后的第一周冷启动路线图2.1 先跑通本地的Python量化环境第一周的第一天目标只有一个让电脑变成一台能独立完成数据分析的机器。我建议新手统一选Python原因不是其他语言不行而是生态。量化行业里大部分开源项目、研究样例、教材都默认Python你遇到问题时能搜到的答案数量级完全不一样。具体操作上我推荐先装Miniconda而不是直接装官方Python发行版因为Miniconda自带环境管理能力你可以给量化单独开一个环境避免以后依赖冲突把系统搞乱。环境安装好后需要配置的库包括pandas、numpy、matplotlib用于数据处理和图表akshare或tushare用于获取行情数据backtrader或vectorbt用于回测。不要一次性装满满一桌菜先把核心的几个装好就够了。无论你选了哪个库我都不建议一上来就研究它的全部功能。你只需要做到一件事用pandas读一段日线数据算一下收盘价的均值画一张收盘价走势图。这就算第一天任务完成。提示数据源接口经常有变动如果某个接口突然报错不要慌优先查看对应库的官方文档更新日志这是新手最容易忽略的排查途径。2.2 用十分钟写一个双均线策略环境跑通之后第二天就可以写第一个策略。我选双均线作为起点是因为它足够简单逻辑透明所有产出都能用手工推演的方式验证。代码示例大概长这样import pandas as pd def ma_cross(df, short5, long20): df df.copy() df[ma_short] df[close].rolling(short).mean() df[ma_long] df[close].rolling(long).mean() df[position] 0 df.loc[df[ma_short] df[ma_long], position] 1 df[position] df[position].fillna(0) return df df pd.read_csv(your_daily_data.csv, parse_dates[date]) result ma_cross(df) print(result[[date, close, ma_short, ma_long, position]].tail(20))这个代码只是用来理解“信号是怎么算出来的”它没有成本、没有滑点、没有成交时点所以绝对不要把它当作可实盘的策略。你要做的事是观察输出里position从0变成1的那几行手动想一想假设我在这一天收盘后确定了信号那么我最早能在什么时候成交这一步看似简单其实是在帮你建立“信号”和“成交”的区别这个区别是后面所有回测坑的根源。2.3 把数据质量当作第一步的生死线第一周最容易被忽略但最应该花时间的地方是数据质量。很多教程都默认你拿到的数据是“干净”的但实际情况根本不是这样。我用日线数据举例你至少要检查三件事第一是否存在未来数据比如把当日收盘价计入了当日信号这等于让策略提前看到了答案第二日期序列是否有重复或者缺失尤其是除权除息、停牌导致的空档第三价格序列是否因为复权方式不一致出现跳空。前复权、后复权、不复权三种数据算出来的均线完全不同你在回测里选错一个整个结果就是废的。一句话不干净的数据比没数据更危险。因为垃圾数据会让你的策略曲线看起来“很有逻辑”但那个逻辑只在错误的数字上成立。如果你拿到的数据有异常宁可直接丢掉那段样本也不要修改数据去迁就策略。2.4 构建一个极简回测统计模块先不急着接触夏普比率、索提诺比率这类进阶指标。第一周你只需要盯住四个数字累计收益率、最大回撤、交易次数、胜率。这四个数字足够你判断一个简单策略的真实轮廓。你可以自己写一个简单的统计函数也可以先用现成的回测框架里自带的绩效模块。我个人的建议是第一周自己手写因为手写一遍能让你真正理解回撤是怎么算出来的。最大回撤的定义是从一个峰值到后续谷底的最大跌幅这个定义看起来简单但代码里要处理多个峰谷的嵌套关系新手很容易写错。手写完后再把你写的统计结果和现成框架的输出做对比。如果结果一致说明你的理解到位了如果不一致那就去查框架的文档看看它用了哪种具体的统计口径。这个“对比—找差异—搞懂为什么”的过程比直接调用一套黑盒接口有价值得多。3. 新手必看策略回测阶段的五个致命陷阱3.1 未来函数让策略提前“剧透”“未来函数”是新手最容易犯、破坏力也最强的错误之一。表现就是回测里收益曲线完美得像作弊实盘一跑立刻露馅。本质原因是你在回测中使用了当时根本拿不到的信息。最简单的例子用当天收盘价计算均线然后假设当天收盘就以这个价格成交了。表面上看只差几个小时但收盘前的价格移动和收盘价往往存在系统性偏差。更隐蔽的例子是用未来一段时间的收益去排序选股这在截面选股回测中特别常见。正确的做法是信号计算只用t时刻已经发生的数据信号产生后的首个可交易时点放在t1时刻。至于成交价格保守一点用t1的开盘价或者用t时刻收盘价加一个滑点估计值。这个规则必须刻进肌肉记忆。3.2 忽略交易成本收益数字看起来很美好第二个高频陷阱是成本模型缺失。很多新手看到回测年化50%就兴奋结果一算手续费、滑点和冲击成本真正落袋的数字可能是负数。交易成本其实包含三块显性费用佣金、印花税、执行滑点下单价格和预期价格之间的差异、冲击成本你自己的订单推高了价格。对日线级别策略单边成本按万2.5到千1估算都不算过分双向收费。换手率越高的策略对成本越敏感。一个实用技巧把成本参数留成变量回测时可以来回调整。如果策略在零成本和千1成本下表现差异巨大说明这个策略的逻辑依赖的是极短期的价格波动它在实盘中的稳定性会很差。3.3 过拟合你拟合的是历史噪音第三个坑叫过拟合。新手调参数有个通病总想找到一套让历史曲线最完美的参数组合。这个行为的本质不是在找规律而是在让模型背历史答案。历史中那些异常波动、偶然事件都被当成了规律去拟合样本外一测立刻失效。解决办法不复杂减少参数数量如果策略只有一两个参数就别硬把它扩成八个固定参数跑完后再做样本外测试不要边测边调更进阶的做法是时间序列交叉验证把样本切成多段分别测试。一个简单策略靠两个固定参数能稳定跑出说得过去的收益比一个复杂策略靠八个参数完美拟合历史要健康得多。3.4 把回测结果当实盘收益心态崩盘的前奏回测和实盘之间还有一道绕不开的鸿沟幸存者偏差。你用的股票池如果是“今天还在”的指数成分股那么过去十年里被剔除的股票就自动被忽略掉了这会系统性高估策略的真实表现。再叠加前面说的成本问题、滑点问题、涨跌停限制和资金容量回测的数字天然比实盘乐观。我给自己定的规矩是在心理上把回测收益先打八折然后拿出一笔不影响生活的小资金实盘验证一个月。用真金白银的“痛感”来学习风控比看一百篇文章都有效。不要一开始就幻想回测曲线能原样复现在实盘上这个认知晚一点建立学费就多交一点。3.5 用机器学习“炫技”而忽略基础逻辑现在不管什么场合都有人聊深度学习量化但这对新手来说几乎是个陷阱。深度学习需要更长的数据链、更复杂的特征工程、更扎实的工程部署能力而且模型解释性差。你用三个月的精力训练一个黑盒网络最后可能还不如一个简单的估值因子有效。我特别认同一句话策略的本质是捕捉市场的某种无效性。如果你说不清自己的策略在赚谁的钱、靠什么逻辑赚那么这个策略无论回测多漂亮都只是随机拟合的产物。第一步阶段先学会问自己“这个策略背后的经济学逻辑是什么”比学会一百种模型调用方式更重要。3.6 常见问题速查表症状可能原因排查方向回测收益高、实盘亏损严重未来函数或成本设置过低检查信号产生与成交时点加入成本和滑点模型曲线前期平稳、后期突然暴跌数据缺失或复权方式错误按交易日历检查样本区间核对除权除息事件参数微调后收益“断崖式”改善过拟合拉长样本外测试区间减少参数数量策略换手率极高、收益不稳定信号噪音过多检查信号重叠度考虑增加持仓最短时长限制4. 从公开课到第一个可运行策略14天行动清单4.1 第1天跑通最小环境目标很简单Python、pandas、matplotlib能正常工作并且画出一张包含收盘价和成交量的K线图。完成动作是下载20支股票的日线数据至少覆盖最近三年。第一天没必要碰任何回测框架。先解决数据从哪里来、怎么存到本地、怎么读进内存的问题。如果你在这一步遇到接口报错多翻官方文档如果连文档也解决不了看看是不是接口字段变化了。我推荐的自然做法是把原始数据缓存到本地CSV或Parquet文件以后每次研究都用本地文件而不是每次重新从接口拉取又快又稳。4.2 第2-3天清洗数据并复现一个简单策略这两天的目标是把双均线策略在历史数据上跑通并打印每一笔交易的成交日期、成交价格和单笔收益率。重点不在策略本身而是理解“信号”和“成交”在时间上的错位。有一个笨但有效的练习拿出最近三笔交易用Excel手工推演一遍再和代码输出对比。如果两者对不上说明你对代码的理解有偏差。这一步会有点枯燥但它能把回测流程里的每一环都烙在你脑子里。新手往往不愿意做这种笨功夫但真正坚持下来的人后面读别人策略代码时会快得多。4.3 第4-7天搭建个人策略研究模板从第四天开始整理自己的回测脚本模板。模板至少包含四个部分数据读取、信号计算、回测循环、绩效统计。你可以把前三天写的零散代码重构进去做成一个可复用的框架。这个模板不需要功能齐全能覆盖“读取—计算—回测—统计”四个环节就够了。以后每研究一个新策略只需要改数据和策略函数其他的东西复用。做一个自己的模板比去研究任何商业框架的内置模板都重要因为你完全知道每一步在干什么遇到问题也能定位。这份模板会成为你后续所有研究的地基。4.4 第8-14天实战演练与复盘日志第二周的任务是用模拟盘或小仓位实盘运行两周。不要追求收益只做两件事记录信号、执行交易、更新交易日志每天记录持仓、信号、操作原因、情绪变化做成一个简单的日志表格。日志看起来和策略无关但它其实是量化能力的重要组成部分。原因在于量化的价值不在于每次预测都对而在于整个流程可重复、可验证、可纠错。没有日志你就无法复盘“昨天为什么没按计划执行”有了日志你就能像一个旁观者那样审视自己的交易行为。连续记录两周你会发现很多自己从没意识到的行为模式这些观察比任何策略参数都对后续成长更有价值。5. 给新手的几个进阶建议与资源选型5.1 编程语言与工具选型再确认再展开说一下语言选择。普通个人研究者Python生态足以覆盖从研究到半自动化交易的全链路pandas做数据处理、numpy做数值计算、scikit-learn做机器学习、backtrader和vectorbt做回测链条完整且资料多。C只有在做极高频交易或交易系统的极低延迟优化时才值得进入视野——那不是大多数人第一阶段该考虑的事。回测框架方面如果只想快速验证逻辑vectorbt的向量化计算会非常快如果想更精细地控制成交逻辑、滑点和手续费backtrader的灵活性更好。但无论选哪个框架都要记住它只是个工具你脑子里对策略逻辑、数据流、风险约束的理解才决定了输出结果的可靠性。5.2 从哪里找数据怎么选数据源国内可用的免费数据源里akshare覆盖的接口非常广tushare提供的数据结构化程度高baostock在稳定性上也有不少支持者。如果未来需要专业级数据可以考虑Wind、Choice这类商业终端但费用不低适合有预算支撑或者研究需求非常严格的情况。对新手来说首先要避免的是手工下载Excel数据来做研究一旦标的多、时间长你会在文件管理上崩溃。更合理的路径是写一个简单的下载脚本把数据按统一格式缓存到本地。字段统一成date、open、high、low、close、volume这一套以后研究多个策略时会省很多麻烦。5.3 学习资源别囤课去啃文档入门阶段真正值得读的书籍中文可以先看《打开量化投资的黑箱》它更多是帮你在宏观上建立量化行业的心智地图实操方面可以配合《Python金融大数据分析》它偏代码和工程化两者搭配起来比较合理。但我想重点说的是官方文档。pandas的“10 minutes to pandas”是必读回测框架自带的官方notebook就是最好的教材。GitHub上找star高的项目也没问题但正确的打开方式是带着问题看源码复现其中的一个小功能把它跑通而不是从头到尾读完整份代码。只读不写代码永远是别人的。还有一个很多教程不会提的细节很多开源项目会把论文或思路整理在README里但实际代码会因为数据口径、市场结构不同和原文有出入。不要盲目相信任何开源策略的收益数字你要自己复现一遍、自己测算一遍才开始考虑信任它。我个人带了那么多新人的体会是能在量化路上走远的人往往不是一开始就找到“圣杯策略”的人而是愿意把最无聊的数据清洗、日志记录、参数存档这些基本功做成习惯的人。如果你明天就要听那场公开课建议你带着一个问题去听听完之后我想完成的第一个最小闭环到底是什么带着这个问题去你的收获会在听完课之后继续发酵。最后再分享一个我自己吃过亏的小技巧每次修改策略参数之前先把上一次的结果截图或者存成一个带时间戳的文件。不然你会很快在调参的路上越走越远最后完全想不起来自己是从哪个版本开始偏离的。