Post

X2STRATEGY000: X2Strategy 单独章节 - Paper-to-Strategy Compiler 与 Quant Research Harness

X2STRATEGY000: X2Strategy 单独章节 - Paper-to-Strategy Compiler 与 Quant Research Harness

这一篇正式单独开一个新章节:

1
X2STRATEGY000 -> X2Strategy standalone study

我们之前已经多次提到 X2Strategy,但主要是在这些上下文里:

1
2
3
4
QuantMind vs X2Strategy
HKUDS + LLMQuant + X2Strategy integration
PENGYI_HARNESS_MAP000
LLMQUANT008

那些文章里,X2Strategy 更像一个比较对象或者下游模块。

这一篇开始,把它单独作为一个项目主线来看。

当前判断

一句话:

1
X2Strategy = paper / research idea -> StrategySpec -> code -> backtest -> diagnosis 的 strategy compiler harness.

它不是普通 trading bot。

它更像:

1
quant research compiler

也就是把论文、草稿、研报、策略想法这些非结构化研究输入,转成可以审计、可以实现、可以验证、可以诊断的量化策略产物。

这对我们的 Pengyi Quant Research OS 很关键。

因为我们真正想做的不是:

1
LLM 直接说一个交易观点

而是:

1
2
3
4
5
6
7
8
research input
  -> structured strategy spec
  -> implementation contract
  -> runnable code
  -> reproducible backtest
  -> diagnosis
  -> PM review
  -> next research plan

X2Strategy 正好卡在这条链路的中间核心位置。

项目身份

当前公开仓库:

1
2
3
4
repo: ALAGENT-HKU/x2strategy
url: https://github.com/ALAGENT-HKU/x2strategy
default branch: main
visibility: public

我在 2026-07-01 通过 GitHub CLI 确认了当前 repo 仍然公开存在。

README 的核心口号是:

1
Any Research Input -> Strategy Spec -> Executable Code -> Backtest -> Diagnosis

本地路径:

1
E:\2026\B面\project\x2strategy-main\x2strategy-main

为什么要单独看 X2Strategy

因为它补的是我们 Quant Research OS 最容易缺的一环:

1
从想法到实验的可审计转换层

很多 AI quant 系统会停在:

1
idea generation

或者停在:

1
generate some code

但真正的 research production 需要中间层:

1
StrategySpec

这个中间层的价值是:

1
2
3
4
5
6
1. 人可以审
2. 机器可以读
3. 代码可以生成
4. 回测可以复现
5. 错误可以定位
6. 后续可以换 backtest engine

直接 paper-to-code 很危险。

因为论文里的策略通常有:

1
2
3
4
5
6
7
8
ambiguous formula
appendix-only constants
unclear rebalance timing
missing execution assumptions
factor-return input instead of tradable price input
multiple strategy variants
benchmark-only logic
reporting metric vs trading logic confusion

所以 X2Strategy 最重要的思想是:

1
2
不要从论文直接跳到代码。
先从论文变成 StrategySpec。

总 pipeline

X2Strategy 的主链路可以压缩成:

1
2
3
4
5
6
7
8
PDF / MD / DOCX / TXT
  -> PaperContent
  -> ExtractionResult
  -> StrategySpec
  -> generated Backtrader code
  -> validation
  -> backtest
  -> diagnosis report

对应模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
paper2spec/
  parser.py
  extractor.py
  models.py
  prompts.py
  operator_pitfall.py
  render.py
  search.py

spec2code/
  models.py
  validator.py
  config.py

references/
  paper2spec.md
  spec2code.md
  extraction_quality.md
  backtrader_patterns.md
  indicator_cookbook.md
  data_sources.md

schemas/
  paper_content.schema.json
  strategy_spec.schema.json

examples/
  upsa/

tests/

这个结构很清楚:

1
2
3
4
5
6
paper2spec = research document -> structured strategy
spec2code = structured strategy -> executable code / validation
references = domain grounding and anti-hallucination docs
schemas = machine-checkable contracts
examples = reproducible cases
tests = deterministic safety net

paper2spec

paper2spec 是第一阶段。

它把论文或其他研究输入转成结构化内容和策略规格。

输入格式

它支持:

1
2
3
4
5
PDF
Markdown
DOCX
plain text
keyword search

这点很重要。

因为真实 quant research input 不会只有论文。

它可能是:

