开源发布SimTradeData:兼容Ptrade格式的量化数据

SimTradeData 是为 SimTradeLab 设计的高效数据下载工具。通过智能的API调用优化,在单次请求中获取多种数据类型,显著提升下载效率。

34 Likes

感谢大佬推荐

8 Likes

请问佬友,如果下载10年完整数据,是否要一百多万次Baostock请求?有没有更好的下载方式?

1 Like

如果有N个佬友愿意一起协作,每人下载一段数据然后合并就可以更快。我可以写一段方便分段下载和合并的程序。

这倒是个办法,如果佬愿意建个群,我愿意参加下载数据。我现在在佬的代码里面加了一个API计数器,一天到9万次就停止。但这样下来需要半个月才能下完:rofl: 不过我也担心这样断点下载数据是否会造成最终拼好的数据不完整。

另外,我发现佬的SimTradeLab里面似乎不支持后复权?简单看了代码,逻辑里面似乎是把后复权直接当做不复权了。是bug吗?

3 Likes

谢谢你的发现,我确实忘记实现后复权了!没有人帮忙测试就会有这种低级遗漏… 我会在下一个版本里修复这个问题。目前我还在重构数据,最后整个存储格式都会变化,目的是在内存使用和性能上能达到一个平衡。

1 Like

我目前更倾向于把数据存在局域网NAS的SQL数据库(例如Postgres, 可选TimescaleDB),然后每天定时运行脚本增量更新。这样家里几台电脑都可以访问,也方便每天备份和增量备份。访问数据时按需查询,不用占用过多的内存。

由于基本面和指标数据过多,我打算放弃从Baostock下载:joy:。我在某鱼买了1990年至2025年的A股财务数据,每季都有,有几百项数据,准备有时间把重要的取出来跟PTrade所需要的字段map起来。佬需要数据的话我可以私信分享。

2 Likes

把数据存在局域网NAS的SQL数据库确实方便增量更新,但会使回测性能下降。最好当中做一个转换。

不行就加一层Redis。但我感觉查询的数据量其实不大。十个股票五年的数据大约300ms可以取回来,对我来讲足够了。现在最麻烦的就是把买来的财务数据要清理掉,然后要把字段跟PTrade和Baostock对应起来:joy:

我打算在下一个版本使用DuckDB存储数据,方便增量下载。然后转换成parquet用于回测

我感觉关键还是前期如何本地化大量数据。Baostock的10万次一天的限制很快就没了。我最近研究了一下QuantAxis的代码,发现用通达信数据源目前仍然可以下载除了板块信息外的所有完整数据,而且速度极快,一天内可以全部完成。不过QuantAxis用的是MongoDB。我感觉以他的数据作为基础,在上面搭建你的这套PTrade兼容平台是个不错的主意。

SimTradeData今日完成更新,使用DuckDB存储数据,方便增量下载。之后使用脚本自动转换成parquet用于高速回测

1 Like

大水哥。。。

太强了!感谢佬友更新,还提供了2015年至今的数据!但是夸克链接失效了,能补一下吗?

换了一个链接一样违规,不让我分享这个格式的文件 :upside_down_face:

换zip格式,再不行加个解压缩密码?

1 Like

@kayou 用了最新的版本,用mootdx下载脚本下载完发现数据库里头的除权除息信息、复权因子两个表是空的。另外,mootdx方式下载的数据虽然包含了财务数据,但是佬友的代码里似乎没有计算和写入valuations表。是否需要mootdx下载完后再跑一遍baostock下载?

还有一个建议。目前我看到TDX财务数据增量下载时,代码是判断数据库里面是否已经有某个季度的数据了。但是比如说2025Q4的TDX的zip文件已经有了,但是很多公司还没发财报,其实那个zip文件会持续更新。TDX官网的列表有每个季度文件的hash值,通过mootdx也能获取这个hash。我建议增加一个表,记录TDX财务数据的文件名、hash,增量下载时如果发现某个季度的hash改变,则在数据库中删除这个季度的数据重新下载插入。

最后想问一下佬友,是更希望在github项目里直接提issue,还是在这里讨论?

谢谢反馈,在github里面提issue我好跟踪。

mootdx和baostock两边数据起到互为补充的作用。所以两个都要运行。

3 Likes

这个是很好的建议,我来更正

今日更新对美股数据的支持,同时修复网友提到的错误