# BRAIN 表达式模板解码器 - Flask Web 应用程序
一个全面的 Flask Web 应用程序,用于解码字符串模板,具备语法检查、语法高亮显示,并与 WorldQuant BRAIN 平台无缝集成以获取真实操作员数据。
## 🚀 功能
### 核心功能
- **模板检测**:自动检测表达式中的 `` 模式
- **语法检查**:实时验证分号、注释和语法
- **语法高亮**:带行号和自动完成的颜色编码显示
- **模板解码**:生成表达式的两种模式
- **完全迭代**:生成所有可能的模板变量组合
- **随机迭代**:生成指定大小的随机样本
- **导出选项**:复制结果或下载为文本文件
### 模板类型
- **Op(操作符)** - 蓝色按钮,与 BRAIN 操作符集成
- **Data(数据字段)** - 绿色按钮,用于数据字段配置
- **Normal(参数)** - 灰色按钮,用于一般参数
### BRAIN 集成
- **内置 API 集成**:直接连接到 WorldQuant BRAIN API,支持 CORS
- **186+ 操作符**:访问所有操作符类别(算术、排名、减少、时间序列等)
- **800+ 数据字段**:来自基础数据集,支持搜索和过滤
- **高级搜索**:按类别过滤操作符并按名称搜索
- **多选界面**:专业的操作符选择,带视觉反馈
## 🛠️ 设置与安装
### 先决条件
- Python 3.7 或更高版本
- pip(Python 包管理器)
- WorldQuant BRAIN 账户(用于 BRAIN 集成功能)
### 快速开始
1. **克隆或下载**此代码库到本地机器
2. **运行应用程序**(依赖项将自动安装!):
**在 Windows 上:**
```bash
# 双击 run_app.bat 或在终端运行:
run_app.bat
```
**在 macOS/Linux 上:**
```bash
# 首次使脚本可执行:
chmod +x run_app.sh
# 运行应用程序:
./run_app.sh
```
**或直接用 Python 运行:**
```bash
python app.py
```
3. **自动依赖安装**:
- 应用程序将自动检查缺失的依赖项
- 如果缺少任何软件包,将从 requirements.txt 安装
- **对于中国用户**:依赖项将从清华大学镜像自动下载,以加快安装速度
- 无需手动安装!
4. **打开应用程序**:
- Flask 服务器在 `http://localhost:5000` 启动
- 打开您的网络浏览器并导航到 `http://localhost:5000`
- 一切都已集成 - 无需单独的代理服务器!
### 对于中国用户
该应用程序自动使用清华大学的 PyPI 镜像进行更快的下载。如果您希望手动安装依赖项:
**Windows:**
```bash
# 使用清华镜像的安装脚本
setup_tsinghua.bat
```
**macOS/Linux:**
```bash
# 使可执行并运行
chmod +x setup_tsinghua.sh
./setup_tsinghua.sh
```
**使用清华镜像的手动安装:**
```bash
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
```
**配置其他镜像:**
您可以通过编辑 `mirror_config.txt` 更改镜像源。该文件包括几个流行的中国镜像:
- 清华大学 - 默认
- 阿里云
- 豆瓣
- 中国科学技术大学
### 手动安装
如果自动安装失败,您可以手动安装:
```bash
# 从 requirements.txt 安装依赖项
pip install -r requirements.txt
# 或单独安装软件包
pip install flask==2.3.3 flask-cors==4.0.0 requests==2.31.0 pandas==2.0.3
# 启动应用程序
python app.py
```
**注意**:该应用程序包括自动依赖检查,当您运行它时将尝试安装缺失的软件包。
## 🔗 BRAIN 集成
### 设置
1. **无需单独设置** - BRAIN API 集成已内置于 Flask 应用程序中
2. **连接到 BRAIN**:点击网页界面中的“连接到 BRAIN”按钮
3. **输入凭据**:使用您的 WorldQuant BRAIN 用户名和密码
4. **自动加载操作符**:系统会获取所有可用的操作符(186+)
### 使用 BRAIN 操作符
1. **配置模板**:将模板类型设置为 “Op”
2. **选择来自 BRAIN**:在模板配置中点击“从 BRAIN 中选择”按钮
3. **搜索和过滤**:使用搜索框和类别过滤器查找操作符
4. **多选**:选择多个操作符并将其应用于您的模板
5. **生成组合**:解码模板以获取所有可能的操作符组合
## 📝 使用指南
### 1. 表达式编辑器
- 在主编辑器中输入或粘贴您的表达式
- 语法将自动检查并提供视觉反馈
- 模板将实时检测并高亮显示
- 输入 `<` 以获取模板建议的自动完成
### 2. 模板管理
- 检测到的模板出现在右侧面板中
- 点击模板类型按钮(Op/Data/Normal)进行配置
- 视觉指示器显示已配置 (✓) 与未配置 (•) 的模板
- 点击模板名称查看当前配置
### 3. 模板配置
- **普通模板**:手动输入以逗号分隔的值
- **操作符模板**:从 BRAIN 操作符中选择或手动输入
- **数据模板**:输入数据字段规格
### 4. 模板解码
生成表达式的两个选项:
- **full_iteration**:生成所有可能的组合
- 使用笛卡尔积创建每一种可能的组合
- 显示前 999 个结果,并为大数据集提供搜索功能
- **random_iteration**:生成随机样本
- 指定随机表达式数量(默认为 10)
- 首先生成所有组合,然后随机选择指定数量
- 有助于测试或当您只需要部分可能性时
- 每个模板必须至少具有一个配置值
- 结果将显示,并提供复制和下载选项
## 💡 示例表达式
```
positive_sentiment = rank((,));
negative_sentiment = rank((, ));
sentiment_difference = (positive_sentiment, negative_sentiment);
(sentiment_difference, )
```
### 示例配置
- `` → `7, 14, 30`
- `` → `ts_max, ts_min`(从 BRAIN 中选择)
- `` → `ts_delta, ts_mean`(从 BRAIN 中选择)
### 生成输出
解码器将生成所有组合:
```
ts_delta(ts_max(7), 7)
ts_delta(ts_max(14), 14)
ts_delta(ts_max(30), 30)
ts_delta(ts_min(7), 7)
ts_delta(ts_min(14), 14)
ts_delta(ts_min(30), 30)
ts_mean(ts_max(7), 7)
...等等
```
## 🎯 语法规则
- 使用 `/* */` 进行多行注释
- 语句以 `;` 结束(最后一行除外)
- 不允许使用类、对象、指针或函数
- 最后一行是 BRAIN 模拟器的 Alpha 表达式
## 🏗️ 技术架构
### Flask 应用程序结构
```
BRAINProject/
├── app.py # 拥有自动依赖安装的 Flask 应用程序
├── templates/
│ └── index.html # 主要网页界面模板
├── static/
│ ├── styles.css # 应用程序样式
│ ├── script.js # 核心应用程序逻辑
│ ├── decoder.js # 模板解码算法
│ └── brain.js # BRAIN API 集成模块
├── requirements.txt # Python 依赖项
├── mirror_config.txt # PyPI 镜像配置
├── run_app.bat # Windows 启动脚本
├── run_app.sh # Unix/macOS 启动脚本
├── setup_tsinghua.bat # 使用清华镜像的 Windows 设置(适用于中国)
├── setup_tsinghua.sh # 使用清华镜像的 Unix 设置(适用于中国)
├── brain_function_tester.ipynb # 用于测试的 Jupyter 笔记本
└── README.md # 本文件
```
### 关键组件
- **Flask 后端**:处理 BRAIN API 身份验证和数据获取
- **模板引擎**:Jinja2 模板用于动态内容
- **静态资源**:高效提供 CSS 和 JavaScript
- **CORS 处理**:内置跨域请求支持
- **会话管理**:安全的会话处理以进行 BRAIN 身份验证
### API 端点
- `GET /` - 主要应用程序页面
- `POST /api/authenticate` - BRAIN 身份验证
- `GET /api/operators` - 获取 BRAIN 操作符,支持分页
- `GET /api/datafields` - 获取 BRAIN 数据字段
- `GET /api/status` - 检查身份验证状态
- `POST /api/logout` - 从 BRAIN 登出
## 🔧 高级特性
### 操作符获取
- **强大的分页**:自动处理 BRAIN API 分页
- **类别支持**:获取所有类别的操作符
- **错误处理**:多种应急策略以确保可靠的数据加载
- **调试**:内置端点用于 API 响应分析
### 模板处理
- **实时检测**:在输入时检测模板
- **视觉反馈**:颜色编码的语法高亮
- **状态指示器**:清晰的视觉提示模板配置状态
- **验证**:确保在解码前所有模板都已配置
### 用户体验
- **专业 UI**:干净、现代的界面设计
- **响应式设计**:适用于桌面和平板设备
- **键盘快捷键**:高效的模板自动完成
- **导出选项**:复制单个结果或下载所有结果
## 🐛 故障排除
### 常见问题
1. **Flask 服务器无法启动**:
- 检查 Python 版本(需要 3.7+)
- 安装缺失的依赖项:`pip install -r requirements.txt`
2. **BRAIN 连接失败**:
- 验证您的 BRAIN 凭据
- 检查网络连接
- 确保没有防火墙阻止外发 HTTPS 请求
3. **模板未检测到**:
- 检查模板语法:``
- 使用按钮手动刷新模板
4. **没有加载操作符**:
- 验证 BRAIN 身份验证是否成功
- 检查浏览器控制台是否有错误信息
- 尝试登出并重新认证
### 调试模式
在调试模式下运行应用程序以获取详细错误信息:
```bash
python app.py
# 应用程序默认启用调试模式
```
## 📈 性能
- **高效加载**:操作符在身份验证时加载一次
- **分页处理**:自动获取所有数据,无论 API 分页如何
- **会话管理**:持久会话提升用户体验
- **优化前端**:最小的 JavaScript 依赖加快加载速度
## 🔐 安全
- **会话安全**:Flask 安全会话,支持可配置的密钥
- **凭据处理**:凭据不被存储,仅用于 API 身份验证
- **CORS 保护**:正确配置的跨域请求处理
- **输入验证**:模板语法验证和语法检查
## 🚧 未来增强功能
- **模板库**:保存和共享模板配置
- **高级过滤**:更复杂的操作符和数据字段过滤
- **批量操作**:同时处理多个表达式
- **API 集成**:连接其他金融数据提供商
- **导出格式**:支持 JSON、CSV 和其他输出格式
---
**注意**:该 Flask 应用程序取代了之前的 HTML+代理架构,提供了更强大和集成的 BRAIN 模板解码解决方案。