The project's README from github.com/CamusGIT/EvoQuant. As one markdown file: README.md.
An autonomous research agent for quantitative science.
EvoQuant is a self-evolving AI research agent specialized in quantitative investment research. It runs the full research loop autonomously — digesting research reports into structured knowledge, navigating a local papers library, generating and ranking research ideas, and executing real factor experiments on offline market data with rigorous IC-style evaluation.
Where general-purpose "AI scientist" frameworks target broad academic discovery, EvoQuant is purpose-built for the quant research workflow: alpha factor research, alpha generation methodology, and portfolio strategy research, with reproducible experiment runtimes and quantitative metrics (IC / ICIR / RANKIC / coverage) as first-class citizens.
Most autonomous research agents assume an open ecosystem — public papers with reference implementations on GitHub. Quantitative research rarely works that way: much of the field's methodology lives in broker research reports (研报) — unstructured PDFs that almost never ship with open-source code.
EvoQuant is designed for exactly this gap:
rawpaper/ become a structured, searchable private knowledge base (wiki/): every record carries title / source / strategy / method / experiment / result fields with inline evidence citations, extracted under strict no-fabrication rules.--ui webui.EvoQuant is built on a DeepAgents / LangGraph core: a main agent orchestrates specialized sub-agents, middleware and tools around a persistent state graph.
flowchart TB
subgraph Surfaces["🎛️ Surfaces"]
CLI["CLI / TUI"]
WEB["WebUI"]
CH["Channels<br/>(Telegram · Slack · Feishu · …)"]
CRON["Scheduler<br/>(cron-style tasks)"]
end
subgraph Core["🧠 Agent Core (LangGraph gateway)"]
MAIN["Main Agent<br/>plan · orchestrate · summarize"]
SUB["Sub-Agents<br/>research · code · debug · analyze · write"]
MEM["Memory<br/>observation graph<br/>(distill · link · recall)"]
MW["Middleware<br/>context editing · adaptive tools"]
end
subgraph Capabilities["⚙️ Capabilities"]
SKILLS["Skills<br/>(SKILL.md knowledge packs)"]
TOOLS["Tools + MCP"]
LLM["LLM Providers<br/>(multi-provider registry)"]
end
subgraph Workspace["📁 Research Workspace (workdir)"]
KB["knowledge base<br/>(markdown papers · JSONL)"]
EXP["experiments/<br/>(panels · artifacts · results)"]
CODE["code-repo/<br/>(offline data packages)"]
end
Surfaces --> Core
MAIN --> SUB
MAIN <--> MEM
MW --> MAIN
Core --> Capabilities
SKILLS --> Workspace
SUB --> Workspace
Key ideas
| Layer | Role |
|---|---|
| Surfaces (CLI/TUI, WebUI, channels, scheduler) | One agent session, many frontends — all routed through a UI-agnostic LangGraph gateway. |
| Main agent + sub-agents | The main agent plans and delegates; sub-agents own focused tasks (literature work, coding, debugging, analysis, writing). |
| Skills | Installable knowledge packs (skills/<name>/SKILL.md + references/assets/scripts) that give the agent domain procedures — loaded on demand when a query matches. |
| Memory | Cross-cycle research memory: feasible/unsuccessful directions, distilled strategies, linked observations. |
| Research workspace | A per-cycle workdir holding the local knowledge base, experiment outputs, and the offline code-repo data packages the runtime discovers at run time. |
flowchart LR
A["📄 quant-paper-extractor<br/>PDF → markdown → JSONL"] --> B["📚 local-paper-navigator<br/>paper search · reading"]
B --> C["💡 research-ideation<br/>literature tree · ELO tournament"]
C --> D["🧪 quant-experiment-runtime<br/>panel · entry point · IC metrics"]
D --> E["🧠 memory<br/>(what worked / what failed)"]
E -.-> C
quant-paper-extractor converts quant research report PDFs into structured JSONL records (strategy, method, experiment, result) for the local knowledge base.local-paper-navigator searches the papers library by keyword/abstract/full-text, disambiguates queries, and reads papers with an L1/L2/L3 strategy.research-ideation builds challenge-insight trees, generates anchor-first ideas, refines them in persona-driven tracks, and ranks them with an ELO tournament (Final = Novelty + Relevance + Clarity − Difficulty).quant-experiment-runtime discovers offline datasets under code-repo/, builds panels, runs a Research Artifact through its Python entry point, and evaluates IC / ICIR / RANKIC / coverage.The papers library lives at the repo root papers/ — mounted at /papers/, served through the paper_search / paper_read / paper_section tools:
papers/
raw/{paperId}.pdf ← drop research report PDFs here (any filename)
markdown/{paperId}.md ← auto-created: full-text markdown per report
cards/{paperId}.jsonl ← auto-created: structured JSONL knowledge records
context_brief.md / index.jsonl / manifest.jsonl
Three steps: drop PDFs into papers/raw/ → tell the agent 「入库」 → start a new session (the paper tools mount at agent startup). The CLI prints a hint at startup whenever papers/raw/ holds PDFs that have not been ingested yet.
quant-paper-extractor runs the pipeline on 「入库」: PDF → markdown → cards → refresh, hash-keyed and incremental — re-running only processes new files.research-ideation grounds every idea in reports retrieved from it via local-paper-navigator — by design, generic web search is never used to find papers.All skills live under EvoQuant/skills/ and are self-contained (SKILL.md + references/ + assets/ + scripts/).
| Skill | Description |
|---|---|
quant-paper-extractor |
Convert quant research report PDFs to markdown and structured JSONL records |
local-paper-navigator |
Search and read papers from a local papers library with ranked retrieval |
research-ideation |
Quant-focused ideation: scope selection → literature grounding → ELO-ranked proposals |
quant-experiment-runtime |
Experiment executor: dataset discovery, panel build, IC/ICIR/RANKIC evaluation |
research-survey |
Structured literature survey synthesis from collected papers |
paper-graph |
Genealogical lineage map of a research field as Mermaid diagrams |
| Skill | Description |
|---|---|
experiment-pipeline |
Structured 4-stage experiment execution with attempt budgets |
experiment-craft |
Experiment debugging, logging and iteration |
experiment-iterative-coder |
Iterative code refinement (plan → code → evaluate → refine) |
paper-planning |
Research paper planning and outline generation |
paper-writing |
Section-by-section paper drafting |
paper-review |
Adversarial self-review before submission |
paper-rebuttal |
Rebuttal writing after peer review |
academic-slides |
Academic presentation and research talk creation |
evo-memory |
Persistent research memory and self-evolution |
evomath-tao |
Rigorous proof and grading workflow for mathematical claims |
| Skill | Description |
|---|---|
paper-figures |
Publication-ready matplotlib figures |
nano-banana |
AI-generated slides and illustrations via Gemini image generation |
find-skills |
Discover agent skills from the open ecosystem |
skill-creator |
Create, improve and evaluate skills |
Requires Python 3.11+ (< 3.14). We recommend uv.
# Install uv (if you don't have it)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and run from source
git clone https://github.com/CamusGIT/EvoQuant.git
cd EvoQuant
uv sync
uv run evoquant
Or install as a tool from git:
uv tool install "git+https://github.com/CamusGIT/EvoQuant"
evoquant
docker compose up
cp .env.example .env
Pick one LLM provider and fill in your key (Anthropic, OpenAI, Google, MiniMax, NVIDIA, OpenRouter, …). See .env.example for all options, including optional web search and channel credentials.
uv run evoquant
Drop quant research report PDFs into papers/raw/ to feed the knowledge base (see Feeding the knowledge base) — the CLI reminds you at startup until they are ingested. Then, in a session:
"入库 / ingest the new PDFs in papers/raw/." # quant-paper-extractor
"Find papers about cross-sectional momentum." # local-paper-navigator
"I want a research direction in alpha factor research." # research-ideation
"Run the proposed factor on the offline dataset and report IC/ICIR." # quant-experiment-runtime
Skills load automatically when your request matches their descriptions. Install more with /install-skill, browse with the skill browser, or ask the agent directly.
run_batch evolution loops)Contributions are welcome — see CONTRIBUTING.md. The fastest way to extend EvoQuant is usually a new skill; see EvoQuant/skills/README.md for the skill anatomy and authoring guide.
This project is licensed under the Apache License 2.0 — see LICENSE.
EvoQuant was built with reference to EvoScientist — an open-source multi-agent evolving AI scientist framework for end-to-end scientific discovery. EvoQuant reuses its agent core architecture (DeepAgents/LangGraph multi-agent runtime, memory, channels and skill system) and extends it into a domain-specific platform for autonomous quantitative research, with a rewritten skill suite for the quant research pipeline.
We thank the EvoScientist team for open-sourcing their work. The companion skill repository EvoSkills informed the design of several research-workflow skills included here.
If you use EvoQuant in your work, please also cite the original project it builds upon:
@article{evoscientist2026,
title={EvoScientist: Towards Multi-Agent Evolving AI Scientists for End-to-End Scientific Discovery},
author={Lyu, Yougang and Zhang, Xi and Yi, Xinhao and Zhao, Yuyue and Guo, Shuyu and Hu, Wenxiang and Piotrowski, Jan and Kaliski, Jakub and Urbani, Jacopo and Meng, Zaiqiao and Zhou, Lun and Yan, Xiaohui},
journal={arXiv preprint arXiv:2603.08127},
year={2026}
}