MobiusQuant/llm-quant-benchmark
GitHub: MobiusQuant/llm-quant-benchmark
一个面向量化交易任务的 LLM 基准测试框架,用真实 K 线数据评估各模型在指标计算、结构分析、规则执行等方面的工程实用性。
Stars: 0 | Forks: 0
# LLM 量化基准测试
一个小型、与提供商无关的测试工具,用于在**量化交易任务**上对大型语言模型进行基准测试——即 LLM 在量化智能体中实际需要完成的工作,而不是简单的聊天。每个任务都会根据真实答案进行自动评分。
它与**任何兼容 OpenAI 的端点**配合使用:OpenRouter、供应商的第一方 API 或自托管的网关。
## 测量内容
| 维度 | 任务 | 工程场景 |
|---|---|---|
| **T1** 计算 | 手动计算 SMA / RSI / MACD | 指标计算 |
| **T2** 分析 | 摆动高低点、FVG、Order Block、BOS·CHoCH、EQH·EQL | K 线结构分析 |
| **T4+T7** 规则 | 多条件信号判断 + 约束遵循 | 信号生成 |
| **T5+T6** 数据 | 对 50 / 200 / 500 根 K 线进行异常检测 | 数据质量检查 |
| **JSON** | 嵌入在 T2/T4/T5 中 | 智能体数据交换 |
数据为来自 Binance 的真实 **BTC/USDT 1 小时** K 线;SMC 真实答案由参考实现生成。有关完整的方法论,请参阅 [`docs/design.md`](docs/design.md);有关评估 13 个模型(987 次 API 调用)的完整示例,请参阅 [`docs/results/`](docs/results/)。
## 安装
```
git clone https://github.com//llm-quant-benchmark.git
cd llm-quant-benchmark
pip install -e . # or: pip install -r requirements.txt
```
要求 Python ≥ 3.10。
## 配置 API key
从环境变量(或 `.env` 文件)中读取 key——从不从受跟踪的配置中读取:
```
cp .env.example .env
# 然后编辑 .env 并设置 OPENROUTER_API_KEY=...
```
## 运行
```
# 通过 OpenRouter 进行完整 benchmark,涵盖所有默认 models
llm-quant-bench
# dimensions 的一个子集 / 单个 model / 更多轮次
llm-quant-bench --dimensions t1 t4 --models openai/gpt-5.5 --rounds 3
# 不同的 provider(参见 configs/)
llm-quant-bench --config configs/bigmodel-direct.yaml
# 恢复中断的运行(results 会按每次调用进行 persisted)
llm-quant-bench --resume t1_t2_t4_t5_run1
```
结果以流式传输至 Rich 表格,并保存在 `results//` 目录下(每个模型 × 用例 × 轮次对应一个 JSON 文件,以及一个 `summary.json`)。`results/` 目录已被 git 忽略。
## 提供商
在 [`configs/`](configs/) 下有三种现成的配置——复制一个并编辑 `models:` 列表:
| 配置 | 端点 | key 环境变量 |
|---|---|---|
| `openrouter.yaml`(默认) | OpenRouter | `OPENROUTER_API_KEY` |
| `bigmodel-direct.yaml` | Zhipu BigModel(第一方) | `BIGMODEL_API_KEY` |
| `openai-compatible-proxy.yaml` | 任何兼容 OpenAI 的网关 / 本地服务器 | `PROXY_API_KEY` |
一个配置包含三个模块:`provider`(base_url、key 环境变量、超时时间、temperature、可选的 `max_tokens` / 用于思考模型的 `extra_body`)、`models`(ID + 显示标签)和 `run`(维度、并发数、轮次)。
## 项目结构
```
llm-quant-benchmark/
├── llm_quant_bench/ # the framework (installable package)
│ ├── client.py # LLMClient — async OpenAI-compatible client (retries, backoff)
│ ├── runner.py # BenchmarkRunner — concurrency + per-call persistence + resume
│ ├── scorer.py # 10 scoring methods + JSON-compliance checker
│ ├── loader.py # load test cases from benchmarks/*.yaml
│ ├── models.py # pydantic models (TestCase / ModelResponse / ScoreResult)
│ ├── report.py # save_results + Rich report
│ ├── config.py # config + env-based key loading
│ └── cli.py # `llm-quant-bench` entry point
├── benchmarks/ # the test suite (YAML cases + generators)
│ └── t{1,2,4,5}_*/ # generate.py + reference.py + *.yaml cases
├── data/ # raw BTC/USDT 1h K-line CSVs
├── configs/ # provider configs (sanitized examples)
├── docs/ # design.md + results/ (example findings, 13 models)
└── tests/ # unit tests for the framework
```
## 扩展
**添加模型** —— 在配置的 `models:` 列表中追加(`{ id: "...", label: "..." }`)。
**添加测试用例** —— 将 YAML 文件放入 `benchmarks//` 目录。每个用例:
```
cases:
- id: t1_sma_my_case
prompt: "Compute the 10-period SMA of the last 10 closes: ..."
expected: 67783.66
scoring_method: numeric_tolerance
scoring_params: { tolerance: 0.5 }
json_spec: null # or a spec to score JSON compliance
```
生成器(`benchmarks/*/generate.py`)展示了内置用例是如何从原始数据中生成的——使用 `generate` 附加组件运行它们(`pip install -e ".[generate]"`)。
**添加评分器** —— 在 `scorer.py` 中编写一个 `def _score_x(tc, resp) -> ScoreResult`,并在 `SCORERS` 字典中注册。可用方法包括:`numeric_tolerance`、`macd_tolerance`、`binary`、`highlow_match`、`smc_f1`、`f1_set`、`anomaly_f1`、`rule_signal`、`checklist`、`json_schema`。每个用例都会自动进行 JSON 合规性评分。
## 评分机制
每个响应都会经过 `score(test_case, response)` 处理:用例的 `scoring_method` 会产生一个 0-1 的得分,同时会有一个 JSON 合规性检查(`direct_parseable`、`no_code_fence`、对照 `json_spec` 的字段类型/枚举)附加到每个结果中。运行器会计算各维度和各用例在多轮测试中的平均值。
## 许可证
MIT —— 详见 [LICENSE](LICENSE)。
标签:DLL 劫持, K线分析, Petitpotam, Python, 大语言模型, 性能评测, 无后门, 计算机取证, 逆向工具, 量化交易