1
2
3
4
5
6
academic paper
internal research memo
blog
strategy draft
market note
factor idea

PaperContent

第一层输出是 PaperContent

核心字段包括:

1
2
3
4
5
6
7
8
9
10
title
abstract
methodology
data_description
signal_logic
results
tables
formulas
references
full_text

这里的关键不是摘要。

关键是把论文拆成和策略实现相关的三个核心部分:

1
2
3
methodology
data_description
signal_logic

这三个部分分别回答:

1
2
3
方法是什么?
数据是什么?
信号和执行逻辑是什么?

Parser 的两种模式

X2Strategy 的 parser 有两个模式。

Mode A: 直接全文上下文

适合普通长度论文。

流程:

1
2
3
4
5
PDF
  -> pymupdf4llm text extraction
  -> full text / truncated context
  -> 3 parallel LLM calls
  -> methodology / data_description / signal_logic

它的优点是:

1
2
3
fast
simple dependencies
good for most normal papers

Mode B: FAISS semantic retrieval

适合超长论文或细节埋得很深的情况。

流程:

1
2
3
4
5
6
PDF
  -> chunking
  -> embedding
  -> FAISS index
  -> section-specific retrieval
  -> LLM extraction

它不是 GraphRAG。

更准确地说,它是:

1
semantic retrieval assisted paper parsing

它的价值是避免长论文上下文限制,同时提高 buried detail 的召回。

5-layer extraction

X2Strategy 的 extractor 使用 5 层 LLM extraction。

这是整个项目最值得学的地方之一。

1
2
3
4
5
Layer 0: Strategy Detection
Layer 1: Metadata + Data Requirements
Layer 2: Indicators
Layer 3: Logic Pipeline
Layer 4: Execution Plan + Risk Management

Layer 0: Strategy Detection

先判断论文里到底有几个独立策略。

这一步很关键。

因为很多论文里会有:

1
2
3
4
5
6
main strategy
appendix variant
robustness variant
benchmark
theoretical procedure
reporting-only experiment

如果不先识别,LLM 很容易把多个策略混成一个四不像。

Layer 1: Metadata + Data Requirements

这一层提取:

1
2
3
4
5
6
7
8
9
strategy_name
strategy_type
asset_class
data_source
lookback_period
data_frequency
time_period
universe_assets
expected_performance

这相当于策略的外部 contract。

如果这里错了,后面代码再漂亮也没用。

Layer 2: Indicators

这一层提取上游指标和输入对象:

1
2
3
4
5
6
7
8
9
indicator_id
name
category
formula
inputs
parameters
scope
output_type
data_semantics

一个重要设计原则:

1
2
indicators 只放上游输入和数据对象。
真正 executable formula 应该进入 logic_pipeline。

这可以避免指标层和逻辑层互相打架。

Layer 3: Logic Pipeline

这是策略的核心算法。

字段包括:

1
2
3
4
5
6
7
8
9
10
11
step_id
description
function
scope
group_by
inputs
parameters
expression
output
output_type
executable_explanation

它要回答:

1
2
3
4
5
先算什么?
再筛什么?
怎么排名?
怎么组合?
怎么生成 trade_signal 或 portfolio_weights?

Layer 4: Execution Plan + Risk Management

这一层把策略逻辑落到执行:

1
2
3
4
5
6
7
trigger
frequency
delay_bars
price_type
signal_source
position_sizing
risk_management

这很重要。

因为 quant research 里最常见的问题就是:

1
信号在 t 时刻生成,但用了 t+1 才知道的信息。

所以 X2Strategy 把 timing 和 execution delay 写进 spec,是正确的工程习惯。

StrategySpec

StrategySpec 是 X2Strategy 的核心中间产物。

它不是普通 markdown。

它是机器可读的策略对象。

核心字段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
strategy_name
strategy_type
asset_class
description
price_data
volume_data
fundamental_data
alternative_data
lookback_period
data_frequency
data_source
time_period
universe_assets
expected_performance
indicators
logic_pipeline
execution_plan
risk_management
needs_human_review

我认为最关键的字段是:

1
needs_human_review

因为它承认一件事:

1
LLM 不应该假装所有东西都知道。

当论文没有说清楚参数、公式、执行时点、约束条件时,系统应该标出需要人工确认,而不是自动编一个默认值。

这就是 human PM review 的雏形。

