量化炒股入门:把凭感觉买卖变成用系统做决策(阮一峰风格)

量化炒股入门:把凭感觉买卖变成用系统做决策

本文仅供学习交流,不构成投资建议。

引言

很多人第一次听到「量化炒股」,脑子里浮现的画面大概是这样的:好几块屏幕,上面跳着各种数字,一段程序在自动买卖,钱源源不断进账。

这个想象不算完全错误,但它把最重要的东西遮住了。

量化的核心,不是「神秘算法」,也不是「全自动赚钱」。它做的事情其实很简单:把你原来模糊的、凭感觉的交易决策,变成一套写得出来、测得过去、改得了的规则。

在 A 股的官方定义里,这叫「程序化交易」——通过计算机程序自动生成或下达交易指令。证监会的相关规定已于 2024 年施行,沪深交易所的实施细则也已落地。深交所细则明确写了,个人投资者也可以进行程序化交易。

换句话说,量化不是灰色地带,而是一种有明确规则和合规要求的交易方式。

学量化的第一步,不是去找「胜率最高的指标」,也不是搜「年化 80% 的神策略」,而是先建立一个基本认知——

量化不替你思考。它只是逼你把思考写清楚。

你原来凭感觉做的判断,在量化里必须变成明确的条件表达式。你原来靠「应该没事」硬扛的亏损,必须变成事先定义好的风险阈值。量化不是「更聪明地猜」,而是「更严格地执行」和「更诚实地检验」。

一、量化炒股到底是什么

把交易拆开来看,它其实就是一串连续的决定:

  • 买什么?
  • 什么时候买?
  • 买多少?
  • 什么时候卖?
  • 亏多少停?
  • 赚多少走?
  • 什么时候该空仓?
  • 什么时候该降低仓位?

主观交易者通常是看到行情之后,临时做这些决定。量化交易者则是提前把这些问题回答好,然后用规则和程序去执行。

一个例子

假设有一个主观交易者说:「这只 ETF 最近走势不错,感觉要突破了。」

这句话听上去像判断,但仔细一想,它其实没有提供多少有用信息。什么叫「走势不错」?什么叫「要突破」?突破到什么程度算成立?回落多少算失败?仓位该放多大?第二天低开怎么办?

这些问题没有答案的话,所谓「交易逻辑」其实只是情绪和印象的混合物。

量化做的第一步,就是把这种模糊语言翻译成明确规则。比如:

若收盘价创过去 60 个交易日新高,且 20 日均线向上、成交额不低于过去 20 日均值的 0.8 倍,则于下一交易日开盘买入,仓位 30%;若收盘价跌破 20 日均线则卖出。

这套规则未必赚钱,但它有两个主观判断没有的优点:

  1. 可执行——任何人拿到这段描述,都能做出相同操作。
  2. 可回测——你可以拿历史数据检验它过去的表现。

这就是量化的本质:把交易从「临场发挥」变成「规则系统」。

系统可以简单——一条均线加一条止损线就够了。也可以复杂——多因子、机器学习、组合优化。但不管复杂还是简单,它做的始终是同一件事:用明确的规则替代模糊的直觉。

量化系统的四个层次

一个成熟的量化系统,通常包含四层:

层次 职责
研究层 提出假设——市场里可能存在什么规律
验证层 用历史数据检验假设是否成立
执行层 把信号转成实际订单
风控层 在系统出错或市场异常时保护账户

很多人以为量化的核心是「公式」,其实真正拉开差距的,是公式背后的系统设计能力。

二、关于量化的四种常见误解

误解一:量化 = 人工智能

很多人觉得,只有用了神经网络、深度学习,才算量化。

其实不是。大量真实可用的量化策略都很朴素:趋势跟随、资产轮动、均值回归、再平衡策略、事件驱动规则。它们可能根本没用到复杂模型,但只要规则明确、可回测、可执行、可管理风险,就是量化。

误解二:量化 = 高频交易

高频交易确实属于量化的一个分支,但它很窄。高频强调的是超低延迟、海量订单和专业级基础设施。

沪深交易所已给出明确认定标准:单个账户每秒申报撤单达 300 笔以上,或单日达 20000 笔以上,才算高频交易。

