使用说明
标题:股票回测MCP 表情符号📈 颜色来源:蓝色 颜色To:绿色 sdk:毕业 app_file:app.py 固定:false 标签:
- “建设mcp轨道xx”
LinkedIn帖子:https://www.linkedin.com/feed/update/urn:li:activity:7400976801524629504/
演示视频:https://youtu.be/EKdxNMhcD8I
LLM驱动的策略回溯测试
一个轻量级的模块化回溯测试应用程序,可以转换 自然语言交易策略 使用OpenAI GPT-4o-mini将其转化为结构化的可执行策略。
技术支持:
- 格拉迪奥 --交互式web UI
- 模态 --云托管LLM策略解析器端点
- OpenAI GPT-4o-mini --自然语言理解
- python --可插拔回溯测试引擎
- AlphaVantage --历史每日价格数据(免费等级:~100个交易日)
特性
自然语言策略解析(LLM模式)
用户可以编写自由形式的策略描述,系统会自动将其转换为结构化配置:
示例:
- “当10天均线超过50天均线时买入,当均线低于50天时卖出”
- “每7天投资1000美元,初始现金为5000美元”
- “DCA每周500美元”
- “买入并长期持有”
LLM(OpenAI GPT-4o-mini)解析描述并返回结构化配置:
{
"type": "ma_cross",
"params": {"short_window": 10, "long_window": 50},
"initial_cash": 5000
}
手动模式
或者,用户可以直接通过UI手动选择策略类型并设置参数。
支持的策略
-
移动平均线交叉(ma_cross)
- 当空头MA超过多头MA时买入
- 当空头MA跌破多头MA时卖出
- 参数:
short_window,long_window
-
美元成本平均值(dca)
- 定期投资固定金额
- 参数:
interval_days,buy_amount - 支持
initial_cash从LLM中提取 - 注:对于DCA,显示的“初始现金”指标表示总投资(初始现金+所有定期投资)
-
买入并持有
- 在开始时购买并持有至结束
- 参数:
buy_fraction(默认值:1.0)
-
其他
- 当策略描述与上述任何一项都不匹配时返回
- 参数:
{}(空)
回溯测试指标
- 初始现金/最终权益
- 总回报/年化回报
- 最大跌幅
- 交易次数/胜率
- 股权曲线可视化
设置
先决条件
- Python 3.8+
- 模态账户(用于LLM端点)
- OpenAI API密钥
- AlphaVantage API密钥(提供免费层)
安装
-
克隆仓库
git clone <repository-url> cd "MCP Hackathon" -
安装依赖项
pip install -r requirements.txt -
设置环境变量
创建一个
.env项目根目录中的文件:ALPHAVANTAGE_API_KEY=your_alphavantage_api_key MODAL_STRATEGY_URL=https://your-username--strategy-config-service-strategy-config-web.modal.run注:
OPENAI_API_KEY不需要.env为了地方发展。模态端点使用来自模态机密的API密钥。但是,如果你想在本地测试LLM解析,你可以选择添加它。 -
部署模态端点
Modal应用程序托管LLM策略解析器。使用以下方式进行部署:
modal deploy modal_app.py部署后,Modal将提供一个URL。更新
MODAL_STRATEGY_URL在你的.env文件。 -
设置模态秘密
在Modal web UI中,创建一个名为
openai-secret与:OPENAI_API_KEY=your_openai_api_key
运行应用程序
python app.py
Gradio界面将在 http://127.0.0.1:7860
用法
LLM模式(推荐)
- 选择 LLM 从“策略模式”下拉列表中
- 输入自然语言策略描述
- 在描述中可选地指定初始现金(例如,“初始现金为5000美元”)
- 点击“运行回溯测试”
输入示例:
- “当10天均线超过50天均线时买入,当均线低于50天时卖出”
- “DCA每7天1000美元,初始现金=5000”
- “每周投资500美元,起始资本为10000美元”
- “用初始现金20000美元购买并长期持有”
注: LLM自动提取 initial_cash 如果在描述中提及。如果没有提及,系统将使用UI中的默认值(10000)。
手动模式
- 选择 “手册” 从“策略模式”下拉列表中
- 选择策略类型(ma_cross、dca或buy_and_hold)
- 设置所需参数
- 设定初始现金
- 点击“运行回溯测试”
数据限制
AlphaVantage免费套餐:
- 提供约100个交易日的历史数据
- 每天25个API请求
- 开始日期必须在最近100天内
UI包括验证,以确保日期在可用范围内。
项目结构
.
├── app.py # Main Gradio UI application
├── llm_strategy.py # Client-side LLM strategy parser (calls Modal)
├── modal_app.py # Modal deployment: LLM endpoint (OpenAI GPT-4o-mini)
├── mcp_server.py # MCP server implementation (FastMCP tools for strategy parsing and backtesting)
├── backtest/
│ ├── __init__.py # Package initialization
│ ├── engine.py # Backtest orchestrator
│ ├── strategies.py # Strategy implementations (ma_cross, dca, buy_and_hold)
│ ├── data.py # AlphaVantage data fetcher
│ └── metrics.py # Performance metrics calculation
├── requirements.txt # Python dependencies
├── README.md # This file
└── .env # Environment variables (create this file)
注: 其他文件,如 mcp_client_http.py 和 test_client.py 可以用于MCP客户端测试,但不是核心回测功能所必需的。
运作原理
- 用户输入 → Gradio用户界面(
app.py) - LLM解析 → 模态端点(
modal_app.py)调用OpenAI GPT-4o-mini - 策略配置 → 返回给客户端的结构化JSON(
llm_strategy.py) - 数据获取 → AlphaVantage API(
backtest/data.py) - 回溯测试 → 战略执行(
backtest/strategies.py) - 度量与可视化 → 结果显示在UI中
API密钥
AlphaVantage
- 免费层:从获取您的API密钥https://www.alphavantage.co/support/#api-钥匙
- 速率限制:每天25个请求
OpenAI
- 从获取API密钥https://platform.openai.com/api-keys
- 由Modal端点用于策略解析
模态
- 注册地址:https://modal.com
- 部署端点并获取的URL
MODAL_STRATEGY_URL
故障排除
“模态端点返回非200状态:404”
- 确保已部署Modal应用程序:
modal deploy modal_app.py - 检查一下
MODAL_STRATEGY_URL在.env与部署的端点URL匹配
“超过AlphaVantage API费率限制”
- 免费套餐每天允许25个请求
- 等待24小时或升级到高级计划
“指定日期范围内没有数据”
- AlphaVantage免费套餐仅提供约100个交易日
- 使用过去100天内的开始日期
“LLM策略解析失败”
- 检查一下
OPENAI_API_KEY设置在模态秘密中 - 验证模态端点是否正在运行
- 检查与Modal的网络连接
