foolcage/zvt项目介绍

【免费下载链接】zvt modular quant framework. 【免费下载链接】zvt 项目地址: https://gitcode.com/foolcage/zvt

foolcage/zvt 是一个专注于金融数据分析和量化交易的 Python 项目,旨在为投资者和开发者提供一套高效、灵活的工具集,用于处理和分析市场数据、构建交易策略以及实现自动化交易。其核心目标是通过模块化设计和统一的数据模型,简化金融数据的获取、处理和可视化流程,同时支持多种交易标的(如股票、指数、ETF 等)和多种市场(如 A 股、美股、港股等)。

项目概述与核心目标

foolcage/zvt 是一个专注于金融数据分析和量化交易的 Python 项目,旨在为投资者和开发者提供一套高效、灵活的工具集,用于处理和分析市场数据、构建交易策略以及实现自动化交易。其核心目标是通过模块化设计和统一的数据模型,简化金融数据的获取、处理和可视化流程,同时支持多种交易标的(如股票、指数、ETF 等)和多种市场(如 A 股、美股、港股等)。

核心功能
  1. 数据采集与持久化

    • 支持从多个数据源(如东方财富、新浪财经等)获取市场数据,并将其持久化到本地数据库。
    • 提供统一的 record_dataquery_data 方法,支持增量更新和历史数据查询。
  2. 数据分析与可视化

    • 内置多种技术指标和因子分析工具,支持自定义因子计算。
    • 提供基于 Plotly 和 Dash 的可视化界面,便于用户直观地分析数据和策略表现。
  3. 交易策略开发

    • 支持多种交易策略的开发与回测,包括技术指标策略、机器学习策略等。
    • 提供动态标签系统,便于结合主观判断与量化分析。
  4. 自动化交易

    • 支持通过 REST API 和前端界面实现自动化交易。
    • 提供交易计划管理和执行功能,支持实时行情监控和交易信号触发。

核心模块

以下是项目的核心模块及其功能概述:

模块名称 功能描述
domain 定义交易标的(如股票、指数)及其事件(如行情数据)的数据模型。
contract 提供统一的接口规范,支持多种数据源和交易标的的扩展。
ml 集成机器学习工具,支持基于历史数据的预测和策略优化。
trader 提供交易策略的实现和回测功能,支持多种技术指标和信号生成。
ui 基于 Dash 和 Plotly 的可视化界面,便于用户交互式分析数据和策略表现。
rest 提供 REST API,支持前后端分离的自动化交易和数据分析。

技术特点

  1. 模块化设计

    • 项目采用模块化设计,各功能模块高度解耦,便于扩展和维护。
    • 通过统一的 SchemaProvider 接口,支持多种数据源和交易标的的灵活切换。
  2. 高性能数据处理

    • 利用 Pandas 和 NumPy 实现高效的数据处理和分析。
    • 支持多线程和异步任务,提升数据采集和处理的效率。
  3. 可视化与交互

    • 提供丰富的可视化工具,支持动态图表和交互式分析。
    • 通过 Dash 实现实时数据更新和策略表现监控。
  4. 动态标签系统

    • 支持为交易标的动态添加标签,便于结合主观判断与量化分析。
    • 提供标签统计和筛选功能,便于快速定位目标标的。

核心目标

  1. 简化金融数据分析流程

    • 通过统一的数据模型和接口,降低用户处理金融数据的门槛。
    • 提供开箱即用的工具集,支持从数据采集到策略开发的全流程。
  2. 支持多市场和多种交易标的

    • 覆盖 A 股、美股、港股等多个市场,支持股票、指数、ETF 等多种交易标的。
    • 通过模块化设计,便于扩展新的市场和标的类型。
  3. 提升量化交易效率

    • 提供高效的策略开发和回测工具,支持快速迭代和优化。
    • 通过自动化交易和实时监控,减少人工干预,提升交易效率。
  4. 促进开源社区合作

    • 项目完全开源,鼓励开发者贡献代码和扩展功能。
    • 提供详细的文档和示例,便于用户快速上手和参与开发。

示例代码

以下是一个简单的示例,展示如何使用 zvt 获取股票数据并进行可视化分析:

from zvt.domain import Stock, Stock1dHfqKdata
from zvt.ml import MaStockMLMachine

# 获取股票数据
Stock.record_data(provider="em")
entity_ids = ["stock_sz_000001", "stock_sz_000338"]
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")

总结

foolcage/zvt 通过其模块化设计、统一的数据模型和丰富的功能集,为金融数据分析和量化交易提供了强大的支持。无论是数据科学家、量化交易员还是普通投资者,都可以通过该项目快速实现从数据获取到策略开发的全流程。

项目架构与模块划分

foolcage/zvt 是一个功能强大的量化交易框架,其架构设计清晰,模块划分合理,便于开发者快速理解和使用。以下是对其核心架构和模块的详细分析。

核心模块

1. 数据层(Data Layer)