spec2code

spec2code 是第二阶段。

它负责把 StrategySpec 推向代码和验证。

README 里强调:

1
AST validation + Backtrader structural checks + indicator registry

也就是说,它不是:

1
generate and hope

而是:

1
2
3
4
5
6
7
generate
  -> parse Python AST
  -> check Backtrader import
  -> check bt.Strategy class
  -> check Cerebro runner
  -> check main guard
  -> check bt.indicators references

这个思路非常值得我们学习。

因为量化代码生成最怕的是:

1
看起来像代码,但实际不可运行。

或者:

1
能运行,但用了不存在的 indicator / 错误 API。

X2Strategy 用 validator 先挡掉一批低级错误。

Reference docs 不只是 prompts

X2Strategy 一个很强的设计是 references/

里面有:

1
2
3
4
5
6
7
backtrader_patterns.md
indicator_cookbook.md
data_sources.md
extraction_quality.md
paper2spec.md
spec2code.md
skill-internals.md

README 里明确说,LLM 会 hallucinate Backtrader API。

比如:

1
2
3
SMA default period
RSI internal moving average
BollingerBands line names

所以不能只靠 prompt。

要靠:

1
source-verified reference docs

这对我们很重要。

未来 Pengyi Quant Research OS 也必须有类似东西:

1
2
3
4
5
6
factor_operator_cookbook.md
backtest_protocol.md
leakage_checklist.md
pandas_time_series_patterns.md
portfolio_construction_reference.md
worldquant_public_safe_boundary.md

这就是把经验从模型记忆转成系统资产。

extraction_quality

references/extraction_quality.md 是非常关键的文件。

它定义了很多 grounded extraction 规则。

核心原则可以压缩成:

1
2
3
4
5
paper text first
selected plan second
user clarification third
existing content/spec artifacts fourth
operator pitfall retrieval fifth

也就是说:

1
不要从模型记忆重构公式。

如果公式缺失,就写:

1
needs_human_review

而不是瞎补。

这就是 research reliability。

Operator Pitfall Index

X2Strategy 还有一个 operator_pitfall_index.md

它用于 repair-style retrieval。

注意,这里的 RAG 不是通用知识库 RAG。

它更像:

1
high-risk formula / operator audit retrieval

也就是当策略涉及:

1
2
3
4
5
6
7
8
9
10
portfolio optimization
shrinkage
PCA
covariance
leave-one-out
Sherman-Morrison
ridge penalty
normalization
direct weights
timing

系统会检索相关 pitfall,作为审计 checklist。

这对量化研究非常现实。

因为 paper-to-strategy 最容易死在这些地方:

1
2
3
4
5
6
公式翻译错
矩阵维度错
协方差和 second moment 搞混
中间权重和最终权重搞混
reporting scaling 和 trading scaling 搞混
样本内和样本外时点错

Agent Skill 形态

X2Strategy 不只是 Python package。

它还以 SKILL.md 的方式暴露成 Agent Skill。

也就是可以在:

1
2
3
4
GitHub Copilot
Claude Code
Codex-like local agent
OpenClaw

里作为 /x2strategy 使用。

这点对我们现在的 Harness 方向很有启发。

它说明:

1
quant workflow 可以被封装成 agent skill

而不是每次重新写 prompt。

一个 skill 应该包含:

1
2
3
4
5
6
7
8
9
10
description
trigger condition
first response contract
setup flow
workflow steps
output paths
review gates
internal toolchain
references
limitations

这和我们现在做 PENGYI_HARNESS_MAP 是同一条线。

UPSA example

项目自带 examples/upsa/

这个例子很重要,因为它说明 X2Strategy 不只是口号。

目录里有:

1
2
3
4
5
6
7
8
upsa_content.md
upsa_content.json
upsa_spec.md
upsa_spec.json
upsa_operator_pitfall_context.md
upsa_review_and_diagnosis.md
universal_portfolio_shrinkage_approximation.py
input/

这个例子的输入是一个 UPSA paper:

1
Universal Portfolio Shrinkage Approximation

它不是直接 broker trading。

它是:

1
factor return series -> factor portfolio weights

这点很关键。

X2Strategy 没有假装所有研究策略都能直接实盘下单。

它明确指出:

1
2
some strategies are research/backtest contracts,
not broker-connected live strategies.

这就是成熟的边界意识。

