Spaces:
Runtime error
Runtime error
| # OptionAgent 构建 TODO | |
| 目标:构建一个能辅助期权交易研究的 agent。后续重点偏向波动率交易,而不是单纯方向性期权交易。它需要能查资料、查市场数据、分析 IV/RV/skew/term structure,生成波动率策略、回测策略,并根据回测结果迭代改进。所有输出必须带假设、风险、数据来源和限制说明,不直接承诺收益。 | |
| ## 0. 当前已有能力 | |
| - [x] 本地 RAG:`QueryKnowledgeTool` 已接入主 agent,可查询期权书籍知识库。 | |
| - [x] PDF RAG 优化:支持 PyMuPDF 提取、公式块识别、章节 metadata、页码引用。 | |
| - [x] Hybrid search:dense retrieval + BM25 + reranker。 | |
| - [x] 本地 RAG eval:支持 local-options eval、BEIR/fiqa、Open RAGBench。 | |
| - [x] 基础市场价格工具:`query_market_asset` 可查询股票、指数、ETF、crypto、forex 的当前价格。 | |
| - [x] Web search/visit webpage 已接入主 agent,并通过工具初始化与网页解析 mock 测试。 | |
| - [x] 期权链、IV、Greeks、期限结构、偏斜等基础数据模块已完成 MVP,并通过 mock 测试。 | |
| - [x] 策略构建模块 MVP 已完成:支持 5 类波动率策略候选。 | |
| - [x] 回测模块 MVP 已完成:支持 payoff 情景分析、RV signal 历史回测 proxy、历史期权 bid/ask quote CSV 真实腿级回测。 | |
| - [x] QuantConnect/LEAN 期权回测模板已加入:可用于接入真实历史期权链、撮合、组合持仓和保证金模型。 | |
| - [x] 策略改进/优化闭环 MVP 已完成:支持参数扫描和 best vs baseline 对比。 | |
| ## 1. Research 模块:资料检索 | |
| ### 1.1 本地知识库 RAG | |
| - [x] 查询本地书籍、PDF、Markdown 知识库。 | |
| - [x] 返回 source、page、section、content_type、score、excerpt。 | |
| - [x] 支持公式 chunk 和正文 chunk。 | |
| - [ ] 为期权策略类问题增加 query rewrite: | |
| - 中文问题转英文检索词。 | |
| - 生成多个 query variants。 | |
| - 对公式/章节/策略/风险问题采用不同检索策略。 | |
| - [ ] 增加 citation policy: | |
| - agent 最终回答必须引用 RAG 来源。 | |
| - 没查到资料时明确说“不确定/资料不足”。 | |
| ### 1.2 Web Search | |
| - [x] 将 `DuckDuckGoSearchTool` 和 `VisitWebpageTool` 接入 `app.py` 的 tools。 | |
| - [x] 修复 `VisitWebpageTool` 中缺失的 `re` import。 | |
| - [x] 给 web search 加使用边界: | |
| - 用于查最新市场事件、宏观事件、财报日期、公司公告、交易所规则。 | |
| - 本地书籍知识优先用 RAG,实时信息优先用 web。 | |
| - [x] Web 结果返回标题、URL 和摘要;发布时间后续按数据源能力增强。 | |
| - [ ] 对高风险市场信息做多源交叉验证。 | |
| ## 2. Market Data 模块:市场数据与期权数据 | |
| ### 2.1 标的行情 | |
| - [x] 当前价格、日内 OHLC、成交量。 | |
| - [x] 增加历史价格接口: | |
| - 日线、小时线、分钟线。 | |
| - 支持 start/end/period/interval 参数。 | |
| - 输出用于回测的标准 DataFrame/JSON。 | |
| - [x] 增加 realized volatility 计算: | |
| - 10D/20D/30D/60D realized vol。 | |
| - Parkinson/Garman-Klass 可选。 | |
| ### 2.2 期权链 | |
| - [x] 新增 `query_option_chain(symbol, expiration)` tool。 | |
| - [x] 返回 calls/puts: | |
| - strike | |
| - bid/ask/mid/last | |
| - volume/open_interest | |
| - implied_volatility | |
| - in_the_money | |
| - expiration | |
| - days_to_expiration | |
| - [x] 支持列出全部 expiration dates。 | |
| - [x] 对无流动性合约做标记: | |
| - bid/ask 缺失 | |
| - spread 过宽 | |
| - volume/OI 过低 | |
| ### 2.3 Greeks 与波动率结构 | |
| - [x] 新增 Greeks 计算模块: | |
| - delta/gamma/vega/theta/rho。 | |
| - 支持 Black-Scholes-Merton。 | |
| - 支持 dividend yield / risk-free rate 参数。 | |
| - [x] 新增 IV surface / skew 分析 MVP: | |
| - ATM IV。 | |
| - 近似 put-call skew。 | |
| - ATM IV term structure slope。 | |
| - IV percentile / rank 后续在 Milestone 2 完成。 | |
| - [x] 新增 volatility trading 专用指标 MVP: | |
| - realized volatility: 5D/10D/20D/30D/60D。 | |
| - implied vs realized spread。 | |
| - volatility risk premium: IV - RV。 | |
| - IV term structure slope。 | |
| - skew slope / put-call skew。 | |
| - vol-of-vol proxy 后续增强。 | |
| - event IV premium 后续增强。 | |
| - [ ] 对 yfinance IV 字段做 sanity check: | |
| - IV 为 0、缺失、异常值时标记。 | |
| - bid/ask/mid 不合理时不参与策略构建。 | |
| ### 2.4 数据源抽象 | |
| - [x] 建立 `market_data/` 模块,避免所有行情逻辑堆在 `app.py`。 | |
| - [x] 设计统一 schema: | |
| - `UnderlyingQuote` | |
| - `OptionContract` | |
| - `OptionChain` | |
| - `VolSnapshot` | |
| - [x] 第一阶段可用 yfinance,后续可接 Polygon/Tradier/IBKR。 | |
| ## 3. Strategy Builder 模块:策略构建 | |
| 后续策略构建以波动率观点为核心,方向观点为辅助变量。 | |
| ### 3.1 用户意图解析 | |
| - [ ] 解析用户输入: | |
| - 标的 symbol。 | |
| - 波动率观点:long vol / short vol / vol mean reversion / event vol / skew trade。 | |
| - 方向观点:bullish/bearish/neutral/range-bound。 | |
| - 时间周期。 | |
| - 风险承受。 | |
| - 账户约束/最大亏损。 | |
| - 是否允许裸卖。 | |
| - [ ] 如果关键信息缺失,agent 需要追问,而不是直接生成交易。 | |
| ### 3.2 策略候选生成 | |
| - [ ] 支持基础策略模板: | |
| - long call / long put | |
| - covered call | |
| - cash-secured put | |
| - vertical spread | |
| - calendar spread | |
| - straddle / strangle | |
| - iron condor | |
| - collar | |
| - [x] 支持波动率交易策略模板 MVP: | |
| - long straddle / long strangle | |
| - short straddle / short strangle | |
| - delta-hedged straddle | |
| - calendar spread | |
| - diagonal spread | |
| - variance-style option basket approximation | |
| - skew trade: risk reversal / put spread vs call spread | |
| - term structure trade: near-term short vol + longer-term long vol | |
| - [x] 每个策略输出: | |
| - legs | |
| - expiration | |
| - strike | |
| - net debit/credit | |
| - max profit | |
| - max loss | |
| - breakeven | |
| - margin estimate | |
| - Greeks exposure | |
| - liquidity warnings | |
| ### 3.3 策略筛选规则 | |
| - [ ] 根据市场状态筛选策略: | |
| - 高 IV:偏向 credit spread / iron condor / covered call。 | |
| - 低 IV:偏向 long options / calendar / debit spread。 | |
| - 趋势观点强:vertical spread / directional options。 | |
| - 震荡观点:short premium / condor。 | |
| - [ ] 根据波动率状态筛选策略: | |
| - IV 明显高于 RV:考虑 short vol,但必须检查事件风险和尾部风险。 | |
| - IV 明显低于 RV:考虑 long vol,但必须检查 theta bleed。 | |
| - 近月 IV 异常高:考虑 calendar/diagonal 或 event vol 策略。 | |
| - skew 极端:考虑 risk reversal、put spread、skew mean reversion。 | |
| - term structure 陡峭:考虑跨期限 vol trade。 | |
| - [ ] 加入风险约束: | |
| - max loss 不超过用户预算。 | |
| - spread 不能过宽。 | |
| - OI/volume 低的合约排除。 | |
| - 禁止默认裸卖期权。 | |
| - [ ] 输出多个候选策略并排序,而不是只给一个。 | |
| ### 3.4 策略解释 | |
| - [ ] 每个策略必须解释: | |
| - 为什么适合当前市场。 | |
| - 主要盈利条件。 | |
| - 主要亏损场景。 | |
| - Greeks 风险。 | |
| - IV crush / event risk。 | |
| - Vega / gamma / theta trade-off。 | |
| - Long vol 或 short vol 的核心假设。 | |
| - 流动性和滑点风险。 | |
| - [ ] 必须引用 RAG/web/market data 来源。 | |
| ## 3.5 Volatility Research 模块:波动率交易研究 | |
| - [x] 构建 volatility dashboard MVP: | |
| - current IV vs historical IV range。 | |
| - IV percentile / rank。 | |
| - realized volatility windows。 | |
| - IV-RV spread。 | |
| - term structure chart。 | |
| - skew chart。 | |
| - [x] 识别波动率 regime MVP: | |
| - low vol regime。 | |
| - high vol regime。 | |
| - vol expansion。 | |
| - vol compression。 | |
| - event-driven vol。 | |
| - [ ] 事件模块: | |
| - earnings date。 | |
| - CPI/FOMC/NFP 等宏观事件。 | |
| - event implied move。 | |
| - post-event IV crush risk。 | |
| - [x] 输出波动率观点 MVP: | |
| - long vol / short vol / neutral。 | |
| - confidence。 | |
| - key assumptions。 | |
| - invalidation conditions。 | |
| ## 4. Backtesting 模块:回测与情景分析 | |
| ### 4.1 第一阶段:Payoff 与情景分析 | |
| - [x] 新增 `backtest/` 模块。 | |
| - [x] 实现到期 payoff 情景表: | |
| - 不同标的价格下 PnL。 | |
| - breakeven。 | |
| - max loss/max profit。 | |
| - [x] 实现情景分析 MVP: | |
| - underlying price shock。 | |
| - IV up/down。 | |
| - days passed / theta decay。 | |
| - Greeks approximation。 | |
| - [x] 增加波动率情景 MVP: | |
| - IV crush。 | |
| - IV expansion。 | |
| - realized move vs implied move。 | |
| - gamma scalp breakeven move。 | |
| - delta-hedging frequency sensitivity。 | |
| - [x] 输出表格和 JSON,方便 agent 总结。 | |
| ### 4.2 第二阶段:历史回测 | |
| - [x] 获取历史 underlying price。 | |
| - [ ] 获取或近似历史 IV: | |
| - 优先真实历史 option chain。 | |
| - 没有数据时用 realized vol 或当前 IV 做近似,并明确标注限制。 | |
| - [x] 支持真实历史期权 quote CSV 输入: | |
| - 必需字段:date、underlying_symbol、underlying_price、contract_symbol、option_type、expiration、strike、bid、ask。 | |
| - 可选字段:mid、delta、gamma、theta、vega、implied_volatility、volume、open_interest。 | |
| - 当前实现可做 ATM long straddle 的真实开仓/平仓腿级 PnL。 | |
| - 注意:yfinance 不能可靠提供历史 option chain,严肃回测需要 Polygon/ORATS/OptionMetrics/QuantConnect 等数据源。 | |
| - [x] 设计 entry/exit rules MVP: | |
| - 入场条件。 | |
| - 出场条件。 | |
| - DTE 管理。 | |
| - 固定 holding period。 | |
| - 固定 entry frequency。 | |
| - [ ] 设计高级 entry/exit rules: | |
| - 止盈止损。 | |
| - rolling 规则。 | |
| - [x] 为波动率策略增加专门规则 MVP: | |
| - IV percentile 入场阈值。 | |
| - IV-RV spread 入场阈值。 | |
| - earnings 前后入场/退出。 | |
| - DTE bucket。 | |
| - delta hedge 频率。 | |
| - gamma scalp rule。 | |
| - [x] 计算指标 MVP: | |
| - total PnL | |
| - max drawdown | |
| - win rate | |
| - avg win/loss | |
| - [ ] 计算高级指标: | |
| - total return | |
| - CAGR | |
| - Sharpe/Sortino | |
| - exposure time | |
| - tail loss | |
| - realized vs implied PnL attribution | |
| - theta PnL | |
| - vega PnL | |
| - gamma scalping PnL | |
| ### 4.3 第三阶段:组合级回测 | |
| - [x] 支持单策略多笔交易 MVP。 | |
| - [ ] 支持多策略/多标的组合交易。 | |
| - [ ] 支持现金、保证金、仓位占用。 | |
| - [x] 支持交易成本、bid/ask slippage MVP。 | |
| - [ ] 支持 assignment / early exercise 风险近似。 | |
| - [x] 生成交易日志 MVP。 | |
| - [ ] 生成风险归因。 | |
| ## 5. Strategy Optimizer 模块:回测后改进 | |
| - [x] 根据回测结果自动提出改进 MVP: | |
| - 调整 expiration。 | |
| - 调整 strike/delta。 | |
| - 调整止盈止损。 | |
| - 限制入场市场环境。 | |
| - 避开财报/宏观事件。 | |
| - [ ] 对波动率策略提出专门改进: | |
| - 调整 long/short vol 入场 IV percentile。 | |
| - 调整 straddle/strangle delta。 | |
| - 调整 delta hedge 频率。 | |
| - 调整 DTE bucket。 | |
| - 避开或利用 event vol。 | |
| - 加入 tail hedge。 | |
| - [x] 支持参数扫描 MVP: | |
| - DTE range。 | |
| - delta target。 | |
| - width。 | |
| - profit target。 | |
| - stop loss。 | |
| - IV percentile threshold。 | |
| - IV-RV spread threshold。 | |
| - hedge frequency。 | |
| - [x] 输出对比表: | |
| - baseline strategy | |
| - improved strategy | |
| - metrics delta | |
| - trade-off | |
| - [ ] 防止过拟合: | |
| - train/test split。 | |
| - walk-forward analysis。 | |
| - out-of-sample period。 | |
| ## 6. Agent Orchestrator 模块:完整工作流 | |
| - [ ] 定义标准工作流: | |
| ```text | |
| 用户提出目标 | |
| -> 解析意图和约束 | |
| -> 查询 RAG/web 背景资料 | |
| -> 查询标的行情和期权链 | |
| -> 分析 IV/Greeks/流动性 | |
| -> 生成多个策略候选 | |
| -> 初步风险筛选 | |
| -> 回测/情景分析 | |
| -> 改进策略 | |
| -> 输出最终报告 | |
| ``` | |
| - [x] 增加 agent prompt 约束: | |
| - 不承诺收益。 | |
| - 不给无风险建议。 | |
| - 必须说明假设和数据限制。 | |
| - 必须输出最大亏损。 | |
| - 必须说明流动性、滑点、IV、事件风险。 | |
| - [x] 增加结构化输出格式: | |
| - `market_context` | |
| - `strategy_candidates` | |
| - `selected_strategy` | |
| - `backtest_summary` | |
| - `risk_warnings` | |
| - `sources` | |
| ## 7. UI / Report 模块 | |
| - [ ] Gradio UI 支持输入: | |
| - symbol | |
| - outlook | |
| - time horizon | |
| - risk budget | |
| - strategy preference | |
| - [ ] 展示: | |
| - 策略 legs 表格。 | |
| - payoff 图。 | |
| - Greeks 表格。 | |
| - 回测指标。 | |
| - 引用来源。 | |
| - [ ] 支持导出 Markdown/HTML report。 | |
| ## 8. Evaluation 模块 | |
| - [x] RAG retrieval eval。 | |
| - [x] Market data tool 单元测试:已覆盖 RV、Greeks、历史价格 tool、期权链 tool、volatility snapshot mock。 | |
| - [x] Strategy builder 单元测试: | |
| - payoff 计算正确。 | |
| - max loss/max profit 正确。 | |
| - breakeven 正确。 | |
| - [x] Backtest engine 测试: | |
| - 单腿/多腿 payoff。 | |
| - 交易成本。 | |
| - rolling/exit rule。 | |
| - [ ] Agent end-to-end 测试: | |
| - 给定 symbol + outlook,能完整输出策略、风险和来源。 | |
| ## 9. 推荐实现顺序 | |
| ### Milestone 1:Research + Market Data 可用 | |
| - [x] 接入 web search 和 visit webpage 到主 agent。 | |
| - [x] 修复 `VisitWebpageTool`。 | |
| - [x] 新增 option chain 查询工具。 | |
| - [x] 新增 Greeks/IV 基础计算。 | |
| - [x] 新增 IV/RV/skew/term structure 基础分析。 | |
| - [x] 将行情代码从 `app.py` 拆到独立模块。 | |
| ### Milestone 2:Volatility Dashboard MVP | |
| - [x] 计算 realized volatility windows。 | |
| - [x] 计算 ATM IV、IV rank/percentile proxy。 | |
| - [x] 计算 IV-RV spread。 | |
| - [x] 计算 skew 和 term structure。 | |
| - [x] 输出 volatility regime 判断。 | |
| ### Milestone 3:波动率策略生成 MVP | |
| - [x] 定义策略 leg schema。 | |
| - [x] 实现 5 个优先策略模板: | |
| - long straddle | |
| - long strangle | |
| - short straddle | |
| - calendar spread | |
| - iron condor | |
| - [x] 实现 payoff/max loss/breakeven 计算。 | |
| - [x] 根据 volatility regime 和 IV/RV 状态生成候选策略 MVP。 | |
| ### Milestone 4:回测 MVP | |
| - [x] 实现到期 payoff 和情景分析。 | |
| - [x] 实现历史 underlying 回测 MVP。 | |
| - [x] 实现 IV/RV 条件入场回测 MVP。 | |
| - [x] 实现历史期权 quote CSV 的真实 long straddle 回测 MVP。 | |
| - [x] 添加 QuantConnect/LEAN ATM long straddle 回测模板。 | |
| - [x] 实现 straddle/strangle 的 delta hedge 情景分析 proxy。 | |
| - [x] 输出核心指标和交易日志。 | |
| ### Milestone 5:优化闭环 | |
| - [x] 参数扫描。 | |
| - [x] 策略改进建议 MVP。 | |
| - [x] 对比报告。 | |
| - [ ] 防过拟合验证。 | |
| ### Milestone 6:完整 Agent 工作流 | |
| - [x] 统一 prompt 和输出格式。 | |
| - [ ] Gradio UI 展示策略、图表和回测。 | |
| - [ ] 端到端测试。 | |