mcpField
A
autostrategy

autostrategy

github.com/zach0911Data & databases1951 installsUpdated 16w ago
Repository

About autostrategy

autostrategy is a skill for designing, generating, backtesting, and optimizing quantitative strategies for learning and research. It uses a design document and human approval gates, and evaluates optimization with a score; it does not recommend live trading or paid data.

Key features

  1. 01Create and approve strategy design documents
  2. 02Generate and backtest code from the design
  3. 03Drive strategy optimization with a score
  4. 04Choose autonomous or interactive optimization
  5. 05Track changes and support version rollback

Use cases

  1. 01Designing a quantitative strategy from clear or vague goals
  2. 02Turning a strategy specification into code and backtests
  3. 03Iterating on an existing strategy using backtest results
  4. 04Comparing optimization options and reviewing change history

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/zach0911/autostrategy --skill autostrategy

After installing, type/autostrategyin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
README.md
examples/
.gitkeep
examples/dynamic-grid-multi-market/
config.yaml
requirements.txt
quality_report.json
strategy.py
STRATEGY_DESIGN.md
examples/dynamic-grid-multi-market/backtest/results/
backtest_result.json
examples/dynamic-grid-multi-market/data/
588000_SH.csv
9868_HK.csv
0700_HK.csv
TSLA.csv
563300_SH.csv
prompts/
codegen_agent.md
optimization_agent.md
design_agent.md
scripts/
env_setup.py
quality_check.py
run_backtest.py

Details

From the project README

Autostrategy · 量化策略自动生成

⚠️ 本 Skill 生成的策略仅供学习和研究用途,不构成任何投资建议。 量化交易有风险,过往回测表现不代表未来收益。


核心设计原则

#原则说明
1简洁性优先分数提升必须大于复杂度增加。删条件效果不变=大胜利。
2DESIGN文档是核心所有策略逻辑先写入 STRATEGY_DESIGN.md,代码从文档严格翻译生成。
3入口分流不假设用户知道怎么用,提供明确的路径引导。
4人在回路策略方向、设计文档和回测结果都必须人类确认;优化循环可在用户授权后自主运行。
5量化评估用 score_strategy() 一个数字决定 keep 或 revert。
6开箱即用用户只写策略逻辑,行情接入/回测验证由 Skill 处理。
7免费优先只推荐免费数据源和免费回测平台,不引导用户付费。
8不推实盘Skill 定位是策略创建和验证,不推荐实盘交易。
9模板驱动用模板保证输出结构和质量的一致性。
10自包含Skill 应该是可独立复制和分发的,不依赖外部状态。

执行流程(调度逻辑)

用户输入
    ↓
入口分流(判断路径)
    ↓
Phase 1: 启动设计 Agent → 产出 STRATEGY_DESIGN.md
    ↓
⏸ 审批点 1: 用户确认设计文档
    ↓
Phase 2: 启动代码 Agent → 产出 strategy.py + 回测
    ↓
⏸ 审批点 2: 用户确认回测结果
    ↓
Phase 3: 用户选择优化方式 → 启动对应 Agent / 交互式优化
    ↓
⏸ 审批点 3: 用户最终决策(接受/重做/回 Phase 1)
入口分流
用户输入路径示例
明确的策略需求直接路径 → Phase 1「帮我做一个双均线交叉策略」
人物风格策略直接路径 → Phase 1「写一个巴菲特投资策略」
大V/博主投资策略研究路径 → Phase 1「按XX大V的思路写个策略」
模糊的需求/意图诊断路径 → Phase 1「我想在A股做量化但不知道从哪开始」
已有策略需优化优化路径 → Phase 3「优化 ~/策略研究/均线交叉/ 这个策略」

优化路径前置验证:

  1. 检查用户指定的策略目录是否存在
  2. 检查 STRATEGY_DESIGN.md 是否存在于目录中(通过 ls/cat 验证,不可假设)
  3. 不存在 → 告知用户缺少设计文档,建议先走 Phase 1

Phase 1: 策略设计

目标:产出 STRATEGY_DESIGN.md —— 策略的精确设计规格文档。 ⛔ Phase 1 禁止生成代码。

启动设计 Agent:

Agent({
  prompt: 读取本 skill 目录下 prompts/design_agent.md 的完整内容
          在 prompt 末尾追加实际参数:
          """
          ## 实际参数
          - user_input: {用户原始输入}
          - market: {目标市场}
          - scripts_dir: {scripts_dir}
          - workspace: {workspace_path}(如用户未指定,可留空由 agent 自行决定)
          """,
  model: sonnet
})

Agent 将自主完成:入口分流 → 环境检测 → 多维度分析 → 生成 DESIGN 文档 → 质量检查 → 输出设计报告。

⏸ 审批点 1:用户确认 STRATEGY_DESIGN.md

Agent 返回后,展示设计摘要给用户:

┌─────────────────────────────────────────────────┐
│  策略设计摘要                                     │
├─────────────────────────────────────────────────┤
│  策略名称:  [名称]                                │
│  策略类型:  [类型]                                │
│  适用市场:  [市场]                                │
│  数据周期:  [周期]                                │
├─────────────────────────────────────────────────┤
│  买入条件:  [条件1] + [条件2] + ...              │
│  卖出条件:  [条件1] / [条件2] / ...              │
│  止损规则:  [止损方式]                            │
│  仓位管理:  [方法]                                │
├─────────────────────────────────────────────────┤
│  信号条件总数:  [N]个                             │
│  风控规则总数:  [N]条                             │
│  已知局限:    [列出关键局限]                      │
└─────────────────────────────────────────────────┘

⛔ Phase 1 → Phase 2 闸门(进入 Phase 2 前必须确认):

  1. ✅ 策略目录已创建,路径确认(从 design agent 报告中提取 workspace)
  2. ✅ STRATEGY_DESIGN.md 已写入磁盘(通过 ls/cat 验证)
  3. ✅ 质量检查已通过(退出码 0)或脚本不存在时文件已确认存在
  4. ✅ 设计摘要已展示
  5. ✅ 用户已明确回复「确认 / OK / 继续」

以上 5 项全部为 ✅ 时,才允许进入 Phase 2。



Phase 2: 代码生成 + 回测验证

目标:将 STRATEGY_DESIGN.md 翻译为可执行代码,并验证回测结果。 核心规则:AI 生成代码时必须先读取 STRATEGY_DESIGN.md,按文档逐条翻译,不可自由发挥。

前置检查(硬性要求):

  1. STRATEGY_DESIGN.md 文件存在于策略目录中(通过 ls/cat 验证,不可假设)
  2. 数据源已就绪(如未就绪,运行 python3 scripts/env_setup.py --install [市场类型])

启动代码 Agent:

workspace 从 Phase 1 design agent 的报告中的「文件路径」字段提取。

Agent({
  prompt: 读取本 skill 目录下 prompts/codegen_agent.md 的完整内容
          在 prompt 末尾追加实际参数:
          """
          ## 实际参数
          - workspace: {workspace_path}(从 design agent 报告中提取)
          - scripts_dir: {scripts_dir}
          """,
  model: sonnet
})

Agent 将自主完成:读取 DESIGN → 生成 strategy.py + config.yaml + README + requirements.txt → 运行回测 → 输出诊断报告。

⏸ 审批点 2:用户确认回测结果

Agent 返回后,展示回测摘要:

┌─────────────────────────────────────────────────┐
│  回测结果摘要                                     │
├─────────────────────────────────────────────────┤
│  回测分数:   [score]/100                          │
│  年化收益:   [X]%                                 │
│  最大回撤:   [X]%                                 │
│  夏普比率:   [X]                                  │
│  胜率:       [X]%                                 │
│  总交易次数: [N]                                  │
├─────────────────────────────────────────────────┤
│  过拟合风险: [高/中/低]                           │
│  未来函数:   [通过/警告]                          │
│  稳定性:     [通过/警告]                          │
└─────────────────────────────────────────────────┘
  • 分数 ≥ 60 且用户满意 → 策略完成
  • 分数 < 60 或用户想优化 → 进入 Phase 3
  • 用户不满意方向 → 回到 Phase 1

Phase 3: 优化

触发条件:Phase 2 回测不达标 / 用户说「优化这个策略」 核心思路:结构化诊断 → 候选方案库选方案 → 改DESIGN → 独立回测 → 棘轮决策

进入 Phase 3 时,主动向用户展示模式选择:

┌─────────────────────────────────────────────────┐
│  策略回测未达标,进入优化阶段。请选择优化方式:    │
│                                                  │
│  A. Agent 自主优化(推荐)                       │
│     → 系统自主跑最多 5 轮优化,5-15 分钟后出报告  │
│     → 期间你可以做其他事                         │
│                                                  │
│  B. 交互式优化                                   │
│     → 每轮优化都由你确认后再继续                  │
│     → 适合想深入参与优化过程的场景                │
└─────────────────────────────────────────────────┘

模式 A: Agent 自主优化

# Step A1: 准备上下文
收集以下信息:
  - workspace: 策略工作区目录的绝对路径
  - market: 目标市场(从 config.yaml 读取)
  - baseline_score: 初始回测分数(从 backtest_result.json 读取)
  - scripts_dir: autostrategy scripts 目录的绝对路径

# Step A2: 启动自主优化 Agent
Agent({
  prompt: 读取本 skill 目录下 prompts/optimization_agent.md 的完整内容
          在 prompt 末尾追加实际参数:
          """
          ## 实际参数
          - workspace: {workspace_path}
          - market: {market}
          - baseline_score: {score}
          - scripts_dir: {scripts_path}
          """,
  model: sonnet,
  timeout: 600000  # 10 分钟上限
})