对个人投资者来说,真正适合做的是日频或周频的中低频策略。你该练的是规则设计、数据处理、回测纪律和风控能力,而不是跟机构比速度。

误解三:量化天然更客观

程序确实能减少情绪干扰,但程序不会自动消灭偏见。

你用什么数据、怎么做复权、如何定义信号、有没有偷看未来数据、回测里有没有忽略成本——这些偏差,程序一个都不会帮你修正。量化并不消灭自欺欺人,它只是把自欺欺人的方式从「拍脑袋」变成了「写代码」。

误解四:量化是一劳永逸的赚钱机器

市场环境会变,资金结构会变,交易制度会变,流动性会变,策略拥挤度也会变。量化系统不是修好就不用动的水龙头,它更像一台需要持续维护和校准的实验装置。

三、一个量化系统的完整结构

学量化,最重要的不是记住指标名称,而是先在脑子里形成一张系统地图。

一个量化系统可以想象成一条流水线,分五段:

1. 数据层

量化的地基。你至少需要:

  • 行情数据(开高低收、成交量等)
  • 交易日历
  • 标的信息
  • 复权信息

有些策略还需要财务数据、指数成分、公告事件、行业分类等。

数据层要解决的核心问题不是「有没有数据」,而是数据是否干净、连续、口径一致,是否能还原当时真实可得的信息

2. 策略层

负责把想法翻译成信号。

  • 认为趋势会延续?→ 定义什么是「趋势」
  • 认为强者恒强?→ 把「强」转成可排序的指标
  • 相信均值回归?→ 把「偏离程度」写成公式

策略层做的不是讲故事,而是写条件链。

3. 组合层

回答「买多少」的问题。

很多人只关心「买什么」,忽略了仓位管理。但实际上,你是全仓还是等权,是按波动率调整还是设行业暴露上限,这些选择对结果的影响,往往比选标的更大。

4. 执行层

信号 ≠ 成交。

你是收盘生成信号、下一开盘成交?还是假设收盘价成交?考虑了滑点吗?考虑了成交量约束吗?执行层不光鲜,但它决定了研究离真实世界有多远。

5. 风控与复盘层

成熟的系统不只抓机会,还要限制错误:

  • 单日亏损过大 → 触发降仓?
  • 组合回撤过大 → 触发停机?
  • 数据更新失败 → 自动中止?

还要有报告和日志,让你知道每天的操作是什么原因触发的。

没有复盘,量化就不是系统,而只是自动化的冲动。

四、为什么 A 股新手更适合从 ETF 开始

我建议新手先从 ETF 做起,不要一上来就碰个股。原因有三个。

第一,ETF 帮你隔离了大量个股层面的极端事件。 业绩爆雷、黑天鹅、停牌复牌断层、题材股瞬间熄火、ST 和退市风险——这些在 ETF 层面都被大幅平滑了。

第二,对初学者来说,建造研究系统比追求 alpha 更重要。 个股策略会迅速把你拖入复杂度的泥潭——股票池选择、财务数据频率、调仓日和财报日对齐、停牌处理、涨跌停限制、分红送转……这些都值得学,但它们更适合当第二阶段的课题。

第三,ETF 让你可以很快跑出一个完整闭环:

1
下载数据 → 计算信号 → 生成持仓 → 跑净值曲线 → 算指标 → 做报告 → 样本外验证

对个人开发者来说,「先把小系统跑起来」的成就感至关重要。量化最怕的不是策略差,而是工程项目起得太大,最后什么都没做完。

在 A 股语境里,证监会明确提出「先报告、后交易」,程序化交易投资者需先报告相关信息后方可进行程序化交易。对入门者来说,先做研究、回测、信号输出、日报生成,再逐步走向半自动决策支持,是更务实的路径。

五、数据:量化的地基,也是最大的坑

量化世界里有一句老话:垃圾进,垃圾出

几乎所有初学者都会在数据层吃亏。因为大多数人把精力花在策略公式上,结果发现真正决定结果有没有意义的,是那些看起来很琐碎的细节。

常见的数据陷阱

问题 影响
忘了复权 趋势信号被分红/送转扭曲
没处理停牌期间无数据 把「没交易」误当成「价格稳定」
没用交易日历对齐 不同标的之间的对比错位
使用了当时不可得的数据 回测结果不可信

