数据管理的重要性
量化交易的本质是从海量的数据中寻找出在概率上具有获利优势的策略,那么对于数据的管理来说,是非常关键的。
数据管理的关键点并不在于我们是使用数据库来存储、还是本地文件存储,也不在于我们使用哪种数据库,真正核心的是管理数据的完整过程。
比如对于股票数据的管理来说,我们需要考虑这些问题:
每天什么时候更新本地数据?
如何去区分节假日和交易日?
新股发行了如何新增到本地?
股票退市了如何处理之前的数据?
……
代码表的分类
接下来我们就以股票数据为例,分享下对于股票代码表的维护方法,这也是股票数据管理体系中的第一个环节!
通常我会存储以下四个表(可以是数据库中的表,也可以是csv存储的表,也可以是excel存储的表)。
存储“退市股票表”的原因是有些策略需要把退市的股票一起涵盖进来进行回测,也是为了避免幸存者偏差。
存储“新发行股票表”是为了研究新股效应,有些策略是专门针对新股的。
“当前市场股票表”指的是A股市场所有目前处于上市交易的股票。
“个人股票池”是为了聚焦自己交易标的的范围。
如何维护代码表
如何去维护这些表呢?相对来说比较繁琐点的是“当前市场股票表”的维护。
因为我们不仅要新增新股,也要剔除退市股票,有时候还要考虑有些借壳上市的情况。
那么我们可以参考以下这个逻辑流程:
首先从数据库/本地文件导入 “当前市场股票表”(下文简化为D-Table),然后从数据源获取最新的“当前市场股票表” (下文简化为A-Table)。
接下来是对比这两个表直接的差异。
有这么几种情况:
如果A-Table中的股票代码不在D-Table中,可视为新股发行。新增到D-Table中。
如果A-Table中的股票代码在D-Table中,但名称不在,可视为借壳上市、戴上ST等。更改到D-Table中。
如果A-Table中的股票代码和名称都在D-Table中,则视为保持不变。
如果D-Table中的股票代码不在A-Table中,可视为退市股票,从D-Table中删除。
比如下图A-Table中的600118作为新股新增到D-Table中,而D-Table中的600116作为退市股票从D-Table中删除。
说明
我们会把股票代码表维护的Demo源码上传到知识星球中,帮助小伙伴们更好地掌握这个方法。
近期加入知识星球可享福利【含续费用户】,微信call我获取!星球目录可点击【阅读原文】查看。
元宵大师的量化交易书籍开售!!京东、当当、天猫有售!!