UPSA diagnosis 给我们的启发

upsa_review_and_diagnosis.md 里有一个非常好的例子。

它指出初始 spec 把两个 shrinkage object 混了:

1
2
portfolio-construction precision shrinkage
trace-preserving normalization target

这就是 paper-to-code 里最真实的问题:

1
模型可能抓到了正确主题,但混淆了不同数学对象。

最后诊断里会记录:

1
2
3
4
5
what was mixed
what HITL decisions were applied
what outputs were produced
what validation metrics were achieved
what residual gaps remain

这就是我们需要学习的 research engineering 口味。

不只是生成结果。

而是保留:

1
2
3
4
5
error
decision
artifact
metric
residual gap

和 QuantMind 的区别

之前我们比较过 QuantMind 和 X2Strategy。

现在可以更精确地说:

SystemCore QuestionOutput
QuantMind如何把大量金融材料变成长期可复用知识KnowledgeCard / PaperCard / FactorMemory
X2Strategy如何把一个策略输入变成可实现、可回测、可诊断对象StrategySpec / code / backtest / diagnosis

所以二者关系是:

1
2
QuantMind = memory and knowledge layer
X2Strategy = compiler and execution bridge

组合起来就是:

1
2
3
4
5
6
materials
  -> QuantMind knowledge objects
  -> candidate strategy idea
  -> X2Strategy StrategySpec
  -> code / backtest / diagnosis
  -> write back to QuantMind

和 Magents 的区别

Magents 更像:

1
multi-agent trading simulation runtime

它关注:

1
2
3
4
5
6
7
8
9
market event
strategy pod
signal agent
execution agent
order event
fill event
portfolio update
risk validation
performance metrics

X2Strategy 更像上游 compiler:

1
2
3
strategy idea / paper
  -> StrategySpec
  -> code contract

所以合理组合是:

1
2
X2Strategy generates and validates strategy contract.
Magents runs richer market simulation and execution loop.

和 Vibe-Trading / AI-Trader 的区别

Vibe-Trading 更偏:

1
agentic trading research workflow

AI-Trader 更偏:

1
agent-native trading platform / live trading direction

X2Strategy 更偏:

1
paper-to-strategy compiler

所以我们可以这样放:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
QuantMind:
  knowledge memory

X2Strategy:
  strategy compiler

Magents:
  simulation runtime

Vibe-Trading:
  research workflow experience

AI-Trader:
  agent trading product / platform

和 RD-Agent 的关系

RD-Agent 的启发是:

1
2
3
4
research
  -> develop
  -> feedback
  -> next research

X2Strategy 可以成为 RD-Agent 在 quant 场景里的一个子模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Research Agent:
  reads paper / idea
  proposes strategy hypothesis

X2Strategy:
  converts it into StrategySpec and code

Develop Agent:
  runs implementation / backtest / validation

Diagnosis Agent:
  checks leakage / mismatch / robustness

PM:
  decides accept / reject / iterate

这正好对应我们之前定义的:

1
2
3
4
5
6
7
R&D Agent for Quant Research
= 自动提出因子假设
+ 自动实现
+ 自动回测
+ 自动诊断偏差
+ 自动生成下一轮研究计划
+ 人类 PM 审核

对 Pengyi Quant Research OS 的映射

我会把 X2Strategy 映射到我们的系统里:

Pengyi OS ModuleX2Strategy ComponentRole
ResearchInputPDF / MD / DOCX / TXT / search研究输入
PaperContentpaper2spec.models.PaperContent论文内容结构化
StrategyDetectorLayer 0检测一个或多个策略
StrategySpecpaper2spec.models.StrategySpec策略可审计中间层
HumanReviewneeds_human_review人类 PM 审核
PitfallRetrieveroperator_pitfall.py高风险公式审计
CodeValidatorspec2code.validator代码可运行前检查
BacktestArtifactgenerated strategy + metrics回测产物
DiagnosisReportreview and diagnosis markdown偏差诊断
MemoryWritebacklibrary outputs回写 Research OS

压缩成一条链:

1
2
3
4
5
6
7
8
9
ResearchInput
  -> PaperContent
  -> StrategySpec
  -> HumanReview
  -> Code
  -> Validation
  -> Backtest
  -> Diagnosis
  -> MemoryWriteback

这就是 Quant / Trading Harness 的核心形态。

我们应该学习什么