以 Tushare Pro 为例,它的 A 股日线接口默认是未复权行情,停牌期间不提供数据。这些 API 细节对量化来说是生死线级别的信息。

什么是复权?

复权其实很简单。它就是告诉你:历史价格要放在同一把尺子上看。

如果一只基金分了红,或者一只股票发了送转,你不做处理,价格图会突然出现一个「断层」。而你的策略如果基于均线、涨跌幅、突破等指标,就会被这个假断层误导。

什么是点时可得性?

你在某个交易日做决策时,到底能看到哪些信息?

比如某份财报 4 月 30 日发布,那你在 4 月 10 日的回测里就不能使用其中的利润数据。某只股票后来被剔出指数,也不代表你可以假装当时就知道它会被剔除。

量化里最值钱的一种诚实:承认「当时的你,不知道后来发生的事」。

实用建议:建立本地数据缓存

不要每次研究都在线拉取全部历史数据,也不要让策略直接耦合外部接口。推荐的做法:

1
数据源(Tushare 等)→ 采集器 → 本地存储(Parquet / SQLite)→ 回测模块

这样做的好处:

  • 速度更快
  • 结果可复现——今天和三个月后的结果能在同一份数据快照上对比

最后提醒一句:数据问题不是「解决一次就没事了」。每引入新资产、新频率、新字段,问题都会重新出现。成熟的做法是:默认数据迟早会出问题,在系统里为数据校验、缺失处理和异常中止留出位置。

六、新手最值得先掌握的两类策略

「到底先学哪种策略?」这是入门者最常问的问题。

我的建议:先学趋势,再学轮动。不是因为它们最赚钱,而是因为它们最适合当学习框架。

第一类:趋势跟随

最典型的代表是双均线策略

规则很朴素:

  • 短周期均线向上穿过长周期均线 → 买入
  • 反向跌破 → 卖出

或者更简单:收盘价站上某条长期均线就持有,跌破就空仓。

趋势策略直观、容易理解、容易回测。你很快就能看到它的真实面貌:单边上涨时能吃到大段行情,震荡市里则来回打脸。

但它的真正价值在于,它会逼你面对一系列关键的技术问题:

  • 信号按收盘价还是盘中生成?
  • 成交假设放在下一开盘还是下一收盘?
  • 均线参数该固定还是做网格搜索?
  • 空仓时持有现金还是货币 ETF?
  • 手续费和滑点会不会把微弱优势吃掉?

极简版实践: 选一只宽基 ETF(比如沪深 300 ETF),每天收盘后检查 20 日均线和 60 日均线。20 日在 60 日上方且空仓就买,跌回下方且持仓就卖。跑出净值曲线,观察最大回撤和换手频率。

做完这一轮,你得到的不是「圣杯」,而是你的第一份量化实验报告。

第二类:ETF 轮动

背后的想法是:强势资产在一段时间内可能继续强势。

做法是选几个 ETF,按过去一段时间的收益或波动率打分,定期持有得分最高的。为避免在熊市里硬选「最强的弱者」,可以加一个绝对动量过滤:标的本身收益为正时才买入,否则空仓。

轮动策略比单一趋势多了一层「横向比较」,但又没有个股多因子那么复杂。你可以快速学到组合调仓、排序逻辑、再平衡频率、换手率控制这些更贴近实际的能力。

关于多因子和机器学习

不是不能碰,但建议别当第一站。那个世界的复杂度会瞬间包围你:财务数据时效性、幸存者偏差、行业中性化、极值处理、样本穿越、特征泄露……

先把简单系统做扎实,再往那边走。

七、回测:量化里最重要,也最容易骗人的环节

量化最吸引人的地方是回测——你可以在历史上验证策略。

量化最危险的地方也是回测——一条漂亮曲线太容易让你产生错觉。

回测不是未来收益的承诺。它只是在一组历史条件下、基于一套假设做出的模拟实验。

回测的五个经典陷阱

1. 未来函数

在历史里使用了当时不可能知道的信息。比如用当日收盘价假设盘中成交,或用季报公布后的数据在公布前选股。不会报错,但会让结果好得不真实。

2. 幸存者偏差

只拿今天还存在、表现不错的标的回看过去。退市的、清盘的、边缘化的,被你无声删掉了。

