量化投资基础:金融市场基本概念、股票市场结构、交易机制、数据源与数据类型

量化选股策略的构建,本质上是对市场数据的系统性加工与规律挖掘。在进入策略编写与回测之前,必须建立对金融市场底层运行逻辑的清晰认知。本章将围绕四个核心维度展开:金融市场的基本概念与参与主体、股票市场的层级结构与交易机制、量化研究所依赖的数据源与数据类型,以及这些要素如何共同影响策略的设计边界。理解这些基础,是避免“策略在回测中完美、在实盘中失效”这一常见悲剧的第一道防线。

量化选股策略的金融市场基础框架 金融市场核心概念 · 一级/二级市场 · 流动性/波动性/深度 · 市场有效性假说 股票市场结构 · 交易所/场外市场 · 主板/创业板/科创板 · 做市商/竞价交易 交易机制 · T+1/T+0、涨跌停 · 订单类型/撮合规则 · 交易成本/滑点 数据源与数据类型 行情数据(L1/L2) | 财务数据 | 基本面因子 | 另类数据 分钟线/日线/事件驱动 | 一致预期 | 舆情/资金流 数据清洗 → 因子计算 → 策略信号 → 回测验证 策略设计约束与实盘映射 交易成本模型 | 冲击成本 | 最小交易单位 | 涨跌停限制 数据频率与策略频率匹配 | 幸存者偏差 | 前视偏差 核心输出:可回测、可解释、可执行的选股策略 数据 → 因子 → 信号 → 组合 → 风控 → 执行

2.1 金融市场核心概念与参与主体

核心原理:金融市场是资金融通与风险定价的场所,其核心功能在于将资金从盈余方引导至短缺方,并通过价格发现机制为资产定价。对于量化选股而言,最需要关注的是市场的三个基本属性:流动性(资产以合理价格快速成交的能力)、波动性(价格变动的剧烈程度)与市场深度(大额订单对价格的影响程度)。这三个属性直接决定了策略的容量上限与交易成本。

市场有效性假说(EMH)是量化投资的理论基石之一。弱式有效市场下,技术分析无效;半强式有效市场下,基本面分析无效;强式有效市场下,内幕信息也无超额收益。实际A股市场处于弱式到半强式之间,这意味着基于历史价格和公开财务数据的量化策略仍有生存空间,但超额收益会随着市场成熟而衰减。

量化视角:策略设计前必须明确所依赖的“市场无效性”来源。例如,若认为市场对财报反应滞后,则策略应基于财务数据事件驱动;若认为市场存在过度反应,则反转因子可能有效。没有理论支撑的因子挖掘,容易陷入过拟合陷阱。

2.2 股票市场结构与交易机制

市场层级:A股市场呈现“交易所+场外”的双层结构。沪深交易所为主板、科创板、创业板提供集中竞价交易;北交所服务创新型中小企业;场外市场包括新三板和区域性股权市场。不同板块在上市门槛、投资者适当性、涨跌幅限制上存在显著差异,这直接影响量化策略的选股池构建。

交易机制要点:

  • 交易时间:连续竞价时段为9:30-11:30、13:00-15:00,集合竞价时段为9:15-9:25(开盘)和14:57-15:00(收盘)。量化策略需考虑集合竞价期间的流动性稀缺问题。
  • T+1制度:当日买入股票次日方可卖出,这限制了日内高频策略的实施,但为隔夜持仓策略提供了制度基础。
  • 涨跌停限制:主板±10%,科创板/创业板±20%,ST股±5%。涨跌停会导致价格发现中断,策略需处理“一字板无法买入”或“跌停无法卖出”的极端场景。
  • 订单类型:限价单、市价单(最优五档即时成交剩余撤销等)、FOK(全部成交或立即撤销)、FAK(立即成交剩余撤销)。量化交易系统通常使用限价单控制滑点。
交易要素 主板 科创板/创业板 对量化策略的影响
涨跌幅限制 ±10% ±20% 高波动板块需调整止损阈值
最小交易单位 100股(1手) 200股起,超过200股可1股递增 影响资金分配精度
交易费用 佣金+印花税(卖出0.05%) 同左 高频策略需精确建模成本
做市商机制 无(竞价交易) 科创板引入做市商 做市商提供流动性,影响盘口形态
常见误区:许多初学者在回测中忽略涨跌停限制,导致策略信号在实盘中无法成交。例如,策略在涨停板上发出买入信号,但实际无法以涨停价买入。回测系统必须对涨跌停日的交易进行过滤或标记。

2.3 数据源与数据类型

数据分类体系:量化选股所需数据可分为四大类:行情数据(量价信息)、基本面数据(财务报表、估值指标)、预期数据(分析师一致预期)、另类数据(舆情、资金流、供应链关系等)。数据质量与覆盖度直接决定策略的可靠性。

