# wqb-cli
**Repository Path**: xiegengcai/wqb-cli
## Basic Information
- **Project Name**: wqb-cli
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-07-05
- **Last Updated**: 2026-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
๐ง wqb-cli
WorldQuant BRAIN ๅนณๅฐๅฝไปค่ก & MCP ๅทฅๅ
ท้
English | ไธญๆ
---
## ๐ ็ฎไป
wqb-cli ๆฏไธไธชๅ่ฝๅฎๆด็ WorldQuant BRAIN ้ๅๅนณๅฐไบคไบๅทฅๅ
ท๏ผๅๆถๆไพ **CLI ๅฝไปค่ก** ๅ **MCP Server** ไธค็งไฝฟ็จๆนๅผใๆฏๆ Alpha ๅ
จ็ๅฝๅจๆ็ฎก็ใๆจกๆๅๆตใ็ซ่ตๅไธใๆฐๆฎ้ๆฅ่ฏขใ่ฎบๅไบๅจ็ญ 40+ ๅนณๅฐ่ฝๅใ
## ๐๏ธ ๆถๆๆป่ง
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฐ็จๆน (Caller) โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ CLI ็ป็ซฏ โ โ MCP Client โ โ Python ่ๆฌ โ โ
โ โ wqb_cli.py โ โ Claude/IDE โ โ import dispatcherโ โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโ โ
โ โ โ โ โ
โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฐๅบฆๅฑ (Dispatcher) โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ CommandDispatcher โ โ
โ โ โข ๆณจๅ 40+ ๅฝไปค็ โ (service, method) ๆ ๅฐ โ โ
โ โ โข ่พๅบ่ฃ
้ฅฐๅจ (alpha_decorator / prod_corr_decorator โฆ) โ โ
โ โ โข ๅผๆญฅ dispatch + ๅๆญฅ dispatch_sync โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆๅกๅฑ (Services) โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ Alphas โ โSimulationsโ โ Datasets โ โ Users โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ Forums โ โPyramids โ โPayments โ โCompetitionsโ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ไผ่ฏๅฑ (Session) โ
โ โ
โ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ่ฎค่ฏ (JWT) โ โ ่ฏทๆฑ/้่ฏ โ โ Redis ็ผๅญ โ โ
โ โ ensure_auth() โ โ _request_jsonโ โ get_json/set_json โ โ
โ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
๐ WorldQuant BRAIN API
```
## ๐ง ่ฐ็จๆต็จ
```
่ฏทๆฑๅค็ๆต็จ
โโโโโโโโโโโ
็จๆท่พๅ
ฅ ่ฐๅบฆๅๅ ๆๅกๆง่ก ๅๅบ่ฃ
้ฅฐ
โโโโโโโโ โโโโโโโโ โโโโโโโโ โโโโโโโโ
"alpha AVYX..." โโโบ resolve("alpha") โโโบ get_alpha_details โโโบ alpha_decorator
โ โ โ โ
โ ๆฅๆพๅฝไปคๆณจๅ่กจ ่ฐ็จ Alphas ๆๅก ๆๅนณๅ + raPassed
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ
โ code โ service session.request() IS checks ๅๆ
โ + method_name + ensure_auth() raPassed / ppaPassed
โ + decorator + ่ชๅจ็ผๅญ + checks_message
โ โ
โผ โผ
CLI / MCP Client โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ่ฃ
้ฅฐๅ็ปๆ
```
## โจ ๅ่ฝ็นๆง
| ็ฑปๅซ | ่ฝๅ | CLI ๅฝไปค็ | MCP ไธ็จๅทฅๅ
ท |
|------|------|-----------|-------------|
| ๐งช **ๆจกๆ** | ๅๆฌก/ๆน้ๆจกๆใ้่กๆฅ่ฏข | `simulation` `multi_simulation` `selection` `look_sim_err` | โ
`create_simulation` `create_multi_simulation` `run_selection` `lookINTO_SimError_message` |
| ๐ **Alpha** | ่ฏฆๆ
/PnL/ๅนดๅ/็ธๅ
ณๆง/ๅฑๆง | `alpha` `pnl` `yearly_stats` `prod_corr` `self_corr` `properties` `record_sets` `record_set_data` | โ
`get_alpha_details` `get_alpha_pnl` `get_alpha_yearly_stats` `prod_corr` `self_corr` `set_alpha_properties` `get_record_sets` `get_record_set_data` |
| ๐ **็จๆท Alpha** | ๅ้กตๆฅ่ฏข + ่ชๅจ่ฃ
้ฅฐ | `alphas` | โ
`get_user_alphas` |
| ๐ **ๆฐๆฎ้** | ๆฐๆฎ้/ๅญๆฎต/็ฎๅญ/ๅนณๅฐ่ฎพ็ฝฎ | `datasets` `datafields` `operators` `platform_setting_options` | โ
`get_datasets` `get_datafields` `get_operators` `platform_setting_options` |
| ๐ฌ **่ฎบๅ** | ่ฏ้ข/ๅธๅญ/ๆ็ดข/ๆ็ซ | `topics` `posts` `read` `search` `searchall` `hc_article` | โ
`list_forum_topics` `list_forum_posts_in_topic` `read` `search_specific_forum_fast` `search_all_forum_slow` `get_help_center_article` |
| ๐ **็ซ่ต** | ไบไปถ/ๆ่กๆฆ/SPC | `events` `leaderboard` `competition_details` `spc_list` | โ
`competition_details` `spc_list` |
| ๐บ **้ๅญๅก** | ไนๆฐ/Alphaๅๅธ | `pyramid_multipliers` `pyramid_alphas` | โ
`get_pyramid_multipliers` `get_pyramid_alphas` |
| ๐ **ๆๆกฃ** | ๆ็จ/ๆๆกฃ้กต | `docs` `doc_page` | โ
`doc_page` |
| ๐ฐ **ๆฏไป** | ๆฅ/ๅญฃๅบฆๆฏไป | `payment` | โ |
| ๐ค **็จๆท** | ่ตๆ/ๆถๆฏ/ๆดปๅจ | `profile` `messages` `activities` | โ |
## ๐ ้กน็ฎ็ปๆ
```
wqb-cli/
โโโ brain/ # ๆ ธๅฟๆจกๅ
โ โโโ __init__.py # ๅ
ๅ
ฅๅฃ + re-export
โ โโโ config.py # ้
็ฝฎ็ฎก็ (env / JSON)
โ โโโ logging_setup.py # ๆฅๅฟ้
็ฝฎ
โ โโโ redis_client.py # Redis ๅฎขๆท็ซฏ (็ผๅญ + ๅๅธๅผ้)
โ โโโ session.py # ไผ่ฏ็ฎก็ (่ฎค่ฏ/่ฏทๆฑ/็ผๅญ/JWT)
โ โโโ services/ # ๆๅกๅฑ
โ โโโ alphas.py # Alpha ๆๅก (ๅซ prod_corr ๅ
จๅฑ้)
โ โโโ base.py # ๅบ็กๆๅก็ฑป (่ฏทๆฑ/้่ฏ)
โ โโโ competitions.py # ็ซ่ต + SPC ๆๅก
โ โโโ datasets.py # ๆฐๆฎ้/็ฎๅญ/่ฎพ็ฝฎๆๅก
โ โโโ documentation.py # ๆๆกฃๆๅก
โ โโโ forums.py # ่ฎบๅ/Help-Center ๆๅก
โ โโโ payments.py # ๆฏไปๆๅก
โ โโโ pyramids.py # ้ๅญๅกๆๅก
โ โโโ registry.py # ๆๅกๆณจๅๅฎนๅจ
โ โโโ simulations.py # ๆจกๆๆๅก
โ โโโ users.py # ็จๆทๆๅก
โโโ brain/field_quality.py # OS/IS Sharpe ่ฟๆปคไธๆจ่่ฏๅ๏ผๆๅ ่ฝฝ info_data.bin๏ผ
โโโ decorators.py # ่พๅบ่ฃ
้ฅฐๅจ (alpha / prod_corr / pyramid / self_corr / get_user_alphas)
โโโ dispatcher.py # ๅฝไปค่ฐๅบฆๅจ (ๆณจๅ + ๅๅ + ่ฃ
้ฅฐ)
โโโ mcp_server.py # MCP Server (30+ ไธ็จๅทฅๅ
ท + brain_dispatch)
โโโ wqb_cli.py # CLI ๅ
ฅๅฃ
โโโ start_mcp.bat # MCP Server ๅฏๅจ่ๆฌ (Windows)
โโโ data/ # ็ฆป็บฟๆฐๆฎ่ตไบง็ฎๅฝ (.gitignore)
โ โโโ info_data.bin # OS/IS Sharpe ่ๅๆฐๆฎ (msgpack+zlib, 14.8 MB)
โ โโโ os_pnl_pool_.pkl # ๅ region ็ OS PnL ๆฑ ๏ผself_corr ็จ๏ผ
โโโ user_config.json.example # ็จๆท้
็ฝฎๆ ทไพ
โโโ user_config.json # ็จๆท้
็ฝฎ (้่ช่กๅๅปบ)
โโโ LICENSE # Apache 2.0
```
## ๐ ๅฟซ้ๅผๅง
### ๅฎ่ฃ
```bash
git clone https://gitee.com/xiegengcai/wqb-cli.git
cd wqb-cli
pip install -e .
```
### ้
็ฝฎ่ฎค่ฏ
ๆนๅผไธ๏ผ้
็ฝฎๆไปถ
```bash
wqb config set email your_email@example.com
wqb config set password your_password
```
ๆนๅผไบ๏ผ็ฏๅขๅ้
```bash
export WQB_EMAIL=your_email@example.com
export WQB_PASSWORD=your_password
```
### CLI ไฝฟ็จ
```bash
# ๆฅ็ๅธฎๅฉ
python wqb_cli.py --list
# Alpha ่ฏฆๆ
python wqb_cli.py alpha alpha_id=AVYX...
# ๅๅปบๆจกๆ
python wqb_cli.py simulation regular="rank(close/delay(close,5))" region=USA delay=1
# ๆฅ่ฏขๆฐๆฎ้
python wqb_cli.py datasets region=USA delay=1
```
### MCP Server ไฝฟ็จ
```bash
# SSE ๆจกๅผ (้ป่ฎค)
python mcp_server.py --transport sse --host 127.0.0.1 --port 8765
# stdio ๆจกๅผ
python mcp_server.py --transport stdio
# Windows ๅฟซๆทๅฏๅจ
start_mcp.bat
```
MCP ๅฎขๆท็ซฏ้
็ฝฎ็คบไพ (Claude Desktop / CodeArts)๏ผ
```json
{
"mcpServers": {
"wqb-brain": {
"url": "http://127.0.0.1:8765/sse"
}
}
}
```
## ๐ ๅๅธๅผ้
`prod_corr` ๆๅกไฝฟ็จ Redis ๅๅธๅผ้้ฒๆญขๅนถๅ่ฎฟ้ฎ๏ผ
```
่ฏทๆฑ โโโบ SET lock:prod_corr NX TTL=180s โโโฌโ ๆๅ โโโบ ๆง่ก่ฏทๆฑ โโโบ ้ๆพ้
โ
โโ ๅคฑ่ดฅ โโโบ {"error": "prod_corr is locked..."}
```
- ้ key: `lock:prod_corr`
- TTL: 180 ็ง (3 ๅ้่ชๅจๅคฑๆๅ
ๅบ)
- ๅๅญๆไฝ: `SET NX` ไฟ่ฏไบๆฅ
## โ๏ธ ้
็ฝฎ่ฏดๆ
### Redis ็ผๅญ
```bash
export REDIS_URL=redis://localhost:6379/0
export REDIS_PREFIX=wqb
```
Redis ไธๅฏ็จๆถ่ชๅจ้็บงไธบๆ ็ผๅญๆจกๅผใ
### ็จๆท้
็ฝฎๆไปถ
ๅคๅถ `user_config.json.example` ไธบ `user_config.json` ๅนถๅกซๅ๏ผ
```json
{
"credentials": {
"email": "your_email@mail.com",
"password": "your_password"
},
"endpoints": {
"brain_base_url": "https://api.worldquantbrain.com",
"support_base_url": "https://support.worldquantbrain.com",
"support_locale": "zh-cn"
},
"max_retries": {
"brain": 10,
"support": 10
},
"service_cache": {
"enabled": true,
"ttl": 900,
"exclude_endpoints": [
"/simulations/{simulation_id}",
"/alphas/{alpha_id}/submit"
],
"endpoints": {
"/data-sets": 86400,
"/data-fields": 86400,
"/operators": 604800,
"/simulations": 604800,
"/users/self/alphas": 86400,
"/users/self/activities/base-payment": 86400,
"/users/self/activities/other-payment": 86400,
"/users/self/activities/pyramid-multipliers": 86400,
"/users/self/activities/pyramid-alphas": 86400
}
},
"field_quality": {
"enabled": true,
"info_data_path": ""
}
}
```
### ๅญๆฎต่ดจ้่ฟๆปค๏ผinfo_data.bin๏ผ
`field_quality` ๅๆงๅถ datafield / dataset ็ OS/IS Sharpe ่ฟๆปคไธๆจ่่ฏๅ่ฝๅ๏ผไพ่ตไธไธช**ไฝฟ็จ่
่ช่กๅฏผๅ
ฅ**็ไบ่ฟๅถๆไปถ `info_data.bin`๏ผmsgpack + zlib ๅ็ผฉ๏ผ็บฆ 14.8 MB๏ผใ
> โ ๏ธ `info_data.bin` **ไธ้้กน็ฎไธ่ตทๅๅธ**๏ผไนไธไผ่ขซๆไบคๅฐไปๅบ๏ผ`data/` ็ฎๅฝๅทฒ่ขซ `.gitignore` ๅฟฝ็ฅ๏ผใไฝฟ็จ่
้้่ฟ่ชๅทฑ็ `WebDataScope` ๆตๆฐด็บฟ็ฆป็บฟ็ๆ๏ผๆไปๅฏไฟกๆธ ้่ทๅๅๆพๅ
ฅ `data/info_data.bin`ใๆไปถ็ผบๅคฑๆถไธๆนๆฅๅฃไผ**้้ป้็บง**โโไธไผๆฅ้๏ผไฝ่ฟๆปคไธๆจ่่ฏๅไน้ฝไธไผ็ๆใ
**ๅฎๆฏไปไน**
- ็ฑ `WebDataScope` ๆตๆฐด็บฟ็ฆป็บฟ่ๅ๏ผ็ป่ฎกๆฏไธช (region, delay) ็ปๅไธ field / dataset / category ็ OS/IS Sharpe ๆฏ๏ผ
- ่ทฏๅพ้ป่ฎค `<้กน็ฎๆ น>/data/info_data.bin`๏ผไธ `os_pnl_pool_.pkl` ๅไธ็ฎๅฝ๏ผๅทฒ่ขซ `.gitignore` ๅฟฝ็ฅ๏ผ
- 14.8 MB ็ไบ่ฟๅถๅชไผๅจ้ฆๆฌก่ฐ็จๆถ่ขซๆๅ ่ฝฝๅนถ็ผๅญๅฐๅ
ๅญ๏ผๆดไธช่ฟ็จ็ๅฝๅจๆๅ
ไธ้ๅค่ฏป็ใ
**ๅฆไฝๅฏผๅ
ฅ**
1. ๅๅคๅฅฝ `info_data.bin`๏ผmsgpack + zlib ๆ ผๅผ๏ผ๏ผ
2. ๆพๅฐ้ป่ฎคไฝ็ฝฎ `<้กน็ฎๆ น>/data/info_data.bin`๏ผ้ฆๆฌกไฝฟ็จไผ่ชๅจๅๅปบ `data/` ็ฎๅฝ๏ผ๏ผ
3. ๆ่
ๅจ `user_config.json` ไธญ้่ฟ `field_quality.info_data_path` ๆๅไปปๆๅ
ถไป่ทฏๅพ๏ผ็ปๅฏน/็ธๅฏนๅๅฏ๏ผWindows / POSIX ้ฝๆฏๆ๏ผใ
```text
<้กน็ฎๆ น>/
โโโ data/
โ โโโ info_data.bin # โ ๆๆไปถๆพ่ฟ้
โ โโโ os_pnl_pool_.pkl
โโโ user_config.json
```
**ๅฎๅฝฑๅไปไน**
| ๆฅๅฃ | ่กไธบ |
| --- | --- |
| `get_datafields(filter_sharpe=True)` | ไธขๅผ OS/IS Sharpe < 0 ็ field๏ผresponse ่ฟฝๅ `sharpe_filter_applied` / `sharpe_filter_removed` ไธคไธชๅญๆฎต๏ผ็ผบๆไปถๆถ้้ป้ๅไธบไธ่ฟๆปค |
| `get_datasets(recommend=True)` | ๅจ `results` ็ๆฏไธช dataset ไธๅ `recommended` / `recommendation_score` / `recommendation_rank` ไธไธชๆ ่ฎฐ๏ผๅนถๅจ response ้กถๅฑๅ `recommendation_summary`๏ผๅซ `top_picks` / `pyramid_status` / `scoring_weights`๏ผ |
**้
็ฝฎ้กน**
| ๅญๆฎต | ็ฑปๅ | ้ป่ฎคๅผ | ๅซไน |
| --- | --- | --- | --- |
| `enabled` | bool | `true` | ๆปๅผๅ
ณ๏ผ`false` ๆถ `FieldQualityStore` ็ดๆฅ่ทณ่ฟ่ฟๆปคไธๅ ่ฝฝ๏ผๆฅๅฃ่กไธบ้ๅไธบไธ้ๅธฆไปปไฝๆ ๆณจ |
| `info_data_path` | str | `""` | ๆๅ `info_data.bin` ็็ปๅฏนๆ็ธๅฏน่ทฏๅพ๏ผ็ฉบๅญ็ฌฆไธฒ่กจ็คบ็จ้ป่ฎค่ทฏๅพ `<้กน็ฎๆ น>/data/info_data.bin` |
**้
็ฝฎ็คบไพ**
```json
{
"field_quality": {
"enabled": true,
"info_data_path": ""
}
}
```
่ชๅฎไน่ทฏๅพ็คบไพ๏ผWindows / POSIX ้ฝๅฏ๏ผ๏ผ
```json
{
"field_quality": {
"enabled": true,
"info_data_path": "D:/work/data/info_data.bin"
}
}
```
**้็บง่กไธบ**
`info_data.bin` ็ผบๅคฑใๆไปถๆๅๆ (region, delay) ๆ ็ป่ฎกๆฐๆฎๆถ๏ผfilter ไธๆจ่่ฏๅไผ**้้ป่ทณ่ฟ**๏ผ
- `get_datafields` ไธไผๅ ้คไปปไฝ field๏ผไนไธๅ `sharpe_filter_*` ๆ ๆณจ โ ่ฐ็จๆนๆฟๅฐ็ response ไธ `filter_sharpe=False` ๅฎๅ
จไธ่ด๏ผ
- `get_datasets` ไธไผๅจ `results` ไธๅ ๆ ่ฎฐ๏ผไนไธไผๅ `recommendation_summary` โ ่ฐ็จๆนๆฟๅฐ็ๅฐฑๆฏๅๅง dataset ๅ่กจใ
่ฟๆ ท่ฎพ่ฎกๆฏไธบไบ่ฎฉๆฅๅฃๅง็ป่ฟๅ"่ฝ็จ"็ response๏ผ้ฟๅ
ไธๅฑๅจ"้
็ฝฎๅผไบ่ฟๆปคไฝๆไปถไธๅจ"ๆถ่ฟๅพ็นๅคๅๆฏใ
## ๐ฆ ไพ่ต
| ๅ
| ็จ้ |
|----|------|
| Python 3.10+ | ่ฟ่กๆถ |
| requests | HTTP ๅฎขๆท็ซฏ |
| redis | Redis ็ผๅญ + ๅๅธๅผ้ |
| pandas | ๆฐๆฎๅค็ (self_corr) |
| mcp | MCP Server ๆกๆถ |
## ๐ ่ฎธๅฏ่ฏ
[Apache License 2.0](./LICENSE)
## ๐ ็ธๅ
ณ้พๆฅ
- [WorldQuant Brain ๅนณๅฐ](https://www.worldquant.com/)
- [้กน็ฎไปๅบ](https://gitee.com/xiegengcai/wqb-cli)