Agent 将自主完成:基线快照 → 5轮诊断/修改/回测/评分/棘轮决策 → 输出结构化报告

模式 B: 交互式优化

沿用原有交互式优化流程(每轮用户确认),详见 prompts/optimization_agent.md 中的棘轮逻辑。

⏸ 审批点 3:用户最终决策

根据优化报告,给出选项:

  • A. 接受当前结果 — 策略优化完成
  • B. 探索性重做 — 换策略方向(需用户确认后回到 Phase 1)
  • C. 换标的 — 换交易标的(需用户确认后回到 Phase 1)
  • D. 回到 Phase 1 — 策略设计有根本问题,重新开始

策略评分函数 score_strategy()

权威实现见 scripts/run_backtest.py。将回测结果 + 复杂度映射为 0-100 分,是 Phase 3 棘轮决策的唯一依据。

MARKET_BENCHMARKS = {
    "A股": {"index": "000300.SH", "avg_annual_return": 8.0},
    "港股": {"index": "HSI",      "avg_annual_return": 5.0},
    "美股": {"index": "^GSPC",    "avg_annual_return": 10.0},
}

def score_strategy(backtest_result: dict, design_doc: dict, market: str = "A股") -> float:
    baseline_return = MARKET_BENCHMARKS.get(market, MARKET_BENCHMARKS["A股"])["avg_annual_return"]
    score = 0
    score += min(backtest_result['annual_return'] / (baseline_return * 2), 1.0) * 25
    score += max(1 - backtest_result['max_drawdown'] / 30, 0) * 20
    score += min(backtest_result['sharpe'] / 2.0, 1.0) * 25
    score += min(backtest_result['win_rate'] / 60.0, 1.0) * 15
    score += min(backtest_result['profit_loss_ratio'] / 2.5, 1.0) * 15
    # 简洁性惩罚
    condition_count = design_doc['num_buy_conditions'] + \
                      design_doc['num_sell_conditions'] + \
                      design_doc['num_filters'] + \
                      design_doc['num_risk_rules']
    complexity_penalty = max(0, (condition_count - 10) * 1.5)
    return max(0, score - complexity_penalty)

简洁性准则

场景判断处理
加了2个过滤条件,score提升0.5分复杂度增加不值得回滚
删了1个过滤条件,score不变简化胜利保留
加了1个过滤条件,score提升5分值得保留
条件总数超过10个过度复杂惩罚扣分

策略类型参考

类型触发示例数据需求回测复杂度
趋势跟踪「均线交叉」「突破策略」日线K线低
均值回归「超跌反弹」「RSI策略」日线K线 + 技术指标低
多因子选股「财务因子」「价值投资」基本面数据 + K线中
统计套利「配对交易」「协整」多只股票K线高
事件驱动「财报后走势」「公告策略」新闻/公告数据高
网格交易「定投网格」「震荡网格」分钟线/K线低

Skill 协作关系

已有 Skill协作方式调用场景
futuapi数据获取 + 模拟交易港美股策略
ftshare-all-in-oneA股全品类数据获取A股策略首选
securities-app-radar竞品/行业动态扫描策略背景分析

约束规则

  1. 不改变策略的核心逻辑方向 — 优化只调整参数和条件,不改变策略类型
  2. 每次只改一个变量 — 避免多个变更导致无法归因
  3. git 版本控制 — 所有改动在分支上,可随时回滚
  4. 评估独立性 — 效果评估必须用独立子Agent,避免「自己改自己评」
  5. MAX_ROUNDS 限制 — 连续2轮无提升时停止,防止无效循环
  6. 不推实盘 — 所有策略仅供学习研究,不推荐实盘交易
  7. 免费优先 — 只推荐免费数据源,不引导用户付费购买数据

禁止事项

  • ❌ 不可使用未来数据(如用当天收盘价做当天交易决策)
  • ❌ 不可忽略手续费、滑点、印花税
  • ❌ 不可在信号中引入未在 STRATEGY_DESIGN.md 中定义的指标
  • ❌ 不可将风控阈值设为比 STRATEGY_DESIGN.md 更宽松的值
  • ❌ 不可在 Phase 3 优化中修改策略类型(如把趋势跟踪改成均值回归)
  • ❌ 不可推荐实盘交易或提供投资建议
  • ❌ 不可引导用户购买付费数据服务

进化日志

每次优化记录写入策略目录的 docs/changelog.md:

## 优化历史

| 日期 | 版本 | 触发原因 | 改动内容 | 基线分 | 优化分 | 状态 |
|------|------|---------|---------|--------|--------|------|
| 2026-04-18 | v1.1 | 夏普比率<1.0 | 增加RSI过滤条件 | 52 | 68 | keep |
| 2026-04-18 | v1.2 | 胜率<45% | 调整止盈比例 | 68 | 71 | keep |
| 2026-04-18 | v1.3 | 收益率下降 | 增加成交量过滤 | 71 | 69 | revert |

Comments

Markdown supported