mcpField
A
autostrategy

autostrategy

github.com/zach0911データ・データベース1951 回インストール16 週間前に更新
リポジトリ

autostrategy について

autostrategy は、学習・研究向けの量的戦略を設計、コード生成、バックテスト、最適化するスキルです。設計書と人間の承認を工程に組み込み、スコアで改善を評価します。実運用や有料データは推奨しません。

主な機能

  1. 01戦略設計書の作成と承認
  2. 02設計に基づくコード生成とバックテスト
  3. 03スコアによる戦略最適化
  4. 04自律型または対話型の最適化
  5. 05変更履歴の記録とバージョン復元

活用シーン

  1. 01明確または曖昧な要望から量的戦略を設計
  2. 02戦略仕様をコード化してバックテスト
  3. 03バックテスト結果に基づく既存戦略の改善
  4. 04最適化案の比較と変更履歴の確認

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/autostrategyを入力して読み込まれたか確認します。

同梱ファイル

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

詳細

プロジェクトの 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 |

コメント