行情数据层级:

  • L1数据(Level-1):包含最新价、成交量、成交额、买卖五档。适用于日频或低频策略。
  • L2数据(Level-2):包含逐笔成交、十档行情、委托队列。适用于高频策略和冲击成本建模。
  • 分钟线/日线:由逐笔数据聚合而成,需注意复权处理(前复权/后复权)对收益率计算的影响。

财务数据要点:财务报表存在发布滞后性(年报最迟4月30日),策略需使用“实际可获取”的数据,避免前视偏差。例如,若策略在3月使用年报数据,但年报尚未发布,则属于数据泄漏。

实战场景:假设构建一个基于“低市盈率+高股息率”的选股策略。关键步骤包括:①从财务数据库获取最新报告期EPS和每股股利;②根据报告期发布日期进行时点对齐;③剔除ST股和上市不足60日的新股;④计算行业中性化后的因子值。若忽略财务数据发布时间,策略在1-4月会错误使用上一年的旧数据。

2.4 数据清洗与预处理流程

操作流程:原始数据必须经过清洗才能用于因子计算。标准流程包括:

  1. 去重与对齐:处理停牌、退市、新股上市等特殊状态,统一股票代码与时间戳格式。
  2. 异常值处理:剔除价格小于0、成交量异常跳变(如除权除息未复权)等错误数据。
  3. 缺失值填充:财务数据缺失时,可采用前向填充(使用最近一期已披露数据)或行业均值填充。
  4. 复权处理:计算收益率必须使用后复权价格,避免除权导致的虚假价格跳变。
  5. 幸存者偏差控制:数据池必须包含已退市股票,否则回测结果会高估策略收益。
# 数据清洗示例(Python伪代码)
import pandas as pd

# 假设df为原始行情数据,包含股票代码、日期、收盘价
df['close_adj'] = df.groupby('code')['close'].apply(adjust_for_split)  # 复权处理
df = df[df['volume'] > 0]  # 剔除停牌日
df = df[~df['code'].isin(st_list)]  # 剔除ST股
df = df.sort_values(['code', 'date']).reset_index(drop=True)
df['return'] = df.groupby('code')['close_adj'].pct_change()  # 计算收益率
经验提醒:数据源选择上,建议同时使用多个供应商交叉验证关键字段(如复权因子、股本变动)。对于财务数据,务必记录“公告日期”而非“报告期”,确保回测时点与实盘信息获取一致。

2.5 案例拆解:数据问题导致策略失效的复盘

背景与约束:某量化团队开发了一个基于“净利润同比增长率”的选股策略,回测年化收益达25%。但在实盘运行3个月后,策略表现显著低于回测,年化收益仅8%。团队开始排查原因。

初始现象与关键数据:回测期间(2018-2022)策略月度胜率约65%,实盘期间(2023年1-3月)胜率降至45%。对比回测与实盘的持仓股票,发现实盘持仓中出现了多只“业绩暴雷”股票——这些股票在财报发布后股价大幅下跌。

分析判断过程:团队检查数据流水线后发现两个问题:

  • 前视偏差:回测中使用了“报告期”净利润数据,而非“公告日期”数据。例如,2022年一季报实际公告日为4月20日,但回测在4月1日就使用了该数据。
  • 幸存者偏差:回测数据池剔除了2022年后退市的股票,而这些退市股中多数业绩较差,恰好是策略会选中的标的。

实际操作步骤:团队修正了数据对齐逻辑,将财务数据按公告日期映射到交易日;重新从交易所获取包含退市股的完整股票列表;在回测中增加“财报发布后首个交易日才能使用新数据”的约束条件。

结果对比:修正后回测年化收益从25%降至14%,但实盘与回测的收益差距缩小至2个百分点以内。策略的月度胜率在实盘中恢复至58%。

风险与代价:数据修正过程耗时2周,期间策略暂停交易。但避免了继续使用错误信号导致的更大亏损。

复盘经验:数据质量是量化策略的生命线。团队建立了数据质量监控看板,每日检查数据更新延迟、异常值比例、复权因子变动等指标。任何数据源变更必须经过回测验证后才能上线。

2.6 常见误区与总结复盘

误区类型 具体表现 后果 正确做法
数据前视 使用未来数据(如未公告的财报) 回测虚高,实盘失效 严格按公告日期对齐数据
幸存者偏差 数据池仅包含现存股票 高估策略收益与夏普比率 纳入已退市股票
忽略交易成本 回测未计入佣金、印花税、滑点 高频策略实盘亏损 按策略频率建模成本
涨跌停处理不当 未过滤无法成交的涨跌停日 信号无法执行 回测中标记不可交易状态
数据频率不匹配 日频策略使用分钟线数据 过度拟合噪声 策略频率与数据频率一致