量化系统难题1_数据
关于做量化系统遇到的数据获取难题,爬虫与反爬虫,前复权后的数据增量更新。
缘起
我想做到在每次收盘后获取一次全市场数据,然后从里面执行选股策略,从而获取买点。先不说选股策略,首先我需要把全市场数据获取下来。
这次确实有点难解决了,由于我没有券商的接口,也就无法从券商处获得数据,也就是说我得用爬虫/现有的数据库获得数据。
难题
tushare是存储在他们的专门的服务器中,获取起来效率很高,缺点是需要钱💰,虽然我可以通过高校认证之后获取积分去拿数据,但是没有别的办法的时候我才会选择这个办法。
然后是常见的爬虫类方法,有akshare,mootdx,efinance等。
目前我使用的是akshare,支持东财,新浪财经,腾讯财经,而最近东财因为太多人做高频量化,东财就升级了反爬,基本爬10个股票信息就爬不了了,除了东财之外的数据源爬取效率很低,刚才跑了一会程序,发现新浪源爬多了也爬不了了,我不太懂爬虫,也没什么办法😭。
配图就不配图了,简单来说全部爬完一轮要3个小时^_^
mootdx是从通达信获取数据,作者已经有段时间没更新了,目前官网也停了,mootdx的优点是效率高,速度快,缺点是没复权,没复权的数据用来回测的话会很麻烦,就算是选股时也会出现问题。
最后是efinance,不过我没用过不好评价。也不知道有没有其他的数据源,之前也在网上看到过很多专门提供数据的数据提供商,不过都要钱,和我做这个项目的初衷不太符合,而且提供的其他服务确实我都不太需要。
计划
- 单线程跑爬虫都能被封,多线程跑那更不用说了,也许可以通过单线程+间隔随机时间爬取数据?
- 三种数据获取方式轮流调用,或者多线程+时间间隔,但是有个问题,就是不知道不同数据源获取的数据准确与否,以及这个方式实现比较复杂
- 再找找其他方案,但是其他方案存不存在就不好说了,可以从linuxdo,github这几个项目的issue里面找找,也可以问问ai
后记
如标题所说,这也只是难题1,还有难题2难题3难题。。。还没写上来,之前没做过这么大的项目,确实对自己的技术有很大提升。不管做不做得出来,先做着吧,发现问题解决问题的过程是很有意思的~
后续1
按计划走了一遍,12基本行不通,除非我自己爬虫相关技术升级了^_^,但是按3走倒是有了不错的结果。
解决方法一
在github的mootdx中的issues中,看到了很多人对mootdx库的讨论,本身mootdx是支持前复权数据的,但是因为mootdx实现上有点问题导致前复权计算出错了,可以看这个fix: 修复复权计算问题 by longguzzz · Pull Request #135 · mootdx/mootdx,按这个修改mootdx库的话,就可以做到获取复权后的数据了,而且印象中mootdx库数据获取效率很高,是个不错的解决方案。问题是每个配置我的系统的人,都需要去修改mootdx的库,这太麻烦了。
解决方法二
在akshare和efinance的issues里面有很多人讨论爬不了数据了之后该何去何从,于是看见一篇这样的文章:我是如何应对使用 efinance 被限流 · Micro-sheep/efinance · Discussion #226,从里面看到了个陌生面孔:baostock,于是我就去看了看baostock是何方神圣,于是找到了它的说明文档:www.baostock.com,按照里面样例测试了下,确实不要钱(2025-12-03),短期内符合我的要求。问题是未来如果收费后就麻烦了,又得重新配置。
解决办法三
直接氪金启动tushare,一劳永逸,老牌库的含金量与优势啊。
思路
短时间来说,可以先用baostock做替代品,长期来看,很多人做的系统选择tushare或者选择券商通道的数据,这都是不错的选择。爬虫类数据源短期内可能还是比较难用了。
后续2
一般来说,我还是更希望使用不泄露个人信息的方法(不用注册的方法)来做一个项目,所以才会优先考虑akshare这类爬虫类数据源,考虑到baostock以后可能会引入收费,思来想去我还是不打算用这个。个人最后计划还是使用tushare,120积分可以获得日线接口,但是要填写个人信息(不过没有验证^_^),属于是偷懒了。ps:后续3:这个接口也没复权,无敌了,又回到了起点。
最后总结下吧,这些数据源各自的优势和劣势:
- akshare/efinance,老牌爬虫类数据源,优点在于把爬虫搞好了的话(issues里面说代理池什么的,我不是很懂),获取高频数据也可以有很高效率,缺点在于最近它所支持的数据源基本都升级了反爬,直接用来爬日线数据的话,东财数据源爬不了,其他两个数据源要做好爬3个小时的准备,efinance我没用过,不过看issues里面和akshare基本一样。
- mootdx,也是爬虫类的数据源,针对通达信做的,优点是爬日线效率很高,大概10分钟就能搞定全市场数据爬取,缺点是作者很久很久没更新了,而且官网也无法访问了。它目前的前复权(后复权我没用过不清楚)数据有问题,原因是复权计算出错了,按照上文github的链接里面的方法修改应该就能搞定。
- 通达信本身,通达信提供全市场日线数据的下载渠道,爱折腾的话这也是一个很不错的数据源。
- 各个券商的量化接口,我没用过不评价,看网上别人的使用来说,日线数据绰绰有余,但是实时数据可能有延迟。
- tushare,也是老牌数据源,但是它走的是注册付费制的道路,优点很明显,数据质量有保障,氪金足够的话高频量化也支持,缺点就是要钱。
- baostock之类的比较小众的数据源,优点是前面的优点,缺点是小众不主流。这类数据源就见仁见智了。
研究了这么久,本来只是打算简单的做个量化系统,结果要变成股票数据市场调研了,不得不说高频率低延迟获取效率高且优值的数据一直是人们所追求的,而对于我这种只想找日线数据的人来说这些东西没啥作用。
后续3
一个天才般的想法出现在我的脑海,等会我再写下。