# IBKR-MCP 项目开发计划与进展报告
## 📋 目录
1. [项目概述](#项目概述)
2. [当前实现状态](#当前实现状态)
3. [缺失功能分析](#缺失功能分析)
4. [开发优先级路线图](#开发优先级路线图)
5. [详细实施计划](#详细实施计划)
6. [技术选型与架构设计](#技术选型与架构设计)
7. [时间估算与里程碑](#时间估算与里程碑)
8. [风险评估与缓解策略](#风险评估与缓解策略)
---
## 项目概述
### 项目定位
**ibkr-mcp** 是一个基于 MCP (Model Context Protocol) 的期权交易分析和风险管理服务器,集成 Interactive Brokers (IBKR) API,提供:
- 实时期权链数据获取与存储
- 多策略期权交易信号生成
- 投资组合风险评估与 Greeks 计算
- 自动化数据抓取和调度
- 完整的数据库持久化层
### 核心架构
```
ibkr-mcp/
├── src/ibkr_mcp/
│ ├── api/ # MCP API 工具
│ ├── common/ # 共享组件(期权数据、位置、Greeks、规则、手册)
│ ├── services/ # 核心服务(市场数据、投资组合、风险、新闻、交易)
│ ├── strategies/ # 期权策略实现
│ ├── repositories/ # 数据访问层
│ └── models.py # 数据模型
├── docs/ # 文档
└── tests/ # 测试
```
---
## 当前实现状态
### 总体进度:约 65% 完成
| 阶段 | 功能模块 | 状态 | 完成度 | 关键文件 |
|------|----------|------|--------|----------|
| 1 | 数据获取 | ✅ 完成 | 95% | `services/market_data.py`, `common/option_data.py` |
| 2 | 数据增强 | ✅ 完成 | 90% | `common/technical_indicators.py`, `common/market_state.py`, `common/stock_data.py` |
| 3 | 策略分析 | ✅ 完成 | 90% | `strategies/` |
| 4 | 信号聚合 | ❌ 缺失 | 0% | - |
| 5 | AI筛选 | ❌ 缺失 | 0% | - |
| 6 | 执行决策 | ⚠️ 部分 | 30% | `services/trade.py` |
| 7 | 投资组合管理 | ✅ 完成 | 85% | `services/risk_service.py`, `common/playbooks.py` |
| 8 | 通知与报告 | ⚠️ 部分 | 20% | 日志系统 |
---
## 缺失功能分析(按阶段顺序)
### 阶段 1:数据获取 - Save Snapshot
**实现状态:✅ 已完成(95%)**
**当前功能:**
- ✅ IBKRDataFetcher 完整实现(连接IBKR、获取期权链、行情数据)
- ✅ 智能过滤近月和LEAPS期权
- ✅ 距离排序选择±8档行权价
- ✅ 完整持久化(Parquet + CSV + 数据库)
- ✅ 调度器支持定时抓取
- ✅ 本地缓存支持(LocalDataFetcher)
**评估:** 功能完整度极高,超越原workflow要求,增加了调度器和本地缓存功能。
---
### 阶段 2:数据增强 - 股票数据、技术指标、市场状态分类
**实现状态:✅ 已完成(90%)**
**当前功能:**
- ✅ TechnicalIndicatorProcessor:完整实现,支持 MA5/MA10/MA30 移动平均线
- ✅ MarketStateClassifier:基于移动平均线的三种市场状态分类(BULL/UPTREND/BEAR)
- ✅ StockDataFetcher:从 IBKR 获取历史数据的完整实现
- ✅ MarketStateProvider 协议:DictMarketStateProvider 和 StockMarketStateProvider
- ✅ 策略集成:已修复所有策略中的导入路径
**关键文件路径:**
- `src/ibkr_mcp/common/technical_indicators.py` - ✅ 已完成
- `src/ibkr_mcp/common/market_state.py` - ✅ 已完成
- `src/ibkr_mcp/common/stock_data.py` - ✅ 已完成
- `src/ibkr_mcp/common/__init__.py` - ✅ 已更新导出
**评估:** 功能完整度极高,完整复用了 optionscanner 久经验证的数据增强架构。
---
### 阶段 3:策略分析 - Iron Condor、Covered Call、PMCC等策略
**实现状态:✅ 已完成(90%)**
**当前功能:**
- ✅ Iron Condor:完整实现,目标Δ: ±0.16,最小信用$1,价差宽度控制
- ✅ Covered Call:实现,基于年化收益率阈值
- ✅ PMCC:完整日历价差策略(LEAPS + 短期期权)
- ✅ Put Credit Spread:信用看跌价差
- ✅ Vertical Spread:垂直价差通用框架
- ✅ TradeSignal 数据结构标准化
**关键文件路径:**
- `src/ibkr_mcp/strategies/strategy_iron_condor.py`
- `src/ibkr_mcp/strategies/strategy_covered_call.py`
- `src/ibkr_mcp/strategies/strategy_pmcc.py`
- `src/ibkr_mcp/strategies/strategy_put_credit_spread.py`
- `src/ibkr_mcp/strategies/strategy_vertical_spread.py`
**评估:** 策略实现完整且功能丰富,参数配置灵活,超越原workflow要求
---
### 阶段 4:信号聚合 - 多策略信号合并
**实现状态:❌ 缺失(0%)**
**核心问题:** 无法将多个策略的信号整合和排序
**缺失组件:**
- ❌ 信号聚合器(Signal Aggregator)
- ❌ 退出推荐系统(Exit Recommendations)
- ❌ 信号 CSV 导出功能(signals_{timestamp}.csv)
- ❌ 止损/获利了结逻辑
- ❌ 位置缓存记录(position_cache.py)
**关键文件路径:**
- 需要新建:`src/ibkr_mcp/core/signal_aggregator.py`
- 需要新建:`src/ibkr_mcp/core/exit_recommender.py`
- 需要新建:`src/ibkr_mcp/core/signal_exporter.py`
**与workflow对应:**
- 原流程要求:aggregated_signals List[Tuple]、exit_recommendations、DataFrame Export
- 实际缺失:完全未实现聚合逻辑
**影响:** 阻断整个工作流程,用户无法获得综合的交易建议
---
### 阶段 5:AI筛选 - Gemini AI信号筛选
**实现状态:❌ 缺失(0%)**
**核心问题:** 无 AI 驱动的信号筛选和排名
**缺失组件:**
- ❌ Gemini AI 集成
- ❌ AI 提示词系统(System Prompt + User Prompt)
- ❌ JSON 响应解析
- ❌ BatchSelectionResult 结构
- ❌ selections: List[GeminiSelection]
**关键文件路径:**
- 需要新建:`src/ibkr_mcp/ai/gemini_client.py`
- 需要新建:`src/ibkr_mcp/ai/prompt_templates.py`
- 需要新建:`src/ibkr_mcp/ai/response_parser.py`
**与workflow对应:**
- 原流程要求:System Prompt、User Prompt、JSON响应解析、finalists数组
- 实际缺失:完全未实现AI筛选功能
**影响:** 无法利用 AI 进行智能信号筛选和风险评估
---
### 阶段 6:执行决策 - 自动交易执行
**实现状态:⚠️ 部分完成(30%)**
**当前功能:**
- ⚠️ `services/trade.py` 仅包含占位符注释
**缺失组件:**
- ❌ 订单构建逻辑(TradeExecutor._build_plan())
- ❌ 自动交易执行引擎
- ❌ 构建期权合约(Option)
- ❌ 资格验证(qualifyContracts)
- ❌ 价格推导(derive_price)
- ❌ 构建订单(Limit/Market)
- ❌ 提交订单(placeOrder)
- ❌ Slack 通知集成
**关键文件路径:**
- 当前:`src/ibkr_mcp/services/trade.py`(仅为占位符)
- 需要新建:`src/ibkr_mcp/execution/trade_executor.py`
- 需要新建:`src/ibkr_mcp/execution/order_builder.py`
**与workflow对应:**
- 原流程要求:Slack通知、自动交易执行、手动确认
- 实际缺失:核心交易执行逻辑未实现
**影响:** 策略信号无法转化为实际交易
---
### 阶段 7:投资组合管理 - 风险评估、playbook引擎
**实现状态:✅ 已完成(85%)**
**当前功能:**
- ✅ Greeks计算(Delta、Gamma、Vega、Theta、Rho)
- ✅ 风险评估系统(RiskEvaluator)
- ✅ PlaybookEngine(PMCC、Condor处理)
- ✅ 风险限制检查(集中度、流动性等)
- ✅ 投资组合摘要生成
- ✅ 位置加载和标准化
**关键文件路径:**
- `src/ibkr_mcp/services/risk_service.py`
- `src/ibkr_mcp/common/playbooks.py`
- `src/ibkr_mcp/common/rules.py`
- `src/ibkr_mcp/services/portfolio.py`
**评估:** 功能完整且实现质量高,超越原workflow要求
---
### 阶段 8:通知与报告 - 文件输出、Slack通知
**实现状态:⚠️ 部分完成(20%)**
**当前功能:**
- ✅ Loguru日志系统完整实现
- ⚠️ 文件输出部分实现(option_data.py中有CSV/Parquet导出)
**缺失组件:**
- ❌ Slack 通知系统(发送信号、附CSV)
- ❌ 报告生成器(CSV报告、JSON数据、TXT摘要)
- ❌ Email 告警
- ❌ 执行结果通知
- ❌ 风险摘要推送
- ❌ Webhook 回调
**关键文件路径:**
- 当前:分散在各模块中的日志记录
- 需要新建:`src/ibkr_mcp/notifications/slack_notifier.py`
- 需要新建:`src/ibkr_mcp/notifications/report_generator.py`
**与workflow对应:**
- 原流程要求:文件输出、Slack通知、日志记录
- 实际缺失:Slack集成和专门报告模块
**影响:** 用户无法及时获得关键信息和警报
---
## 开发优先级路线图(按阶段顺序)
### 📊 总体优先级策略
在保持8个阶段顺序的前提下,根据各阶段对工作流程的重要性进行分级:
- **🔴 阻断性阶段**:缺失将导致整个工作流程无法运行
- **🟡 重要阶段**:显著提升系统功能和性能
- **🟢 增强阶段**:改善用户体验,非核心功能
---
### 阶段 1:数据获取(Save Snapshot)
**状态:✅ 已完成(95%)** | **优先级:已完成**
**当前进展:**
- IBKRDataFetcher 完整实现
- 调度器支持定时抓取
- 完整持久化(Parquet + CSV + 数据库)
**结论:** 无需开发,可直接使用
---
### 阶段 2:数据增强(技术指标、市场状态)
**状态:✅ 已完成(90%)** | **优先级:已完成**
**当前进展:**
- TechnicalIndicatorProcessor 完整实现
- MarketStateClassifier 完整实现
- StockDataFetcher 完整实现
- MarketStateProvider 协议完整实现
- 所有策略导入路径已修复
**交付物:**
- ✅ TechnicalIndicatorProcessor 类(MA5/MA10/MA30)
- ✅ MarketStateClassifier(趋势、波动率、市场情绪)
- ✅ StockDataFetcher(历史数据获取)
- ✅ MarketStateProvider 协议实现
- ✅ 与现有策略的集成
**结论:** 无需开发,现有功能已满足需求
---
### 阶段 3:策略分析(Iron Condor、Covered Call、PMCC)
**状态:✅ 已完成(90%)** | **优先级:已完成**
**当前进展:**
- 5种期权策略完整实现
- TradeSignal 数据结构标准化
- 参数配置灵活
**结论:** 无需开发,现有功能已满足需求
---
### 阶段 4:信号聚合(多策略信号合并)
**预计时间:2-3 周** | **优先级:🔴 阻断性**
**开发原因:**
- **阻断整个工作流程** - 无聚合则无法进行后续步骤
- 用户无法获得综合的交易建议
- 是AI筛选和执行决策的基础
- 缺失将导致整个系统价值无法体现
**依赖关系:**
- 前置条件:阶段3策略分析(已完成)
- 后置影响:阶段5 AI筛选和阶段6执行决策依赖此输出
**交付物:**
- SignalAggregator 类(信号合并和评分)
- ExitRecommendation 引擎(退出推荐)
- SignalExporter(CSV/JSON导出)
- 单元测试和文档
**开发建议:** 高优先级,在阶段2完成后立即开始
---
### 阶段 5:AI筛选(Gemini AI信号筛选)
**预计时间:2-3 周** | **优先级:🟡 重要(可用简单排序替代)**
**开发原因:**
- 利用AI进行智能信号筛选和排名
- 提供专业的交易建议
- 提升决策质量
- **可用简单评分排序替代** - 非阻断性
**依赖关系:**
- 前置条件:阶段4信号聚合(必需)
- 后置影响:为阶段6执行决策提供筛选后信号
**交付物:**
- GeminiClient(Gemini API集成)
- PromptTemplates(System + User Prompt)
- ResponseParser(JSON响应解析)
- AIFilter(AI筛选器)
**开发建议:** 中优先级,阶段4完成后开始,可考虑先用简单排序替代
---
### 阶段 6:执行决策(自动交易执行)
**预计时间:3-4 周** | **优先级:🔴 阻断性**
**开发原因:**
- 策略信号的最终目标 - 将分析转化为行动
- 用户价值实现的关键环节
- **涉及真实资金** - 需谨慎实现
- 缺失将导致系统只能分析不能执行
**依赖关系:**
- 前置条件:阶段5 AI筛选(或简单排序)
- 后置影响:阶段7投资组合管理需要执行结果
**交付物:**
- TradeExecutor(自动交易执行引擎)
- OrderBuilder(订单构建器)
- RiskValidator(风控验证)
- ExecutionConfig(执行配置,默认模拟模式)
**安全考虑:**
- **默认启用模拟交易模式**
- 多层风险验证
- 详细的执行日志
**开发建议:** 高优先级,阶段5完成后开始,需重点关注风控
---
### 阶段 7:投资组合管理(风险评估、playbook引擎)
**状态:✅ 已完成(85%)** | **优先级:已完成**
**当前进展:**
- Greeks计算完整
- RiskEvaluator和PlaybookEngine已实现
- 风险限制检查功能完整
**结论:** 无需开发,现有功能已超越需求
---
### 阶段 8:通知与报告(Slack通知、文件输出)
**预计时间:1-2 周** | **优先级:🟢 增强(用户体验)**
**开发原因:**
- 提升用户体验
- 及时通知关键信息
- 非核心功能,可后续添加
- 与工作流程解耦,可独立开发
**依赖关系:**
- 前置条件:无(可在任何时候开始)
- 独立功能:与其他阶段解耦
**交付物:**
- SlackNotifier(Slack通知)
- ReportGenerator(报告生成)
- EmailNotifier(Email告警)
- WebhookHandler(Webhook回调)
**开发建议:** 低优先级,可在其他阶段完成后并行开发
---
### 🚀 优先级总结
**开发顺序建议:**
1. **立即开始(高优先级):**
- 阶段 4:信号聚合(2-3周)**【阻断性】**
2. **中期开发(中优先级):**
- 阶段 5:AI筛选(2-3周)**【可替代】**
- 阶段 6:执行决策(3-4周)**【阻断性】**
3. **后期开发(低优先级):**
- 阶段 8:通知报告(1-2周)**【增强功能】**
**总开发时间:8-10周(阶段2已完成,并行开发可缩短至6-8周)**
---
## 详细实施计划(按阶段顺序)
### 阶段 2:数据增强模块
**状态:✅ 已完成(90%)** | **优先级:已完成**
**目标:** 借鉴optionscanner项目的数据增强模块,为策略分析提供技术指标和市场状态数据
**关键文件:**
```
src/ibkr_mcp/common/
├── technical_indicators.py # ✅ 技术指标计算
├── market_state.py # ✅ 市场状态分类
└── stock_data.py # ✅ 股票数据获取
```
**实施状态:**
- ✅ 第1周:基础模块(technical_indicators.py, market_state.py)
- ✅ 第2周:数据获取(stock_data.py)
- ✅ 第3周:整合优化(修复import + 测试)
**交付物:**
- ✅ TechnicalIndicatorProcessor 类(MA5/MA10/MA30)
- ✅ MarketStateClassifier(趋势、波动率、市场情绪)
- ✅ StockDataFetcher(历史数据获取)
- ✅ MarketStateProvider 协议实现
**结论:** 完整复用了 optionscanner 久经验证的数据增强架构
**详细实现:** 请参阅 [stage2-data-enhancement-implementation.md](stage2-data-enhancement-implementation.md)
---
### 阶段 4:信号聚合模块
**里程碑 4.1:信号聚合与退出推荐** | **预计时间:2-3 周**
#### 目标
实现多策略信号的聚合、排序和推荐功能
#### 关键文件
```
src/ibkr_mcp/core/
├── signal_aggregator.py # 信号聚合器
├── exit_recommender.py # 退出推荐引擎
└── signal_exporter.py # 信号导出功能
```
#### 核心类设计
**SignalAggregator 类**
```python
@dataclass
class SignalAggregator:
"""聚合多个策略的信号并生成综合排名"""
def aggregate(self, signals: List[TradeSignal], context: Dict[str, Any]) -> List[AggSignal]:
"""聚合信号并返回排名后的列表"""
def score_signals(self, signals: List[TradeSignal]) -> List[Tuple[TradeSignal, float]]:
"""为信号评分"""
def deduplicate_signals(self, signals: List[TradeSignal]) -> List[TradeSignal]:
"""去重相似信号"""
```
**ExitRecommendation 类**
```python
@dataclass
class ExitRecommendation:
"""退出推荐"""
signal_id: str
action: str # 'CLOSE', 'ROLL', 'HOLD'
reason: str
urgency: str # 'LOW', 'MEDIUM', 'HIGH'
target_price: Optional[float]
timestamp: datetime
@dataclass
class ExitRecommendationEngine:
"""退出推荐引擎"""
def generate_recommendations(self, positions: List[Position], signals: List[TradeSignal]) -> List[ExitRecommendation]:
"""生成退出推荐"""
def check_profit_targets(self, position: Position) -> Optional[ExitRecommendation]:
"""检查获利了结条件"""
def check_stop_loss(self, position: Position) -> Optional[ExitRecommendation]:
"""检查止损条件"""
```
#### 实施步骤
1. **第 1 周**
- 设计 SignalAggregator 类
- 实现信号合并逻辑和评分算法
- 添加单元测试
2. **第 2 周**
- 实现 ExitRecommendation 引擎
- 添加止损/获利逻辑
- 集成风险评估
3. **第 3 周**
- 实现信号导出(CSV/JSON)
- 性能优化
- 文档和示例
#### 使用示例
```python
# 使用示例
aggregator = SignalAggregator()
signals = [iron_condor_signals, covered_call_signals, pmcc_signals]
aggregated = aggregator.aggregate(signals, market_context)
exporter = SignalExporter()
exporter.export_to_csv(aggregated, f"signals_{timestamp}.csv")
```
---
### 阶段 5:AI筛选系统
**里程碑 5.1:Gemini AI信号筛选** | **预计时间:2-3 周**
#### 目标
集成 Gemini AI 进行智能信号筛选和排名
#### 关键文件
```
src/ibkr_mcp/ai/
├── gemini_client.py # Gemini API 客户端
├── prompt_templates.py # 提示词模板
├── response_parser.py # 响应解析器
└── ai_filter.py # AI 筛选器
```
#### 核心类设计
**GeminiClient 类**
```python
class GeminiClient:
"""Gemini API 客户端"""
def __init__(self, api_key: str):
self.client = genai.GenerativeModel('gemini-pro')
async def analyze_signals(self, signals: List[AggSignal]) -> AIAnalysisResult:
"""分析信号并返回排名"""
class PromptTemplates:
"""提示词模板"""
SYSTEM_PROMPT = """
You are an options desk lead trader with 15 years of experience.
Analyze the provided option trading signals and rank them by risk-adjusted returns.
Consider: delta exposure, volatility skew, time decay, and market conditions.
"""
@staticmethod
def build_user_prompt(signals: List[AggSignal]) -> str:
"""构建用户提示词"""
prompt = "Analyze these option trading signals:\n\n"
for i, signal in enumerate(signals, 1):
prompt += f"{i}. {signal.strategy} | {signal.symbol} | Strike: {signal.strike} | "
prompt += f"Expiry: {signal.expiry} | Type: {signal.option_type} | "
prompt += f"Expected Return: {signal.expected_return:.2%}\n"
return prompt
```
**AIFilter 类**
```python
@dataclass
class AIAnalysisResult:
"""AI分析结果"""
finalists: List[GeminiSelection]
summary: str
reasoning: str
@dataclass
class GeminiSelection:
"""Gemini选择的信号"""
id: int
score: float
reason: str
class AIFilter:
"""AI 驱动的信号筛选器"""
def __init__(self, gemini_client: GeminiClient):
self.client = gemini_client
async def filter_signals(self, signals: List[AggSignal]) -> List[AggSignal]:
"""使用 AI 筛选信号"""
```
#### 实施步骤
1. **第 1 周**
- 实现 GeminiClient
- 设计 Prompt 模板(System Prompt + User Prompt)
- 单元测试
2. **第 2 周**
- 实现 ResponseParser(解析JSON响应)
- 集成 AI 分析
- 添加错误处理
3. **第 3 周**
- 实现 AIFilter
- 性能优化和缓存
- 文档和示例
#### 使用示例
```python
# 使用示例
ai_filter = AIFilter(GeminiClient(api_key))
filtered_signals = await ai_filter.filter_signals(aggregated_signals)
```
---
### 阶段 6:执行决策系统
**里程碑 6.1:自动交易执行** | **预计时间:3-4 周**
#### 目标
实现从信号到订单的自动化交易执行
#### 关键文件
```
src/ibkr_mcp/execution/
├── trade_executor.py # 交易执行器
├── order_builder.py # 订单构建器
├── risk_validator.py # 风控验证
└── execution_config.py # 执行配置
```
#### 核心类设计
**TradeExecutor 类**
```python
@dataclass
class ExecutionConfig:
"""执行配置"""
simulate_only: bool = True # 默认模拟交易
max_position_size: float = 10000.0
risk_limits: Dict[str, float]
class TradeExecutor:
"""自动化交易执行引擎"""
def __init__(self, ib: IB, config: ExecutionConfig):
self.ib = ib
self.config = config
async def execute_signal(self, signal: AggSignal) -> ExecutionResult:
"""执行单个信号"""
async def execute_signals(self, signals: List[AggSignal]) -> List[ExecutionResult]:
"""批量执行信号"""
def _validate_trade(self, signal: AggSignal) -> ValidationResult:
"""验证交易合规性"""
```
**OrderBuilder 类**
```python
class OrderBuilder:
"""从信号构建 IBKR 订单"""
@staticmethod
def build_option_order(signal: AggSignal) -> Order:
"""构建期权订单"""
@staticmethod
def build_stock_order(signal: AggSignal) -> Order:
"""构建股票订单(用于 Covered Call)"""
@staticmethod
def build_iron_condor_order(signals: List[AggSignal]) -> List[Order]:
"""构建铁鹰四腿订单"""
```
#### 实施步骤
1. **第 1-2 周**
- 设计 OrderBuilder 类
- 实现期权订单构建逻辑(单一腿和组合腿)
- 添加模拟交易模式(默认启用)
2. **第 3 周**
- 实现 TradeExecutor 类
- 添加风险验证逻辑
- 集成 IBKR API
3. **第 4 周**
- 实现批量执行和订单管理
- 添加错误处理和重试机制
- 全面测试和文档
#### 风险控制
```python
def _validate_trade(self, signal: AggSignal) -> ValidationResult:
"""多重验证"""
# 1. 资金检查
# 2. 风险限额检查
# 3. 集中度检查
# 4. 流动性检查
# 5. 合规性检查
```
---
### 阶段 8:通知与报告系统
**里程碑 8.1:多渠道通知与报告** | **预计时间:1-2 周**
#### 目标
实现多渠道通知和自动报告生成
#### 关键文件
```
src/ibkr_mcp/notifications/
├── slack_notifier.py # Slack 通知
├── email_notifier.py # Email 通知
├── report_generator.py # 报告生成器
└── webhook_handler.py # Webhook 回调
```
#### 核心类设计
**SlackNotifier 类**
```python
class SlackNotifier:
"""Slack 通知器"""
def __init__(self, webhook_url: str):
self.webhook_url = webhook_url
async def send_signal_notification(self, signals: List[AggSignal]):
"""发送交易信号通知"""
async def send_execution_result(self, result: ExecutionResult):
"""发送执行结果通知"""
async def send_risk_alert(self, alert: RiskAlert):
"""发送风险警报"""
```
**ReportGenerator 类**
```python
class ReportGenerator:
"""报告生成器"""
def generate_daily_report(self, date: date) -> str:
"""生成日报"""
def generate_trade_summary(self, executions: List[ExecutionResult]) -> str:
"""生成交易摘要"""
def export_to_csv(self, data: Any, filename: str):
"""导出CSV文件"""
```
#### 实施步骤
1. **第 1 周**
- 实现 SlackNotifier
- 添加基础通知模板
- 单元测试
2. **第 2 周**
- 实现 ReportGenerator
- 添加 EmailNotifier 和 WebhookHandler
- 集成测试和文档
#### 通知模板示例
```python
SIGNAL_TEMPLATE = """
🚀 New Option Trading Signals
📊 Signal Count: {count}
💰 Total Expected Return: {total_return:.2%}
⚡ Top Signal: {top_signal}
Details: {details}
"""
```
---
## 技术选型与架构设计
### 信号聚合架构
```mermaid
graph TD
A[多策略信号] --> B[SignalAggregator]
B --> C[风险评估]
B --> D[市场上下文]
C --> E[信号排序]
D --> E
E --> F[聚合信号列表]
F --> G[ExitRecommendation]
G --> H[信号导出]
```
### 交易执行架构
```mermaid
graph TD
A[聚合信号] --> B[TradeExecutor]
B --> C[风险验证]
C --> D{验证通过?}
D -->|是| E[构建订单]
D -->|否| F[拒绝执行]
E --> G[模拟交易]
G --> H[提交到IBKR]
H --> I[执行结果]
```
### AI 筛选架构
```mermaid
graph TD
A[聚合信号] --> B[AIFilter]
B --> C[格式化数据]
C --> D[构建Prompt]
D --> E[调用Gemini API]
E --> F[解析响应]
F --> G[生成排名]
G --> H[筛选后信号]
```
### 数据增强架构
```mermaid
graph TD
A[期权链数据] --> B[TechnicalIndicators]
A --> C[MarketDataProvider]
C --> D[历史价格]
D --> B
B --> E[技术指标]
C --> F[市场状态]
E --> G[增强快照]
F --> G
```
---
## 时间估算与里程碑(按阶段顺序)
### 总时间线:8-10 周
```
阶段实施顺序(按工作流程)
✅ 阶段 2:数据增强(已完成)
└── 里程碑 2.1:技术指标计算
阶段 4:信号聚合(2-3 周)
└── 里程碑 4.1:信号聚合与退出推荐
阶段 5:AI筛选(2-3 周)
└── 里程碑 5.1:Gemini AI信号筛选
阶段 6:执行决策(3-4 周)
└── 里程碑 6.1:自动交易执行
阶段 8:通知与报告(1-2 周)
└── 里程碑 8.1:多渠道通知与报告
阶段 9:集成测试与优化(2-3 周)
├── 端到端测试
├── 性能优化
└── 文档完善
```
### 详细里程碑时间表
| 阶段 | 里程碑 | 时间 | 累计周数 | 交付物 |
|------|--------|------|----------|--------|
| ✅ 阶段 2 | M2.1:技术指标计算 | 已完成 | 第 1-2 周 | TechnicalIndicators、MarketStateClassifier |
| 阶段 4 | M4.1:信号聚合 | 2-3 周 | 第 3-5 周 | SignalAggregator、ExitRecommendationEngine |
| 阶段 5 | M5.1:AI筛选 | 2-3 周 | 第 5-8 周 | GeminiClient、AIFilter |
| 阶段 6 | M6.1:执行决策 | 3-4 周 | 第 8-12 周 | TradeExecutor、OrderBuilder |
| 阶段 8 | M8.1:通知报告 | 1-2 周 | 第 12-13 周 | SlackNotifier、ReportGenerator |
| 阶段 9 | M9:发布准备 | 2-3 周 | 第 13-15 周 | 生产就绪版本 |
### 并行开发建议
虽然按照阶段顺序分析,但某些模块可以并行开发以加快进度:
**并行开发组 1(3-5 周同时进行):**
- 阶段 4:信号聚合
- 阶段 5:AI筛选(前期设计)
**并行开发组 2(8-12 周同时进行):**
- 阶段 6:执行决策
- 阶段 8:通知报告
**串行开发(必须按顺序):**
- 阶段 5 必须在 阶段 4 完成后开始(依赖聚合信号)
- 阶段 6 必须在 阶段 5 完成后开始(依赖AI筛选结果)
### 关键路径分析
**最长路径:阶段 4 → 阶段 5 → 阶段 6 = 7-10 周**
**可并行路径:**
- 阶段 8 可以在任何时间开始
- 阶段 6 的后半部分可以与阶段 8 并行开发
### 发布策略
**Alpha 版本(完成阶段 4-5):**
- 目标:第 8 周
- 包含:信号聚合、AI筛选、基础报告
**Beta 版本(完成阶段 4-6):**
- 目标:第 12 周
- 包含:完整工作流程(不含AI或简化AI)
**Production 版本(完成所有阶段):**
- 目标:第 15 周
- 包含:完整功能,包括AI筛选和通知系统
---
## 风险评估与缓解策略
### 技术风险
#### 🔴 高风险
**1. IBKR API 限制**
- **风险:** API 调用频率限制可能导致数据获取失败
- **缓解:** 实现请求节流和重试机制,使用缓存减少 API 调用
**2. 交易执行风险**
- **风险:** 自动化交易可能带来资金损失
- **缓解:** 强制模拟交易模式作为默认,添加多层风控验证
#### 🟡 中风险
**3. Gemini AI 依赖**
- **风险:** 外部 API 不可用或成本过高
- **缓解:** 提供本地排序算法作为备选方案
**4. 数据质量**
- **风险:** 实时数据延迟或不准确
- **缓解:** 多数据源验证,数据质量检查
### 项目风险
#### 🔴 高风险
**5. 开发进度延期**
- **风险:** 复杂功能可能导致开发延期
- **缓解:** 采用敏捷开发,分阶段交付,优先实现核心功能
#### 🟡 中风险
**6. 测试覆盖不足**
- **风险:** 金融交易系统需要高度可靠的测试
- **缓解:** 实施全面的单元测试、集成测试和回测
### 缓解策略总结
1. **分阶段实施**
- 先实现核心功能(P0)
- 再添加增强功能(P1/P2)
- 每个阶段独立测试
2. **模拟模式优先**
- 所有交易功能默认启用模拟模式
- 明确标识真实交易模式
3. **多层验证**
- 数据验证
- 风险验证
- 执行验证
4. **可观测性**
- 详细的日志记录
- 实时监控
- 告警机制
---
## 下一步行动
### 立即行动项(本周内)
1. **确认优先级**
- 与团队确认 P0 里程碑的重要性
- 分配开发资源
2. **启动信号聚合开发**
- 创建核心模块目录结构
- 开始 SignalAggregator 类的设计
3. **建立开发规范**
- 代码风格指南
- 测试标准
- 文档规范
### 短期目标(2-4 周)
1. **完成里程碑 1**
- 信号聚合模块
- 基础单元测试
2. **启动里程碑 2**
- 交易执行系统
- 风险验证框架
### 中期目标(2-3 个月)
1. **完成所有 P0 和 P1 里程碑**
2. **实现端到端工作流程**
3. **完成全面测试**
### 长期目标(3-6 个月)
1. **生产环境部署**
2. **用户培训和文档**
3. **持续优化和改进**
---
## 结论
ibkr-mcp 项目已经具备了坚实的**数据获取**、**数据增强**、**策略分析**和**风险管理**基础,整体完成度达到 **65%**。主要缺口在于**信号聚合**和**交易执行**这两个核心环节。
通过按照本计划分阶段实施,项目可以在 **8-10 周内**完成所有核心功能,实现从数据获取到交易执行的完整工作流程。
**关键成功因素:**
1. 优先解决阻断性问题(信号聚合)
2. 谨慎实施交易执行功能
3. 持续测试和验证
4. 保持代码质量和文档更新
**已完成阶段:**
- ✅ 阶段 1:数据获取(95%)
- ✅ 阶段 2:数据增强(90%)**【新增完成】**
- ✅ 阶段 3:策略分析(90%)
- ✅ 阶段 7:投资组合管理(85%)
本计划将指导团队高效推进项目,最终交付一个功能完整、稳定可靠的期权交易分析系统。