2. 金融市场与量价数据基础
量价建模的第一步不是选模型,而是理解数据从哪来、长什么样、有什么噪声。股票、期货、加密货币三类市场的交易机制差异,会直接决定OHLCV字段的语义、采样频率的取舍,以及后续特征工程与标签构造的边界。本节围绕市场结构、OHLCV含义、三种频率数据特点展开,为后续信号建模打下数据认知基础。
一、核心原理:三类市场的结构差异
股票市场以撮合竞价为主,存在开盘集合竞价、连续竞价与收盘集合竞价,交易时段固定,且有涨跌停与T+1(A股)等约束。期货市场采用保证金与逐日盯市制度,合约有到期日,存在主力合约切换问题,夜盘与日盘分段交易,价格连续但合约不连续。加密货币市场7×24小时连续交易,无涨跌停,现货与永续合约并存,交易所之间价差与资金费率会带来额外信号。
这些差异意味着:同一套量价特征在不同市场上不能直接照搬。例如股票的开盘跳空受隔夜信息影响大,而加密货币没有“隔夜”概念;期货的主力合约切换会造成成交量突增或价格跳变,若不处理会被模型误读为真实信号。
二、OHLCV数据的含义与陷阱
OHLCV是Open、High、Low、Close、Volume的缩写,是K线的基本字段。Open是该周期第一笔成交价,High/Low是周期内最高/最低成交价,Close是最后一笔成交价,Volume是周期内成交量。看似简单,但每个字段都依赖采样窗口:同一分钟内不同起止点会得到不同的OHLC。
| 字段 | 含义 | 常见陷阱 |
|---|---|---|
| Open | 周期首笔成交价 | 集合竞价与连续竞价混用,跳空被误读为趋势 |
| High/Low | 周期内极值 | 仅反映触碰,不代表可成交价格 |
| Close | 周期末笔成交价 | 收盘集合竞价可能造成尾盘异动 |
| Volume | 周期成交量 | 期货主力切换、加密货币刷量导致失真 |
此外,OHLCV是“已聚合”数据,丢失了周期内的路径信息。同样一根阳线,可能是单边上涨,也可能是先跌后涨,二者对后续走势的含义完全不同。因此在高频建模中,tick数据或订单簿数据往往比分钟K线更有信息量。
三、tick、分钟、日频数据的特点与选择
tick数据是逐笔成交或逐笔委托,粒度最细,包含时间戳、价格、数量、买卖方向等。优点是信息完整,可重构任意周期K线;缺点是数据量大、噪声高、对存储与计算要求高。分钟数据是tick的聚合,兼顾信息量与计算效率,适合中高频信号建模。日频数据粒度最粗,适合中低频与基本面结合的策略,但样本量少、信噪比低。
# 以pandas为例,将tick聚合为1分钟OHLCV
df = df.set_index('timestamp')
ohlcv = df['price'].resample('1min').ohlc()
ohlcv['volume'] = df['size'].resample('1min').sum()
ohlcv = ohlcv.dropna()
选择频率时需权衡三点:信号衰减速度、交易成本占比、样本量是否足够。高频信号衰减快但成本敏感,低频信号稳定但样本少。实务中常用“多频率融合”:用日频判断趋势方向,用分钟频寻找入场点,用tick验证执行质量。
四、案例与场景:从数据到信号的常见路径
以日内动量策略为例:先用日频数据判断近20日趋势方向,再用5分钟K线计算成交量加权均价(VWAP)与价格偏离度,最后用tick数据确认大单方向。若在股票市场,需剔除开盘前15分钟与收盘前5分钟的异常波动;若在期货市场,需先拼接主力连续合约;若在加密货币市场,需过滤交易所刷量导致的虚假成交量。
五、误区与复盘
- 误区一:把OHLC当作真实路径。 同一根K线内可能发生剧烈反转,仅用OHLC会丢失关键信息。
- 误区二:忽略成交量口径。 股票“手”、期货“张”、加密货币“币”不可直接比较,需统一为名义金额。
- 误区三:频率越高越好。 高频数据噪声大、成本高,若信号本身是日频级别,用tick只会增加过拟合风险。
- 误区四:不做合约连续化。 期货主力切换会造成价格跳变,直接建模会把切换误判为趋势信号。
复盘时建议对每个数据集做一次“数据体检”:统计缺失率、异常值比例、成交量分布、时间间隔分布,并画出价格与成交量的联合分布图。只有确认数据语义与市场结构匹配后,量价信号建模才有可靠起点。