# 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 | ไธญๆ–‡

Python 3.10+ License MCP

--- ## ๐Ÿ“– ็ฎ€ไป‹ 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)