1. 学 StrategySpec schema

我们自己的 Quant Research OS 也应该有:

1
2
3
4
5
6
7
FactorHypothesis
StrategySpec
DataContract
BacktestConfig
ValidationResult
DiagnosisReport
PMReview

不能只靠散文式笔记。

2. 学 human review gate

needs_human_review 是关键设计。

它告诉我们:

1
不确定时,系统应该停下来问人。

特别是:

1
2
3
4
5
6
7
8
9
rebalance frequency
lookback window
execution delay
data source
missing formula
normalization
position sizing
transaction cost
live vs research contract

3. 学 reference docs

不要把所有知识写进 prompt。

要沉淀成:

1
2
3
4
5
6
reference docs
schema
tests
pitfall index
validator
examples

4. 学 diagnosis report

每一次实验都应该留下:

1
2
3
4
5
6
7
what was attempted
what was extracted
what was implemented
what was validated
what failed
what human decision was applied
what residual gap remains

这就是可复利的 research artifact。

对我们 CV / 面试的价值

如果面试官问:

1
你怎么看 AI for Quant Research?

我们可以说:

1
2
3
4
5
我不认为它只是让 LLM 生成交易观点。
我更关注 paper-to-strategy 和 research-to-experiment 的可审计流水线。
X2Strategy 给了一个很好的 skeleton:
research input -> PaperContent -> StrategySpec -> code -> validation -> backtest -> diagnosis.
我想把这个思想和 QuantMind 的 knowledge layer、Magents 的 simulation layer、RD-Agent 的 R&D loop 结合起来,做一个更完整的 Quant Research OS。

如果面试官继续问:

1
为什么不能直接 paper-to-code?

我们可以答:

1
2
3
因为直接 paper-to-code 会丢 auditability。
论文里经常有多个策略版本、公式缺失、执行时点不清、指标和交易逻辑混淆。
StrategySpec 中间层可以让人先审,再生成代码,也能把 needs_human_review 和 pitfall retrieval 加进去。

对我们自己的下一步

X2Strategy 这条线后面可以继续做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
X2STRATEGY001:
  运行 / 复盘 UPSA example

X2STRATEGY002:
  StrategySpec schema 深拆

X2STRATEGY003:
  paper2spec prompt / extraction quality / pitfall index 深拆

X2STRATEGY004:
  spec2code validator 和 Backtrader reference docs 深拆

X2STRATEGY005:
  Pengyi Mini Strategy Compiler v0

最重要的是第五步:

1
Pengyi Mini Strategy Compiler v0

最小 demo 可以是:

1
2
3
4
5
6
7
8
9
input:
  one public-safe factor idea markdown

output:
  StrategySpec.json
  backtest_config.yaml
  simple pandas backtest
  diagnosis_report.md
  pm_review.md

这会非常适合我们的 quant 面试和 AI harness 面试。

当前不足和风险

我们也要清楚 X2Strategy 的边界。

1. 不是所有策略都能实盘

很多论文策略只是:

1
2
3
4
factor return portfolio
asset pricing procedure
synthetic portfolio
research benchmark

不是直接 broker order strategy。

2. 表格和公式抽取仍然是难点

README 里也提到表格 / 公式抽取不是完全解决。

这意味着:

1
paper-to-strategy 必须有 human review

3. Backtrader 不是唯一回测引擎

Backtrader 适合示例和结构化验证。

但真正 quant 系统可能需要:

1
2
3
4
5
pandas vectorized backtest
event-driven backtest
portfolio optimizer
broker simulator
factor research engine

所以 StrategySpec 比具体 Backtrader 代码更重要。

4. LLM extraction 会错

所以 X2Strategy 的正确使用方式不是盲信。

而是:

1
2
3
4
5
6
extract
  -> review
  -> repair
  -> validate
  -> backtest
  -> diagnose

一句话总结

1
X2Strategy 的核心价值,是把 quant research 从 paper / idea 推进到可审计 StrategySpec,再推进到代码、回测和诊断。

对我们来说:

1
2
3
4
5
QuantMind 给 memory。
X2Strategy 给 compiler。
Magents 给 simulation。
RD-Agent 给 research-develop loop。
Pengyi Quant Research OS 要把这些合成自己的 R&D Agent。

这就是 X2STRATEGY000 的核心结论。

This post is licensed under CC BY 4.0 by the author.