ZVT —— 一个将股票玩于股掌的 Python 库
有趣的 python 库之旅 ——
一个小小的库,或许能避免重复造轮子,
一个不显眼的功能,也许能在关键时刻拯救我们,
一个出乎意料的方法,或许能激发更多创意灵感,
一个独特的技能,也许能成为我们的守护神……
第 46 回
经过了漫长的 A 股低迷,现在终于能看到了希望,但面对机构和技术炒股者,大多数股民因为缺乏技术和数据只能依赖股票软件隔靴搔痒。
就算懂得一些技术,在寻求财经数据获取、处理,甚至是数据可视化时,也会为数据来源、数据的准确性、以及如何处理这些数据而痛苦不堪。
今天,带来一个轻松几招就能将A股、美股、港股一网打尽的神器 —— ZVT。
认识 ZVT
ZVT,一个开源的基于 Python 的财经数据解决方案,不仅提供方便快捷获取财务报表、股价、分红送股等数据的能力,还拥有数据处理和可视化的强大功能,特别适合财经数据分析师和股票市场的参与者使用。
ZVT 与众不同的地方在于其建立在插件化和组件化的设计理念上,这让它可以非常容易地进行扩展和定制,同时也拥抱了社区,鼓励更多开发者参与进来,共同完善和扩展其功能。
此外,与其他类似的工具比较,如 tushare,ZVT 对于数据的处理和展示更为直观和高效。
项目地址:https://github.com/zvtvz/zvt
安装
使用ZVT之前,我们需要进行安装。幸运的是,安装过程相当简单,使用 pip 就可以轻松完成:
pip install zvt
如果你使用的是国内源,可能会出现该库不存在的提示,只需要强制使用 pypi 源即可,命令如下:
pip install zvt -i https://pypi.org/simple
基本功能
数据获取
ZVT 提供了一个统一的方式来获取股票市场的数据,无论是股票列表、股票行情,还是复杂的财务数据,都可以通过简洁的 API 获得。
例如获取中国的股票列表:
from zvt.domain import *
Stock.record_data(provider="em")
df = Stock.query_data(provider="em", index='code')
print(df)
示例显示效果:
id entity_id timestamp entity_type exchange code name list_date end_date
code
000001 stock_sz_000001 stock_sz_000001 1991-04-03 stock sz 000001 平安银行 1991-04-03 None
000002 stock_sz_000002 stock_sz_000002 1991-01-29 stock sz 000002 万 科A 1991-01-29 None
000004 stock_sz_000004 stock_sz_000004 1990-12-01 stock sz 000004 国华网安 1990-12-01 None
000005 stock_sz_000005 stock_sz_000005 1990-12-10 stock sz 000005 世纪星源 1990-12-10 None
000006 stock_sz_000006 stock_sz_000006 1992-04-27 stock sz 000006 深振业A 1992-04-27 None
... ... ... ... ... ... ... ... ... ...
605507 stock_sh_605507 stock_sh_605507 2021-08-02 stock sh 605507 国邦医药 2021-08-02 None
605577 stock_sh_605577 stock_sh_605577 2021-08-24 stock sh 605577 龙版传媒 2021-08-24 None
605580 stock_sh_605580 stock_sh_605580 2021-08-19 stock sh 605580 恒盛能源 2021-08-19 None
605588 stock_sh_605588 stock_sh_605588 2021-08-12 stock sh 605588 冠石科技 2021-08-12 None
605589 stock_sh_605589 stock_sh_605589 2021-08-10 stock sh 605589 圣泉集团 2021-08-10 None
[4136 rows x 9 columns]
对于美股和港股,只需要将 Stock
换成 Stockus
和 Stockhk
即可。
数据可视化
通过命令行输入 zvt
并运行,然后打开浏览器访问 http://127.0.0.1:8050/。
如此,一个信息详尽的财经数据可视化系统就呈现在你的眼前。
你可以在这个系统中看到股票的各种指标、因子,以及交易记账信息,对于策略分析和回测都提供了很好的支撑。
数据处理
一句话就能完成数据的分析处理?
在 ZVT 中,这不再是梦想。
以机器学习为例,只需要几行代码,你就可以完成数据的获取、持久化、增量更新、机器学习、预测和结果展示:
from zvt.domain import Stock, Stock1dHfqKdata
from zvt.ml import MaStockMLMachine
Stock.record_data(provider="em")
entity_ids = ["stock_sz_000001", "stock_sh_601318"]
Stock1dHfqKdata.record_data(provider="em", entity_ids=entity_ids)
machine = MaStockMLMachine(entity_ids=["stock_sz_000001"], data_provider="em")
machine.train()
machine.predict()
machine.draw_result(entity_id="stock_sz_000001")
看一下预测效果:
高级功能
ZVT 除了以上提到的基本功能之外,还支持多种高级功能,如命令行界面(CLI)、事件驱动的股票选择器和交易系统等。
编写策略,体验交易
当你开始对市场有所了解后,ZVT还可以帮你写出你自己的交易策略。
通过遵循其提供的标准,或者选择自由发挥,你可以让你的交易策略自动运行,并在其交互式的UI中观察表现。
例如,只需编写简单的 Python 代码,你就可以创建一个策略,当机构投资者大量增持某支股票时买入,当他们大规模减持时卖出。
ZVT 会根据你的策略模拟交易,并提供回溯测试的结果。
开箱即用的历史数据
你还担心从哪里下载历史数据做分析吗?
ZVT 提供了丰富的数据集,你可以从网盘或者谷歌云端硬盘下载全市场的历史数据,然后将它们解压到 ZVT 配置的数据路径下,就可以直接在 ZVT 上使用这些数据了。
了解更多高级用法,请参考项目文档:https://zvt.readthedocs.io/en/latest/
实践
掌握了 ZVT 的操作之后,挑战的时刻到了。你可以尝试编写自己的数据获取脚本,也可以尝试编写策略进行回测。
不妨动手实践,将学习到的知识用于一些真实的金融分析项目中,你会发现 ZVT 强大的生产力。
总结
ZVT 是一站式的财经数据解决方案,提供丰富的数据获取方式、直观的数据可视化,以及便捷的数据处理能力。
对于财经数据分析师、量化交易员以及任何对股票市场感兴趣的人来说,ZVT 都是值得信赖的助手。
未来,随着社区不断的发展和完善,ZVT 将成为连接用户和财经数据世界的桥梁,让财经数据分析不再是难题。
作者水平有限,文中难免存在一些疏漏或错误,欢迎反馈、指正,感谢支持!
回复 源码 获取文中代码。
你可能错过了这些: