# agent-quantspace **Repository Path**: quantskills/agent-quantspace ## Basic Information - **Project Name**: agent-quantspace - **Description**: 只读镜像,源仓库:https://github.com/quantskills/agent-quantspace。提交与反馈请前往 GitHub。 AI-native quantitative research framework - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: https://github.com/quantskills/agent-quantspace - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-31 - **Last Updated**: 2026-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

QuantSpace

简体中文 | English

面向 AI 时代重新设计的量化投研框架:在项目目录里说清想法,AI 沿着既定工程边界把它落成可运行、可测试、可复用的策略研究代码。

Python Package manager Data AI tools License

QuantSpace 是面向 AI 时代重新设计的量化投研框架。使用任意 AI coding工具打开本项目目录,直接告诉 AI 想要下载的数据、验证的市场假设、因子灵感、机器学习 label、交易策略、回测约束或报告要求;AI 会沿着既定工程边界,把想法落成可运行、可测试、可复用的策略研究代码。 该项目兼容 ChatGPT Codex、Claude Code、Cursor、CodeBuddy、Qoder、TRAE、OpenCode、OpenClaw、Kimi Code 等主流 AI 编程工具;兼容声明以 README 与 AGENTS.md 为准,运行时按能力发现协作,而不是产品白名单。 真实行情通过默认的 PandaData 开箱可用。外部数据先进入 `skills.ingest`,完成数据获取、数据规范整理,再交给后续模块使用。如果你使用其他数据商或本地数据,只要接入同一套数据契约,后续数据管理、因子计算、策略开发、回测和报告流程就可以继续复用。 QuantSpace 自带一整套可被 AI 调用的 skills:获取数据,本地自动化管理 Parquet 数据 并可用 DuckDB 查询,计算和分析因子,开发规则类与机器学习策略,做组合构建和向量化 回测,再把绩效图表和 HTML 报告沉淀下来。`strategy` 提供横截面与时序策略的通用 类型和目标权重原语,`backtest` 负责统一执行与组合构建,`ml` 负责机器学习训练和预测。 目录下的 `SKILL.md` 会把协作规则写进项目,让新代码优先复用既有模块,而不是散落在一次性的脚本里。 ## 架构总览 外部行情先经 `ingest` 归一化进入 `store` 本地仓库,随后被各能力模块按需复用,最终沉淀为报告与可复用策略代码。整条研究回路由 AI 沿着固定的数据契约编排: ```mermaid flowchart TD idea["市场想法 / 假设"] --> ingest subgraph skills["skills/ · 可复用能力"] direction TB ingest["ingest
获取数据"] --> store["store
Parquet/DuckDB"] store --> compute["compute
指标/因子运算"] compute --> analyze["analyze
因子绩效分析"] analyze --> research["research
筛选/参数扫描"] research --> ml["ml
ML训练/预测"] compute --> strategy["strategy
通用策略类型·目标权重"] ml --> strategy strategy --> backtest["backtest
向量化回测·组合"] backtest --> report["report
HTML/MD 报告·图表"] end report --> out["可运行 / 可测试 / 可复用的研究代码"] vendor["其他数据商 / 本地数据"] -. 同一数据契约 .-> ingest ``` ## 项目结构 目录结构本身就是框架的一部分:AI 和研究员都能清楚知道,数据接入、通用能力、 策略逻辑、脚本、报告和测试应该分别放在哪里。 ```text quantspace/ skills/ 可复用能力 ingest/ 获取数据:默认 PandaData 客户端和符号转换 store/ 本地 Parquet 存储、DuckDB 查询和产物管理 compute/ 策略无关的指标、标签、工具与 Factor wrapper strategy/ 通用策略契约、选取类型与目标权重 helper analyze/ 因子分析、指标、归因、tearsheet backtest/ 向量化执行、权重、过滤器、成本 ml/ ML 辅助模块和可选模型引擎 research/ 因子筛选和参数扫描 report/ HTML 报告渲染和图表工具 factor_mining/ AI 多因子挖掘契约、端口与跨平台角色协议 strategies/ cross_sectional/ 具体横截面 factors、rules、ML 与 workflows time_series/ 具体时序 features、rules、ML 与 workflows scripts/ 全局数据导入、报告和维护入口 data/ 本地数据根目录;行情和研究产物默认不提交 reports/ 本地生成报告目录;strategy_examples/ 是公开产物例外 tests/ 按 skills、strategies、scripts 与契约边界组织的公开测试 ``` ## 公开 Skills Skills 是 AI 开发策略前应该优先调用的公共能力。 | Skill | 主要导入 | 用途 | |---|---|---| | `ingest` | `from skills.ingest import PandaDataClient` | 获取数据、默认 PandaData 接入、符号转换 | | `store` | `from skills.store.data_manager import DataManager` | 市场数据、因子、回测、模型元数据 | | `compute` | `from skills.compute.indicators import trend_score` | 策略无关的 OHLCV 指标、标签、工具与 `Factor` wrapper | | `strategy` | `from skills.strategy import StrategyResult` | 通用策略契约、选取类型与横截面/时序目标权重 helper | | `analyze` | `from skills.analyze.factor_analysis import IC_stat` | 因子诊断、归因、稳健性和时间序列检查 | | `backtest` | `from skills.backtest import VectorBacktester` | 向量化执行、组合权重、过滤器、成本、策略组合、exit 和 overlay 指标 | | `ml` | `from skills.ml.ml_engine import MLEngine` | ML 训练/推理 | | `research` | `from skills.research import screen_all_indicators` | 因子筛选和参数扫描 | | `report` | `from skills.report import ReportRenderer, write_research_bundle` | HTML 研究报告和图表工具 | | `factor_mining` | `from skills.factor_mining import ResearchBrief, FactorSpec, FactorExecutionAdapter, ResearchController` | AI 多因子挖掘的版本化契约、任意本地 Python 因子生成/解析、四端口、Research Controller 与跨平台角色任务协议 | 每个 skill 目录都有自己的 `SKILL.md` 使用说明。`strategy` 只放可复用的策略类型和 target-weight 原语;具体因子、特征、规则、模型行为和 workflow 放在 `strategies/`。 ## 快速开始 环境要求: - Python `>=3.10` - `uv` 安装默认环境,生成一份确定性 fixture 数据,然后运行 demo: ```bash uv sync uv run python -m scripts.generate_sample_data uv run python -m strategies.cross_sectional.workflows.run_demo uv run python -m strategies.time_series.workflows.run_demo uv run python -m pytest tests/ ``` fixture 数据是合成 OHLCV,不需要 PandaData 凭据,结果可复现,也可以随时重新生成。它会写入 `data/market/`;真实研究时,用 PandaData 或其他遵循同一数据模型的 adapter 导入日线 Parquet 即可。 可选 extras: ```bash uv sync --extra panda_data # PandaData SDK uv sync --extra analyze # 绘图、时序诊断和并行分析 uv sync --extra ml # 可选 PyCaret ML 辅助模块 uv sync --extra query # 可选 DuckDB 查询能力 uv sync --extra report # Jinja2 与报告图表 ``` ## PandaData 设置 PandaData 是可选依赖;安装 SDK 并配置凭据后即可取真实行情: ```bash uv sync --extra panda_data cp .env.example .env ``` 在 `.env` 中填写凭据。`PandaDataClient` 只读取 `PANDA_DATA_*` 凭据变量: ```bash PANDA_DATA_USERNAME=86xxxxxxxxxxx PANDA_DATA_PASSWORD=your-password ``` 然后试一次小规模导入: ```bash uv run python -m scripts.import_panda_data_demo \ --symbol SHSE.600000 \ --start-date 20230101 \ --end-date 20231231 ``` QuantSpace 使用 `EXCHANGE.CODE` 符号格式,例如 `SHSE.510300`。PandaData 格式可以 通过 helper 转换: ```python from skills.ingest import to_panda_data_symbol, to_quantspace_symbol to_panda_data_symbol("SHSE.510300") # "510300.SH" to_quantspace_symbol("510300.SH") # "SHSE.510300" ``` 场内 ETF/LOF 行情使用基金接口,不按股票或回测因子获取: ```python from skills.ingest import PandaDataClient client = PandaDataClient() bars = client.get_fund_daily( "20250610", "20250613", symbol="SHSE.510300", ) ``` 前、后复权行情分别使用 `get_fund_daily_pre` 和 `get_fund_daily_post`。三个基金日线方法会自动将超过 365 个自然日的区间 分块下载并合并;ETF 申赎数据使用 `get_fund_etf_*`,不包含在此处理范围内。 ## 数据模型 数据模型保持简单明确,方便 AI 生成的策略代码稳定复用。默认布局如下: ```text data/ market/{frequency}/{symbol}.parquet adj_factor/{symbol}.parquet factors/{namespace}/ factor_test/{namespace}/ correlation/{namespace}/ backtest/{namespace}/ models/{namespace}/ ``` 每个 OHLCV frame 以 `eob` 为索引,列为: ```text open, high, low, close, volume ``` 品种集合由策略或调用方显式持有,并通过 `read_symbols` 读取: ```python from skills.store.data_manager import DataManager panel = DataManager().read_symbols( ["SHSE.510300", "SHSE.510500"], frequency="1d", ) ``` 返回 panel 的 MultiIndex 为 `(symbol, eob)`。因子、回测和模型目录下的第一层名称只是 调用方提供的 artifact namespace,不是由 `DataManager` 维护的品种池。 `DataManager` 使用 `QUANTSPACE_DATA_ROOT`(默认 `data/`);报告使用 `QUANTSPACE_REPORTS_ROOT`(默认 `reports/`)。需要在仓库外运行整个工作区时,还可以设置 `QUANTSPACE_WORKSPACE_ROOT`。三个路径都由 `resolve_workspace_paths()` 统一解析。 ## 策略示例 示例展示的是推荐工作方式:通用策略类型放在 `skills.strategy`,具体 factors、features、 rules、ML 权重函数与 workflow 放在 `strategies/`,统一执行交给 `VectorBacktester`。 ### 横截面轮动 流程: ```text panel OHLCV -> concrete factors/rules -> target weights -> VectorBacktester -> metrics ``` 运行: ```bash uv run python -m strategies.cross_sectional.workflows.run_demo ``` 这个示例通过 `skills.strategy.cross_sectional.ModularBacktester` 组合简单动量和低波动因子, 数据来自 demo 显式品种列表对应的 `data/market/1d/` 日线 Parquet。 ### Time-Series ML 流程: ```text raw OHLCV bars -> feature engineering -> triple-barrier labels -> model -> backtest ``` 运行: ```bash uv run python -m strategies.time_series.workflows.run_demo ``` 这个示例使用 `strategies.time_series.features.make_price_volume_features`、 `TripleBarrierLabelMaker`、一个小型 scikit-learn 分类器、 `skills.strategy.time_series.signal_to_single_asset_weights`、date × symbol 权重矩阵和 `skills.backtest.VectorBacktester`,数据来自已有单品种日线 Parquet。 ### 示例策略报告 ```bash uv run python -m scripts.run_strategy_reports ``` 这个薄编排脚本会读取 `data/market/1d/` 下已有的 PandaData 日线 Parquet;可用 `--data-root` 指向另一份本地数据,并在解析后的 reports root 的 `strategy_examples/` 下写出 4 份公开策略报告和绩效图。横截面策略族包含期货规则和 期货 XGBoost 排序,时序策略族包含一个规则类示例和一个 XGBoost 示例。策略逻辑放在 `strategies/`;通用选取和 target-weight 类型位于 `skills.strategy`;存储、向量化执行、回测指标、ML helper 和报告渲染位于其他 `skills/`。 下面是脚本生成的 4 份公开示例绩效图(基于真实历史行情回测,**仅用于演示框架能力,不代表未来收益,也不构成任何投资建议**):

CSI 300 IF · MA10 ATR 反转
规则 / 时序 · 示例区间 2024 +22.1% · 2025 +36.3%

CSI 300 IF · XGBoost 三重障碍
ML / 时序 · 示例区间 2024 +12.9% · 2025 +4.9%

期货横截面反转
规则 / 横截面 · 示例区间 2024 +30.8% · 2025 +31.4%

期货 XGBoost 排序
ML / 横截面 · 示例区间 2024 +18.7% · 2025 +45.7%
> 上述区间收益来自 `reports/strategy_examples/` 下的公开示例报告,基于历史行情回测,受数据窗口、参数与样本范围影响,**不构成收益承诺或投资建议**。完整指标见对应的 `/index.html` 报告。 ## 文档索引 需要了解 README 背后的细节时,可以继续阅读: - [PandaData 接入](docs/panda_data_ingest.md) ## 开发与验证 交付改动前运行公开测试: ```bash uv run python -m pytest tests/ uv run ruff check . ``` 发布前还应执行 release safety scan,检查私有路径、凭证、私有策略名称和已经移除的 研究型模块是否误入仓库。生成的数据和私有研究报告应留在本地;开源仓库中只保留代码、 文档、测试、小型模板,以及 `reports/strategy_examples/` 下经过脱敏 的公开示例报告。 ## 数据来源与假设 - 默认数据来源为 PandaData;也可接入其他数据商或本地数据,只要遵循相同的数据契约。 - 仓库内置的 fixture 数据为合成 OHLCV,仅用于演示与可复现测试,不代表真实行情。 - 框架不附带任何已验证收益的策略;`strategies/` 与 `reports/strategy_examples/` 下的内容均为示例。 ## 限制与风险边界 - QuantSpace 是研究与工程框架,不是自动交易系统,不接券商接口,不执行订单。 - 因子、策略、回测和报告输出仅为研究材料,受数据窗口、参数选择和样本范围限制。 - 是否用于真实交易,需由用户结合自己的策略、风控和执行流程独立判断。 ## 免责声明 本仓库仅作量化研究方法与工程框架整理,不验证任何收益声明,不构成任何投资建议。请勿将框架或其示例输出直接作为投资决策依据。 ## License This project is licensed under the GNU General Public License v3.0. See [LICENSE](LICENSE). ## 项目创始人与 🐼 PandaAI / QUANTSKILLS 社群二维码
开发者二维码
扫码添加微信,针对本项目提问。
PandaAI / QUANTSKILLS 社群
PandaAI 社群二维码
扫码加入社群,交流 QUANTSKILLS 技能、Agent 工作流与量化研究实践。