3. 信号 ≠ 成交

收盘后才能确认信号,却假设当日收盘就能买入。一个细节就能让漂亮的回测大幅缩水。

4. 忽略交易成本

很多策略只在零成本的理想世界里好看。加入佣金、印花税、滑点后,从惊艳变成平庸甚至转负。

5. 过拟合

不断调参数——20 日改 23 日,再改 27 日,加各种过滤条件——直到找到一组在过去完美的参数。这组参数很可能只是「刚好适配历史数据」,并不代表发现了稳定的规律。

怎样防止自欺

成熟的回测会设计一套防自欺机制:

  • 样本内/外拆分
  • Walk-forward 滚动验证
  • 参数敏感性分析
  • 不同市场阶段对比
  • 强制加入成本和滑点
  • 固定数据版本,确保可复现

回测真正的价值不是让你兴奋,而是让你清醒。

八、怎样读懂一份回测报告

很多人看回测报告,第一眼盯着总收益率。这没错,但如果只看这个数字,很容易被误导。

一份有用的回测报告,至少要回答四个问题:

  1. 赚不赚钱?
  2. 过程难不难熬?
  3. 靠什么赚钱?
  4. 什么情况下最容易失效?

关键指标说明

指标 说明
年化收益率 长期复利增长速度。必须配合风险指标一起看
最大回撤 从高点到低点最深的坑。回撤 50% 需要涨 100% 才能回本
夏普比率 衡量收益的「平滑程度」。越高越好
卡玛比率 年化收益 / 最大回撤。衡量回撤效率
胜率 高胜率 ≠ 高收益。要同时看盈亏比
换手率 太高意味着成本被放大

一个年化 18%、最大回撤 55% 的策略,和一个年化 12%、最大回撤 12% 的策略,不能简单用收益率来判断高下。对大多数人来说,真正决定能不能长期拿住的,是亏损过程的可承受性。

成熟的报告应该包含:分年度表现、月度收益分布、回撤区间、持仓变化、交易摘要、参数说明、成本假设和失败阶段分析。

九、风控不是附属品,而是系统的一部分

很多人把风控理解成「出问题了就止损」。这太窄了。

风控不是补丁,它应该从策略设计的第一天就存在。

四层风控

第一层:仓位管理

同一策略,10% 仓位和满仓,体验完全不同。仓位管理的本质不是让收益变低,而是让你有资格活到下一次机会。

第二层:分散和暴露管理

几个看似不同的 ETF 可能高度相关。分散不是数量越多越好,而是暴露结构是否真正不同。

第三层:规则内的退出机制

什么时候减仓、空仓、停止交易、认定策略失效,都应该提前定义好。退出机制不该靠情绪临时决定。

第四层:操作和工程层面

数据更新失败怎么办?接口异常怎么办?回测结果和昨天不一致怎么办?对个人开发者来说,工程失误造成的损失可能比市场波动更大。

风控不是悲观主义,而是对复杂世界保持清醒的方式。

十、把量化当技术项目来做

如果你把量化只当成几个公式,会很快碰到天花板。真正让量化变成可持续能力的,是工程化

项目结构

建议把量化项目组织成清晰的模块:

1
2
3
4
5
6
├── data/          # 数据采集和清洗
├── strategy/ # 策略定义
├── backtest/ # 回测引擎
├── metrics/ # 指标计算
├── report/ # 报告生成
└── config/ # 参数配置

不要把所有逻辑塞进一个 Notebook。量化项目一旦没有边界,每加一个需求都会把原来的东西拖垮。

可复现性

今天跑出来的结果,下周还能复现吗?

成熟的项目一定重视:

  • 配置文件
  • 数据版本
  • 日志输出
  • 随机种子
  • 结果归档

研究和执行分离

最好的第一阶段不是自动下单,而是:

1
每天定时更新数据 → 计算信号 → 生成报告 → 输出候选动作 → 人工确认

这样既保留了系统化,又保留了最后一道人工风控。

测试

策略代码不是能跑就行,还要能被验证。均线计算、交易日对齐、仓位更新、手续费扣除、回撤计算——这些都是可以(也应该)写测试的。

量化里最可怕的错误,不是程序崩溃,而是程序看起来正常,却在悄悄给你错误结论