数据层负责处理所有与数据相关的操作,包括数据的获取、存储和查询。以下是数据层的主要组件:

  • 数据模型(Schema):定义了各种交易标的(如股票、指数、ETF等)的数据结构。
    class Stock1dKdata(ZvtKdata):
        __tablename__ = "stock_1d_kdata"
    
  • 数据提供者(Provider):支持多种数据源(如东方财富、新浪财经等)。
    Stock.record_data(provider="em")
    
2. 业务逻辑层(Business Logic Layer)

业务逻辑层包含核心的交易逻辑和分析功能:

  • 因子计算(Factor):支持技术指标和基本面因子的计算。
    class MaFactor(Factor):
        def compute(self):
            self.factor_df = self.data_df["close"].rolling(window=5).mean()
    
  • 交易策略(Trader):实现多种交易策略(如均线策略、MACD策略等)。
    class MaTrader(Trader):
        def on_trading_signals(self, signals):
            pass
    
3. 用户界面层(UI Layer)

用户界面层提供可视化工具,便于用户交互和数据分析:

  • Dash & Plotly UI:用于回测和研究。
    zvt
    
  • 前后端分离的UI:支持实时行情和动态交互。
    zvt_server
    

模块划分

以下是项目的主要模块及其功能:

模块名称 功能描述
domain 定义数据模型和核心实体(如股票、指数等)。
contract 提供统一的接口规范,便于扩展新的交易标的。
recorders 实现数据抓取和持久化逻辑。
factors 包含技术指标和基本面因子的计算逻辑。
traders 实现多种交易策略,支持策略回测和实盘交易。
ui 提供可视化工具,支持数据分析和策略展示。
ml 集成机器学习功能,支持预测和模型训练。

架构图

以下是项目的核心架构图,展示了各模块之间的关系:

mermaid

代码示例

以下是一个简单的示例,展示如何使用 zvt 获取股票数据并计算均线:

from zvt.domain import Stock, Stock1dKdata
from zvt.factors import MaFactor

# 获取股票数据
Stock1dKdata.record_data(provider="em", code="000001")
df = Stock1dKdata.query_data(code="000001")

# 计算5日均线
factor = MaFactor(data_df=df, window=5)
factor.compute()
print(factor.factor_df)

总结

foolcage/zvt 的架构设计清晰,模块划分合理,便于开发者快速上手和扩展。其核心模块包括数据层、业务逻辑层和用户界面层,支持从数据获取到策略回测的全流程操作。通过丰富的代码示例和可视化工具,用户可以轻松实现量化交易需求。

核心功能与使用场景

foolcage/zvt 是一个功能强大的量化交易框架,专注于为交易者提供高效、灵活的工具和接口,支持从数据采集、策略开发到交易执行的全流程。以下是其核心功能与典型使用场景的详细介绍。


1. 数据采集与管理

核心功能
  • 多数据源支持:支持从多种数据源(如东方财富、新浪财经等)获取行情数据、财务数据、市场情绪数据等。
  • 统一的数据模型:通过 TradableEntityEntityEvent 抽象市场数据,提供统一的记录和查询接口。
  • 增量更新:支持数据的增量更新,确保数据的最新性和完整性。
使用场景
  • 数据初始化:首次使用时,通过 record_data 方法初始化数据。
  • 数据更新:定期运行 record_data 方法,确保数据的最新性。
  • 数据查询:通过 query_data 方法获取特定标的的历史数据或实时数据。
from zvt.domain import Stock, Stock1dHfqKdata

# 初始化数据
Stock.record_data(provider="em")
Stock1dHfqKdata.record_data(provider="em", entity_ids=["stock_sz_000001"])

# 查询数据
df = Stock.query_data(provider="em", index='code')
print(df)

2. 策略开发与回测

核心功能
  • 策略模板:提供多种策略模板(如均线策略、MACD策略等),支持快速开发和测试。
  • 因子计算:内置多种技术因子(如布林带、RSI等),支持自定义因子。
  • 回测框架:提供完整的回测框架,支持多线程和分布式回测。
使用场景
  • 策略开发:基于内置因子或自定义因子开发交易策略。
  • 回测验证:通过回测验证策略的有效性,优化参数。
  • 实时监控:将策略部署到实时交易环境,监控其表现。
from zvt.ml import MaStockMLMachine

# 训练机器学习模型
machine = MaStockMLMachine(entity_ids=["stock_sz_000001"], data_provider="em")
machine.train()

# 预测并展示结果
machine.predict()
machine.draw_result(entity_id="stock_sz_000001")

3. 交易执行与风控

核心功能
  • 交易接口:支持多种交易接口(如QMT、同花顺等),实现自动化交易。
  • 风控模块:内置止损、止盈、仓位控制等风控功能。
  • 动态标签系统:通过标签系统实现AI与人工干预的结合。
使用场景
  • 自动化交易:将策略部署到交易接口,实现自动化下单。
  • 风控管理:设置止损止盈条件,控制交易风险。
  • 动态调整:通过标签系统动态调整交易策略。
from zvt.trading import build_trading_plan, query_trading_plan

# 构建交易计划
build_trading_plan(build_trading_plan_model=BuildTradingPlanModel(...))

# 查询交易计划
plans = query_trading_plan(query_trading_plan_model=QueryTradingPlanModel(...))
print(plans)

4. 可视化与分析

核心功能
  • Dash & Plotly UI:提供交互式可视化界面,支持策略回测结果的展示。
  • 动态图表:支持K线图、分时图、资金流向图等多种图表。
  • 报表生成:自动生成交易报表,支持PDF和Excel格式。
使用场景
  • 策略分析:通过可视化界面分析策略表现。
  • 数据展示:展示市场数据、因子信号等。
  • 报告生成:生成交易报告,用于复盘和分享。

mermaid


5. 扩展性与定制化

核心功能
  • 插件系统:支持通过插件扩展功能(如数据源、策略等)。
  • API接口:提供REST API,支持与其他系统集成。
  • 开源生态:社区提供丰富的插件和策略模板。
使用场景
  • 功能扩展:通过插件添加新的数据源或策略。
  • 系统集成:通过API与其他系统(如CRM、ERP)集成。
  • 社区贡献:参与开源社区,分享策略或插件。
from zvt.plugin import main

# 运行插件
main()

总结表格

功能模块 核心能力 典型场景
数据采集与管理 多数据源、统一模型、增量更新 数据初始化、更新、查询
策略开发与回测 策略模板、因子计算、回测框架 策略开发、回测验证、实时监控
交易执行与风控 交易接口、风控模块、动态标签 自动化交易、风控管理、动态调整
可视化与分析 交互式UI、动态图表、报表生成 策略分析、数据展示、报告生成
扩展性与定制化 插件系统、API接口、开源生态 功能扩展、系统集成、社区贡献

安装与快速入门

ZVT 是一个强大的开源量化交易框架,支持多种交易标的(如A股、美股、港股等)和丰富的行情数据。以下是如何快速安装并开始使用 ZVT 的详细指南。

安装 ZVT

ZVT 可以通过 pip 直接安装。确保你的 Python 版本在 3.7 及以上:

python3 -m pip install -U zvt

如果需要升级到最新版本,可以运行:

python3 -m pip install --upgrade zvt

安装完成后,可以通过以下命令验证是否安装成功:

python -c "import zvt; print(zvt.__version__)"

快速入门

1. 启动主界面

ZVT 提供了两种用户界面:基于 Dash & Plotly 的 UI 和前后端分离的 UI。

Dash & Plotly UI

适用于回测和研究。安装完成后,在命令行中输入以下命令启动:

zvt

启动后,打开浏览器访问 http://127.0.0.1:8050/

前后端分离的 UI

适用于实时行情和用户交互。首先确保安装了 uvicorn

pip install uvicorn

然后启动 ZVT 服务:

zvt_server

访问 API 文档:http://127.0.0.1:8090/docs

2. 数据抓取与查询

ZVT 支持多种交易标的的数据抓取和查询。以下是一个简单的示例,展示如何抓取 A 股数据并查询:

from zvt.domain import Stock, Stock1dHfqKdata

# 抓取股票数据
Stock.record_data(provider="em")

# 查询股票数据
df = Stock.query_data(provider="em", index='code')
print(df)
3. 机器学习示例

ZVT 还集成了机器学习功能,以下是一个简单的机器学习示例:

from zvt.domain import Stock, Stock1dHfqKdata
from zvt.ml import MaStockMLMachine

# 抓取数据
Stock.record_data(provider="em")
entity_ids = ["stock_sz_000001", "stock_sz_000338", "stock_sh_601318"]
Stock1dHfqKdata.record_data(provider="em", entity_ids=entity_ids, sleeping_time=1)

# 训练模型
machine = MaStockMLMachine(entity_ids=["stock_sz_000001"], data_provider="em")
machine.train()

# 预测并展示结果
machine.predict()
machine.draw_result(entity_id="stock_sz_000001")
4. 运行示例脚本

ZVT 提供了丰富的示例脚本,可以直接运行以体验功能。例如:

nohup python examples/data_runner/kdata_runner.py >/dev/null 2>&1 &
nohup python examples/reports/report_tops.py >/dev/null 2>&1 &

这些脚本会自动抓取数据并生成报告。

总结

通过以上步骤,你可以快速安装 ZVT 并运行一些基础功能。更多高级功能(如动态标签系统、实时交易等)可以参考官方文档或项目中的示例代码。

总结

foolcage/zvt 通过其模块化设计、统一的数据模型和丰富的功能集,为金融数据分析和量化交易提供了强大的支持。无论是数据科学家、量化交易员还是普通投资者,都可以通过该项目快速实现从数据获取到策略开发的全流程。

【免费下载链接】zvt modular quant framework. 【免费下载链接】zvt 项目地址: https://gitcode.com/foolcage/zvt

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