20161220-兴业证券-宽海拾贝_体系的力量之令人头疼的数据管理_17页_1mb
报告摘要
量化多因子投资体系中的数据管理
核心内容
本文是兴业证券定量研究团队“宽海拾贝”系列报告的第六篇,也是《体系的力量》系列研究的第一篇。报告聚焦于多因子量化投资体系中的数据管理模块,强调了数据管理在构建高效、稳定投资系统中的关键作用。
主要观点
-
数据管理的重要性
数据是量化投资研究的起点,数据质量直接影响模型的性能。数据管理涉及数据的存储、访问和处理,是整个多因子体系中最繁琐、最需要平衡的部分。 -
数据管理的三项基本原则
- 统一逻辑形式:尽可能以统一的逻辑形式组织数据,便于模型开发与回测。
- 时点数据:使用时点数据避免传统数据的滞后性、前视偏差与生存性偏差问题。
- 原始数据:使用原始数据进行计算并保存未经任何加工的因子,保证数据的完整性和灵活性。
-
因子数据模型
因子数据模型采用三层结构,最上层为因子数据库,每张因子表对应多个因子,每个因子以二维矩阵形式存储,行表示日期,列表示证券ID。 -
因子数据模型的实现方式
- 关系型数据库(如MySQL):数据组织清晰,但读写效率较低。
- 非关系型数据库(如MongoDB):具备较高的读写效率,但数据格式较复杂,不易于大规模数据访问。
- Python shelve模块:支持对象持久化,使用简单,但不适用于跨语言使用。
- HDF5文件格式:具备良好的通用性和性能,支持数据切片访问,是目前更偏好的实现方式。
-
因子数据的使用
- 一次性加载:适用于小规模数据,操作简单,但内存消耗大。
- 缓存机制:适用于大规模数据,通过缓存只加载当前需要的数据,减少内存负担,提升回测效率。
- 并行计算:在模型计算复杂度较高时,采用并行计算方式提升效率。
关键信息
因子数据库结构
- 因子表:因子数据库由多个因子表组成,每个因子表包含多个因子。
- 因子矩阵:每个因子以二维矩阵形式存储,行代表日期,列代表证券ID。
因子数据模型的实现方式
- 基于关系型数据库:采用标准SQL查询,但效率较低。
- 基于非关系型数据库:MongoDB实现,数据格式灵活,但访问速度较慢。
- 基于Python shelve模块:直接存储因子矩阵,使用简单,但不通用。
- 基于HDF5文件格式:支持数据切片访问,通用性强,性能较好,是最终推荐的实现方式。
因子表内容
基础因子表 (ElementaryFactor)
| 因子名称 | 因子定义 | 数据类型 |
|---|---|---|
| Wind行业 | 当前所属的Wind行业名称 | string |
| 中信行业 | 当前所属的中信行业名称 | string |
| 申万行业 | 当前所属的申万行业名称 | string |
| 是否在市 | 当前属于上市A股为1,否则为0或NaN | double |
| 上市天数 | 距离上市日的自然日天数 | double |
| 特殊处理 | 没有特殊处理为NaN,否则为特殊处理的标志字符串 | string |
| 市场板块 | 股票所在的板块 | string |
| 交易状态 | 正常交易为-1或大于0,否则为0、-2或NaN | double |
| 成交量 | 以手为单位 | double |
| 成交金额 | 以千元为单位 | double |
| 换手率 | 以%为单位 | double |
| 流通市值 | 以万元为单位 | double |
| 复权收盘价 | 收盘价*复权因子 | double |
| 日收益率 | 复权收盘价/复权昨收盘价-1 | double |
价值因子表 (StyleValueFactor)
| 因子名称 | 因子定义 | 排序方向 | 数据类型 |
|---|---|---|---|
| EP_LYR | 净利润(不含少数股东损益)_最新年报/总市值 | 降序 | double |
| EP_TTM | 净利润(不含少数股东损益)_TTM/总市值 | 降序 | double |
| EP_Fwd12M | 净利润_未来12个月预测值/总市值 | 降序 | double |
| SP_TTM | 营业收入_TTM/总市值 | 降序 | double |
成长因子表 (StyleGrowthFactor)
| 因子名称 | 因子定义 | 排序方向 | 数据类型 |
|---|---|---|---|
| SaleEarnings_SQ_YoY | 单季度营业利润同比增长率 | 降序 | double |
| Earnings_SQ_YoY | 单季度净利润同比增长率 | 降序 | double |
| Earnings_LTG | 净利润过去5年历史增长率 | 降序 | double |
| Earnings_SFG | 净利润未来1年预期增长率 | 降序 | double |
质量因子表 (StyleQualityFactor)
| 因子名称 | 因子定义 | 排序方向 | 数据类型 |
|---|---|---|---|
| ROE_LR | 净利润(不含少数股东损益)_TTM / 股东权益合计(不含少数股东权益)_最新财报 | 降序 | double |
| GrossMargin_TTM | (营业收入_TTM - 营业成本_TTM) / 营业成本_TTM - 1 | 降序 | double |
| OperatingCashFlows2 | 经营活动产生的现金流量净额_TTM / 营业利润_TTM | 降序 | double |
动量因子表 (StyleMomentumFactor)
| 因子名称 | 因子定义 | 排序方向 | 数据类型 |
|---|---|---|---|
| Momentum_1M | 复权收盘价 / 复权收盘价_1月前 - 1 | 升序 | double |
| Momentum_3M | 复权收盘价 / 复权收盘价_3月前 - 1 | 升序 | double |
| Momentum_60M | 复权收盘价 / 复权收盘价_60月前 - 1 | 升序 | double |
情绪因子表 (StyleSentimentFactor)
| 因子名称 | 因子定义 | 排序方向 | 数据类型 |
|---|---|---|---|
| EPSChange_FY0_1M | 预测每股收益_最近预测年度1个月的变化 | 降序 | double |
| RatingChange_1M | 分析师综合评级1个月的变化 | 升序 | double |
技术因子表 (StyleTechnicalFactor)
| 因子名称 | 因子定义 | 排序方向 | 数据类型 |
|---|---|---|---|
| LnFloatCap | 流通市值的自然对数 | 升序 | double |
| AmountAvg_1M | 过去一个月日均成交额 | 升序 | double |
| TurnoverAvg_1M | 过去一个月日均换手率 | 升序 | double |
| RealizedVolatility_1Y | 过去一年日收益率数据计算的标准差 | 升序 | double |
总结
数据管理是多因子量化投资体系中的核心模块之一,其目标是在数据存储、访问与处理之间取得平衡。本文总结了数据管理的三项基本原则,提出了因子数据模型,并比较了多种实现方式,最终推荐基于Python shelve模块和HDF5文件格式的实现方案。通过合理组织数据、使用时点数据、保存原始数据,可以提高因子计算的准确性与模型的可扩展性。在实际使用中,采用缓存机制和并行计算可以有效减少内存负担,提升回测效率。未来系列报告将继续围绕多因子体系的其他模块展开,致力于构建一个高效、稳定、可扩展的量化投资系统。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载