十一、一个适合个人开发者的 90 天入门路径

第一个月:跑通最简单的单策略回测

  • 选一两只宽基 ETF
  • 建立本地数据缓存
  • 写一个双均线策略
  • 跑出净值曲线、收益、最大回撤、交易记录

目标:逻辑清楚,结果可重复,能解释每笔交易为什么发生。

第二个月:升级到可比较的小平台

  • 加入 ETF 轮动策略
  • 增加参数配置文件
  • 加入样本内外拆分、交易成本和滑点
  • 生成 Markdown 或 HTML 报告

到这一步,你已经不是在「试着写个策略」,而是在做一个研究工具了。

第三个月:验证而非炫技

  • Walk-forward 验证
  • 参数敏感性分析
  • 切换不同 ETF 池子测试
  • 每天自动生成次日候选持仓

关键不是系统越来越复杂,而是复杂一点之后还能保持清晰和可解释。

三个月之后,你可能还没赚到大钱。但你会拥有一套可持续迭代的金融实验系统——这个系统本身就是你最大的收获。

十二、为什么很多回测很好看,实盘却很难受

这个问题几乎每个做量化的人都会遇到。

原因一:回测知道结局,实盘不知道。 回测里你看到完整的净值曲线,知道哪次下跌只是暂时的。实盘里未来是黑的,连续亏损三周时你不知道这是正常波动还是策略失效。

原因二:实盘比回测多了大量摩擦。 忘记更新数据、手动确认时犹豫、实际成交和假设不一致、流动性不足、节假日和系统异常。单笔看不大,长期叠加会显著改变结果。

原因三:回测时会不自觉地挑自己喜欢的结果。 不好看的参数、不好看的时段被无意识筛掉。实盘亏钱时,不是市场不讲理,而是你研究时就已经偏向了自己想看的答案。

成熟的量化,不是回测有多漂亮,而是回测和实盘之间的落差有多小。

十三、几个高频问题的真回答

零基础能学量化吗?

能。需要一组基础能力:一点 Python,一点数据处理,一点统计常识,一点交易规则理解,再加长期做项目的耐心。真正难的不是第一段代码,而是把杂乱知识拼成稳定系统。

必须先学高级数学和机器学习?

不必。入门阶段最重要的是把简单规则做正确。先学会定义问题、清洗数据、做回测、看报告、控风险。

资金小有必要做量化吗?

有。入门阶段最大的产出是方法,不是收益。小资金反而适合做实验。

要不要一开始就全自动下单?

通常不必。A 股程序化交易有明确规则和报告要求。先做研究、回测、信号输出、人工确认,就是完整闭环。

神策略能直接抄吗?

可以研究,但先问四个问题:数据口径?执行假设?成本计算?样本外成立吗?

回测不够漂亮就没价值?

不一定。真实可用的策略往往只是「逻辑清楚、回撤可控、样本外没崩」。平庸但稳定,比惊艳但脆弱更有价值。

什么时候算真正入门?

当你能完整回答这些问题的时候:

  • 系统为什么可能有效?
  • 依赖什么前提?
  • 最可能在哪里失效?
  • 成本和摩擦是什么?
  • 风险边界在哪里?
  • 失效时你怎么处理?

能回答这些,才说明你开始从「写代码的人」变成「做系统的人」。

结语

量化炒股听起来像金融技术。做久了你会发现,它训练的首先是一种思维方式:

  • 把模糊直觉翻译成清楚规则
  • 把想象中的优势放进严格验证
  • 把历史里的漂亮结果放进现实摩擦里重新审视
  • 把「我可能是对的」换成「我怎样证明自己不是在骗自己」

它不是圣杯,不会消灭亏损和焦虑。它甚至比主观交易更残酷——它会把你的错误一条条暴露出来。

但也正因如此,量化才值得学。它会逼你把交易从情绪反应变成系统工程,从运气驱动变成流程驱动。

真正的量化入门,是开始愿意承认:市场很复杂,自己会犯错,任何优势都必须经过检验,任何收益都要付出风险代价,任何系统都需要维护。

到了那一步,你写的就不再只是买卖程序,而是一套帮助自己在不确定世界里做出更稳定决策的工具。

(完)