第一次选量化平台,该看什么¶
平台把数据、编程环境和回测工具放到了同一个入口里。它能省下准备工具的时间,研究中的每一个判断仍然要由人说清楚。
小岚第一次打开量化网站¶
小岚已经在纸上算过均线,也能看懂几行 pandas 代码。她想找一个网页,把历史行情放进去,再看看策略怎样下单。搜索结果却比预想中复杂。一个网站强调因子研究,另一个提供 Python 回测,还有的平台把智能助手放在首页。每家都能展示一条净值曲线,菜单名字却不一样。
她最初想比较哪家“最强”。这个问题很快卡住了。有人只想在浏览器里跑一段教学代码,有人已经有本地数据,需要自由修改回测器;还有人想观察 AI 怎样把一句想法整理成研究步骤。三个人需要的工具不同,放在一张总榜上没有多少意义。
选平台要从眼前的任务开始。第一次体验的任务可以很小,只验证一条五日均线与二十日均线的关系,并打印信号、订单和成交时间。任务写清以后,平台提供了什么、缺了什么,反而容易看见。
先选一件准备亲手核对的小事,再选能够完成这件事的工具。平台名称排在任务后面。
平台替研究者准备了哪些东西¶
日常所说的“量化平台”,通常把几种工具放在一起。初学者容易被菜单数量吓住,其实每个菜单都能放回量化流程中的一个位置。
数据服务负责提供价格、成交、财务、指数成分等资料。数据表能打开,只说明文件到了手中。分红和拆股会改变名义价格,为了让前后价格保持可比而作的调整叫作复权。收盘价采用哪种复权、成交量使用什么单位、财报何时对市场公开,还要查看字段说明。
研究环境是写代码、查看表格和画图的地方。很多平台提供 Jupyter Notebook。Notebook 可以把代码分成一小格一小格运行,每格下方立即显示表格或图形,很适合探索数据。它的方便也带来一个小麻烦。若代码格没有按顺序运行,屏幕上的变量可能来自较早的一次操作,所以保存研究时还要从头顺序运行一遍。
回测引擎负责让策略沿历史日期向前走。它在每天或每根 K 线到来时调用策略,接收订单,按照设定规则模拟成交,再更新现金和持仓。引擎判断订单能否成交、使用什么价格成交,这一步叫作撮合。回测还常在参考价与成交价之间预留一段差异,用它近似价差、排队和价格移动造成的损耗,这段差异叫作滑点。平台中的“回测成功”表示这套程序完成了运行,不等于交易假设已经合理。
模拟交易让策略跟随正在发生的市场,但订单进入的是模拟账户。它能检查数据能否按时到达、任务会不会中断、订单状态能否正确更新。模拟成交仍可能比真实市场简单,尤其是在排队、冲击成本和大额成交方面。
平台文档里还会看到因子、API 和 SDK。因子是按照同一规则为资产计算的可比较数值,例如过去二十日收益或盈利收益率。API 可以理解为一组约定好的调用方法,例如“取最近二十日收盘价”或“提交一笔目标仓位订单”。SDK 是平台提供的一套本地开发工具,通常包含 API、安装包和示例,让代码可以在自己的电脑或服务器中使用。记住它们的工作即可,不必背英文全称。
flowchart LR
accTitle: 量化平台在一次研究中承担的工作
accDescr: 研究者提出问题,平台提供数据和研究环境,回测引擎处理订单与账本,模拟交易继续检查实时运行;每一步都要留下可以人工核对的证据
question["写清研究问题"] --> data["数据服务<br/>价格、财务、股票池"]
data --> notebook["研究环境<br/>代码、表格、图形"]
notebook --> engine["回测引擎<br/>事件、订单、成交、账本"]
engine --> report["结果明细<br/>持仓、费用、净值"]
report --> paper["模拟交易<br/>跟随真实市场时钟"]
data -.字段说明.-> audit["人工核对"]
engine -.成交规则.-> audit
report -.逐日证据.-> audit
paper -.日志与对账.-> audit
图中几项能力可以出现在同一个网站,也可以由不同工具完成。网页平台省去了安装和数据接入,本地 Python 则给研究者更多控制。学习初期不必两边一起搭,先在一个入口里把数据、信号、订单、成交和账本走通。
五个常见平台分别适合观察什么¶
下面列出的功能来自各平台当前公开的官方主页或文档。产品会调整菜单、权限和收费方式,注册或付费以前仍要打开链接核对。Easy Quant 与这些平台没有商业合作,也不依据平台展示的策略成绩作推荐。
| 平台 | 公开资料中的主要能力 | 第一次进去可以做什么 | 最容易漏看的说明 |
|---|---|---|---|
| 同花顺 SuperMind | 策略研究、因子研究、回测、模拟、研究环境与本地工具 | 找一段最小 Python 策略,标出取数、形成信号和下单发生的位置 | 实时查询与历史回测接口的差别,撮合、费用和可用权限 |
| 聚宽 JoinQuant | 数据、研究、回测和模拟交易环境 | 阅读新手示例,找出初始化函数、定时调用、历史取数和订单函数 | 研究环境与回测环境可用接口,价格口径和成交条件 |
| 米筐 Ricequant | 网页研究、策略回测、模拟交易、因子研究与 RQAlpha 等本地工具 | 对照在线平台与本地框架,查看交易明细和每日持仓 | 动态复权、撮合方式、滑点模型与不同账户规则 |
| BigQuant | 数据、因子、机器学习和交易模块 | 跟着一个教学任务观察数据怎样进入因子,再进入模型或策略 | 字段可得时间、训练切分、表达式含义和交易引擎假设 |
| PandaAI | 数据、AI 研究流程、策略模板、图表和执行衔接 | 输入一张已经写好的研究卡,观察系统补了哪些字段和参数 | 自动选定的股票池、窗口、标签、费用、测试期和成交规则 |
这张表只回答“在哪里开始看”。平台真正是否适合自己,还要走一遍具体任务。下面把每个入口展开一点。
SuperMind¶
SuperMind 的公开页面把策略研究、因子研究、回测、模拟交易、研究环境和本地 SDK 放在同一套产品中。它的 AI Lab 文档还介绍了因子研究助手、策略代码生成和平台交互。对初学者来说,这些功能最有价值的地方,是能在同一个页面里看见一段策略从代码走到回测报告。
第一次使用时可以暂时绕开复杂策略库,找一个只交易教学标的的均线例子。先找到初始化位置,看看程序何时取历史数据,再找到下单函数。回测完成后打开成交明细,检查信号形成的日期是否早于成交日期。官方 AI Lab 文档也提醒生成代码可能出错,因此助手给出的源码仍要逐行读,回测参数仍要人工确认。SuperMind AI Lab 说明可以用来核对当前入口和功能。
聚宽¶
聚宽常见示例采用事件驱动写法。所谓事件驱动,是指程序在“开始运行”“新的交易日到来”“固定时间到了”等事件发生时调用对应函数。它很像一份值班表,开盘前做准备,交易时段检查信号,收盘后记录结果。
读聚宽示例时,不要急着背函数名。把代码分成四栏更有用,哪一段只运行一次,哪一段按日或按分钟运行,历史数据取到了哪个时点,订单进入市场以后怎样处理。平台接口会更新,部分页面在某些地区也可能无法直接访问;遇到这种情况,应回到聚宽官方 API 文档核对当前说明,不用依靠多年前的转载代码猜测。
米筐¶
米筐公开文档同时介绍网页量化平台和 RQAlpha 等本地工具。网页入口适合先看完整流程,本地工具适合以后固定环境、编写测试或处理私有数据。两条路线共用很多研究概念,却不一定使用完全相同的配置和数据权限。
米筐的回测结果页面会展示交易详情、每日持仓、账户信息和日志。这些明细比总收益更适合学习。任意挑一笔交易,沿着信号、订单、成交、费用和日末持仓向前核对。官方回测文档还分别说明股票、期货、期权等品种的账户和下单规则,说明“同一个回测按钮”背后可以有不同市场机制。米筐回测说明是这项练习的入口。
BigQuant¶
BigQuant 把数据、因子、机器学习和交易模块放在一套研究路径里。它适合已经读到本手册机器学习部分的读者,用来观察一张原始表怎样变成特征,再怎样交给模型。模块连得很顺时,人容易忘记中间每一步仍然有时间边界。
使用现成因子时,应打开字段说明,查清它在历史哪个时点可见。使用模型模板时,应找到训练、验证和测试的日期边界。平台生成的模块图可以帮助理解数据流,研究记录仍要写下每项输入的含义与版本。BigQuant 官方文档列出了当前公开模块。
PandaAI¶
PandaAI 官方页面把产品称为一站式 AI 量化研究平台,公开介绍中包括数据服务、AI 研究流程、策略模板、图表和执行衔接。它适合用来观察 AI 怎样拆解任务。这里的前提是研究者手中已经有一个写得足够清楚的问题。
例如,不要只输入“帮我做动量策略”。可以先写明研究 A 股日频数据,二十日收益只使用当日收盘以前的信息,信号在下一交易日可成交时段执行,同时设置费用、股票池和独立测试期。系统返回结果以后,把新出现的每个选择圈出来。某个窗口、过滤条件或回测区间若不是自己写入的,就要查明它从哪里来。首页中的策略模板和历史指标适合用来学习页面结构,不能充当未来效果的证据。
用同一条小规则比较平台¶
随意打开几个复杂模板,最后只能比较页面长什么样。使用同一条简单规则,才能看到数据和回测定义的差异。
这次规则只用两条移动平均线。每天收盘后,计算最近五个交易日与最近二十个交易日的平均收盘价。五日均线高于二十日均线,说明近期价格平均水平高于较长时期,程序在下一个允许成交的时点尝试持有;反过来则退出。移动平均只能描述过去价格的相对位置,这里不讨论它是否赚钱。
为什么要等下一个时点?因为当日收盘价完全确定时,收盘交易已经结束。若回测一边用完整收盘价判断,一边又按同一个收盘价买入,就把先后顺序倒过来了。不同平台可能允许选择下一日开盘、下一根 K 线或其他撮合方式。只要规则写明并与程序一致,就能继续比较。
完成回测后,先填写下面七项。每一项都可能让相同代码得到不同结果。
| 要核对的地方 | 具体查看什么 | 它为什么会改变结果 |
|---|---|---|
| 价格 | 收盘价是否复权,复权方式是什么 | 分红送转附近的价格路径和均线会变化 |
| 股票池 | 历史每天有哪些资产可以被选 | 用今天名单回填过去会漏掉退市公司 |
| 时间 | 信号使用到哪一刻,订单最早何时进入市场 | 时间颠倒会让策略提前获得价格 |
| 撮合 | 订单按哪个价格成交,无法成交怎样处理 | 参考价碰到过,不代表订单一定成交 |
| 费用 | 佣金、税费、价差、滑点和最低费用怎样设置 | 换手较高时,小成本会不断累积 |
| 证据 | 能否导出特征、信号、订单、成交和每日持仓 | 只有净值曲线时,很难找到错误发生在哪天 |
| 版本 | 数据更新时间、引擎版本和策略版本能否保存 | 平台升级后,相同代码可能读到不同数据或规则 |
撮合、滑点和手续费会从不同位置改变账本。手续费通常按照成交金额或笔数收取,撮合先决定订单有没有成交,滑点再让模拟成交价离开理想参考价。把三者分别记录,成本变化才容易追到具体交易。
两个平台跑出不同结果时怎样查¶
假设平台甲把周三收盘信号安排到周四开盘成交,平台乙允许在周三收盘成交。平台乙会多拿到周三收盘到周四开盘这一段变化。若这段恰好经常上涨,它的曲线自然更高。差异来自成交时间,暂时还不能判断哪段代码写错了。
再看价格。平台甲使用随着回测日期逐步调整的复权口径,平台乙使用今天下载后一次处理的前复权价格。两边在公司分红、拆股附近可能出现不同均线。此时要把同一股票的原始价格、复权因子和均线逐日导出,从第一处不同的日期开始查。
比较顺序很重要。先对数据和时间,再对订单和费用,最后才对总收益。直接盯着两条净值曲线,很容易在几千行策略代码里找一个根本不存在的错误。
一条实用的排查顺序
先找两边第一天出现差异的位置。对照那一天的原始价格、均线、信号、订单、成交、费用和日末持仓。第一处差异解释清楚以后,再继续看后面的日期。
第一次平台体验怎样安排¶
给这次体验留一小时就够。前二十分钟只读官方文档,找到数据字段、回测事件顺序、成交规则、费用设置和结果明细。看到不懂的函数名先记下来,不复制社区里的长策略。
中间二十分钟运行一条最小规则。可以只用一个教学标的和很短的日期区间,计算三日与五日均线,再打印每天的价格、均线、信号、订单时点和模拟成交。日期短一点,反而方便拿纸笔核对第一条信号。
最后二十分钟只改一个条件。把成交推迟一个时点,或把费用从零改成一个明显值,观察第一笔交易和最终账本怎样变化。若页面只有总指标,试着寻找成交明细和每日持仓;确实无法导出,也要把这个限制写进平台卡。
这张卡不需要写得漂亮。它的用途是让下次打开平台时,还能说清上次的数字从哪里来。
按当前学习阶段选择入口¶
完全不想安装软件,可以先选一个网页平台。第一周只完成均线小实验,不同时学习五套接口。等事件顺序和账本能够讲清,再去看因子库与机器学习模板。
已经学完 Python 入门,希望控制每一步,可以在本地用 pandas 制作一份小账本,再把网页平台当作对照。本地代码方便打印中间变量,平台方便观察事件驱动接口。两边不一致时,前面的七项核对表会给出排查方向。
准备使用 AI 研究功能,可以选择 SuperMind AI Lab、PandaAI 或其他能展示生成过程的工具。先交给它一张研究卡,请它列出自己补充的默认条件,再让它一次只完成一个小任务。数据来源、市场规则和成交假设都要回到官方资料与程序输出核验。
容易弄错的地方¶
| 常见判断 | 漏掉了什么 | 可以怎样改 |
|---|---|---|
| 代码运行完成,策略就没有问题 | 程序可能按错误时间顺利运行 | 打印信号、订单和成交时间线 |
| 模板曲线很好,可以直接复制 | 数据范围、尝试次数和交易成本没有交代 | 把模板当阅读材料,从小样本重新核对 |
| 功能越多,越适合第一次学习 | 新菜单会遮住数据到订单的主线 | 只完成一个小任务,再增加下一项能力 |
| 换个平台,结果理应完全一样 | 数据口径、股票池和撮合规则可能不同 | 从第一处不同日期开始逐项对照 |
| AI 已经生成完整策略,参数就有依据 | 系统可能替人补了窗口、市场和测试期 | 圈出所有新增决定,逐项确认来源 |
一分钟自测¶
一条均线策略在平台中运行成功,并画出向上的净值曲线。此时至少还要打开哪些明细,才能检查它有没有使用收盘后才知道的信号按同一收盘价成交?
查看答案
至少需要逐日价格、均线或信号、订单时间、成交时间和成交价。把第一条信号所在日期单独展开,确认信号形成以后,订单才进入市场。每日持仓和现金账本还能检查成交以前账户是否已经提前获得收益。本页术语¶
| 词语 | 可以先这样理解 |
|---|---|
| 研究环境 | 写代码、看表格和画图的工作区 |
| Jupyter Notebook | 把代码分格运行并在下方显示结果的交互文档 |
| API | 程序向平台取数据或提交操作时遵守的调用约定 |
| SDK | 平台为本地开发提供的一套安装包、接口和示例 |
| 回测引擎 | 按历史时间处理事件、订单、成交和账本的程序 |
| 事件驱动 | 交易日、K 线或固定时点到来时调用对应函数的运行方式 |
| 撮合 | 按订单条件和市场信息判断能否成交、以何种价格成交 |
| 平台迁移 | 把同一研究规则搬到另一套数据和回测环境 |
课后小练习¶
1 认清功能¶
研究环境和回测引擎分别负责什么?
提示
一个地方用来写和观察,另一个程序负责让历史事件逐步发生。答案
研究环境用于编写代码、查看数据和画图。回测引擎按历史时间调用策略,处理订单、成交、现金和持仓。两者可以放在同一平台,职责仍然不同。2 检查时间¶
周三收盘后才得到完整均线信号,平台却按周三收盘价买入。问题出在哪里?
提示
把“价格确定”和“订单进入市场”排成先后顺序。答案
完整收盘价确定时,当天收盘交易已经结束。若策略此前没有提交有效订单,就不能倒回同一个收盘价成交。教学回测可以安排到周四开盘或下一个明确可成交时点。3 寻找证据¶
两个平台的总收益不同,第一步应比较哪些内容?
提示
先找第一处出现差异的日期。答案
从第一处差异日期开始,对照原始价格与复权、股票池、信号、订单、成交、费用和日末持仓。先解释底层记录,暂时不要围绕最终净值猜原因。4 动手观察¶
任选一个平台,用一个教学标的运行三日与五日均线规则,填写本页的平台卡。
提示
日期区间可以很短。先确保自己能用纸笔核对第一条信号和第一笔订单。答案
这道题没有统一平台答案。合格记录应包含官方说明链接、价格口径、信号时间、成交时间、费用、可导出的明细和至少一项仍未确认的问题。5 开放思考¶
网页平台替你准备好数据以后,为什么仍然值得保留一份自己的小样本账本?
评价要点
可以讨论人工手算、第一处差异、平台版本变化、接口迁移与中间证据。回答不必排斥平台,重点是说明小账本怎样帮助核对平台结果。现在可以先按任务筛选平台,再用价格、股票池、时间、撮合、费用、证据和版本七项核对结果。准备开始主线课程,可返回[第 0 课](../handbook/00-how-to-use.md);已经读到 AI 研究部分,可继续看[第 31 课](../handbook/12-ai-first-strategy.md)。