量化策略自动Loop工程(反射理论增强版 v2)

SKILLAI 工具
AI 工具 未标注权限 许可证不明确
安装这个技能

量化策略自动Loop工程 Skill(反射理论增强版) 基于索罗斯反射理论 + Loop Engineering + Karpathy双层循环 核心功能:双层循环架构、独立Verifier Agent、状态管理系统、理解保持机制

一句话选型结论

按资料字段整理

量化策略自动Loop工程(反射理论增强版 v2)是AI 工具类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类AI 工具 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_d0deb03a/quant-reflex-loop
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

AI 工具
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_d0deb03a仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791737220
正文体量61.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
组合多个 AI 能力

把写作、检索、总结串成一条流程。

搭工作流

把固定流程做成可重复调用的步骤。

做提示词与评测

整理提示词并对比输出效果。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在AI 工具场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
量化策略自动Loop工程(反射理论增强版 v2)当前 未标注权限 未标注 未标注 未标注 有
执行计划 只读 GitHub 仓库 151.5 万 Codex、Claude、Cursor 有
Playwright MCP 测试 浏览器控制 ClawHub 市场 136.5 万 OpenClaw 有
完成前的验证 未标注权限 GitHub 仓库 131.9 万 Codex、Claude、Cursor 有
子 Agent 驱动开发 只读 GitHub 仓库 131.2 万 Codex、Claude、Cursor 有
前端设计 执行命令 GitHub 仓库 125.6 万 Codex、Claude、Cursor 有

SKILL.md 全文

61.4 KB
模型实际读到的说明书原文,来自技能仓库

量化策略自动Loop工程 Skill(反射理论增强版 v2.0)

> 版本: 2.0 | 基于: 索罗斯反射理论 + Loop Engineering + Karpathy双层循环
> 核心升级: 新增独立Verifier、Meta Agent外层循环、状态管理系统、断点续跑


📋 目录

  1. 角色定义
  2. 核心架构
  3. 索罗斯反射理论基础
  4. 反射指标体系
  5. 双层循环框架
  6. 五Agent详细定义
  7. 验证器机制
  8. 状态管理系统
  9. 停止条件
  10. 自动化心跳机制
  11. 理解保持机制
  12. 快速量化Loop协议
  13. 记忆层
  14. 执行命令
  15. A股特殊约束
  16. 附录:优化点对照表

一、角色定义

1.1 Agent身份

你是一位A股量化投资专家,精通:
- 技术分析、量化策略设计与优化
- Python量化回测(backtrader/pyfolio/vectorbt)
- Loop Engineering(闭环工程)与Agent开发
- 索罗斯反射理论(Theory of Reflexivity)及其量化应用
- A股T+1交易制度及涨跌停规则

1.2 核心任务

设计并自动化执行基于索罗斯反射理论的A股量化策略"研究→生成→回测→验证→优化→部署"六阶段闭环循环。

1.3 根本原则

> "循环改变工作方式,但不会把你从工作中删除。"
> "用判断力去设计循环是解药;用它来逃避思考则是催化剂。"

  • 你是工具,不是主人
  • 每份策略必须输出"人话理解摘要"
  • 保持对系统的理解,不盲目接受循环输出

二、核心架构

2.1 整体架构图

┌─────────────────────────────────────────────────────────────────────────┐
│                         外层循环:Meta Agent                              │
│                                                                         
│  职责:观察内层循环 → 识别卡点 → 决策:继续/切换/扩大                       │
│                                                                         
│  决策规则:                                                              │
│  - 连续3个策略同方向失败 → 强制切换方向                                   │
│  - 内层重试相似模式5次+ → 注入新参数空间                                  │
│  - 某状态策略全失败 → 标记"该状态不适用"                                  │
└─────────────────────────────────────────────────────────────────────────┘
                                 │
                                 ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                        内层循环:六阶段框架                                │
│                                                                         
│  ┌─────────────┐                                                        │
│  │  Research   │ ──▶ 当前市场状态 + 反射指标                              │
│  └──────┬──────┘                                                        │
│         │                                                               │
│         ▼                                                               │
│  ┌─────────────┐    ┌─────────────┐                                    │
│  │  Generator  │───▶│  Backtest   │                                    │
│  └──────┬──────┘    └──────┬──────┘                                    │
│         │                  │                                            │
│         │                  ▼                                            │
│         │          ┌─────────────┐                                      │
│         │          │  Verifier   │ ← 【核心改进】独立Agent,严格打分      │
│         │          └──────┬──────┘                                      │
│         │                 │                                             │
│         │        ┌────────┴────────┐                                    │
│         │        │                 │                                     │
│         │    FAIL│            PASS│                                     │
│         │        ▼                 ▼                                     │
│         │  ┌───────────┐  ┌─────────────┐                             │
│         │  │ 记录教训   │  │ → Optimizer │                             │
│         │  │ 回退状态   │  │   Agent     │                             │
│         │  └───────────┘  └──────┬──────┘                             │
│         │                        │                                      │
│         │                        ▼                                      │
│         │                 ┌─────────────┐                              │
│         │                 │  Deploy     │                              │
│         │                 │  Agent      │                              │
│         │                 └──────┬──────┘                              │
│         │                        │                                      │
│         │                        ▼                                      │
│         │                 ┌─────────────┐                              │
│         │                 │ 理解摘要    │ ← 【核心改进】强制输出人话解释   │
│         └────────────────▶│  生成       │                               │
│                           └─────────────┘                               │
└─────────────────────────────────────────────────────────────────────────┘
                                 │
                                 ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                           状态层 & 记忆层                                 │
│                                                                         
│  state.yaml                  reflex_loop_log.md                          │
│  ├─ iteration: 5            ├─ 第1轮:失败原因                          │
│  ├─ direction: momentum     ├─ 第2轮:失败原因                          │
│  ├─ attempted: [...]         ├─ 教训总结                                  │
│  ├─ consecutive_fails: 2     └─ 策略理解摘要(每次必须)                  │
│  └─ next_action: ...                                                          │
│                                                                         
│  strategy_memory/                                                       │
│  └─ (策略库 + 各状态表现 + 理解摘要)                                      │
└─────────────────────────────────────────────────────────────────────────┘

2.2 架构说明

组件 类型 说明
Meta Agent 外层 观察者,决策是否切换方向
Research Agent 内层 市场状态诊断
Generator Agent 内层 策略生成(maker)
Backtest Agent 内层 回测执行
Verifier Agent 内层 严格打分(checker)
Optimizer Agent 内层 参数优化
Deploy Agent 内层 部署 + 理解摘要
state.yaml 状态 断点续跑记录
reflex_loop_log.md 记忆 实验日志

三、索罗斯反射理论基础

3.1 反射理论核心框架

> "我们 对现实的理解决定我们的行为,而我们的行为又反过来塑造了现实。" —— 乔治·索罗斯

基本函数

认知函数 y = f(x):市场参与者的认知由市场情况决定
参与函数 x = Φ(y):市场情况实时受到参与者思维和行为的影响
反射性:y = f[Φ(y)] 和 x = Φ[f(x)] —— 递归反馈循环

反射循环类型

循环类型 特征 市场表现
正反馈循环 预期→行为→强化预期 趋势自我强化,泡沫形成
负反馈循环 偏离→纠正→回归均衡 市场向基本面回归
拐点 极端状态下反转 泡沫破裂/触底反弹

四、反射指标体系

4.1 认知指标(预期/情绪)- 30%权重

指标 计算方法 反射含义
情绪指数 换手率+波动率+涨跌停数综合 市场参与者的整体认知
乖离率 (价格-MA20)/MA20 × 100% 认知与均值的偏离
涨跌家数比 上涨家数/下跌家数 多空情绪对比
波动率分位 历史波动率分位数 市场不确定性认知

4.2 行为指标(资金)- 40%权重

指标 计算方法 反射含义
主力净流入占比 主力净流入/总成交额 机构参与程度
主力净流入金额 超大单+大单净流入 主力机构行为总和
超大单净流入变化率 (今日-昨日)/昨日 × 100% 大资金动向
主力连续净流入天数 连续N日净流入 主力持续参与信号
融资余额同比 (今日-去年同期)/去年同期 杠杆资金情绪
北向资金趋势 5日净流入均线方向 外资认知

4.3 偏离度指标 - 20%权重

指标 计算方法 反射含义
PE分位数 当前PE/历史PE区间 估值与历史的偏离
PB分位数 当前PB/历史PB区间 估值偏离
股债收益率差 股市PE倒数-债券收益率 相对价值偏离

4.4 背离检测指标 - 10%权重

类型 识别条件 信号含义
顶背离 价格创新高 + 主力净流入创新低 主力出货预警
底背离 价格创新低 + 主力净流入明显放大 主力吸筹信号
量价背离 价格↑ + 成交额↓ 趋势弱化

五、双层循环框架

5.1 外层循环:Meta Agent

职责

1. 监控内层循环的实验结果
2. 识别内层搜索是否"卡住"
3. 决定是否切换策略方向
4. 调整参数空间范围
5. 注入新代码改变内层搜索方式

决策算法

class MetaAgent:
    """
    外层循环:元认知决策者
    观察内层工作,决定战略方向
    """

    def evaluate_inner_loop(self, state, results):
        """
        评估内层循环是否需要干预
        """
        # 1. 检查是否连续失败(同方向)
        consecutive_fails = state.get("consecutive_fails", 0)

        if consecutive_fails >= 3:
            return {
                "action": "PIVOT",
                "reason": f"连续{consecutive_fails}次失败,强制切换方向",
                "new_direction": self.suggest_alternative(state)
            }

        # 2. 检查是否陷入搜索模式陷阱
        if self.detect_pattern_trap(state):
            return {
                "action": "INJECT_NEW_SPACE",
                "reason": "检测到搜索模式陷阱,注入新参数空间",
                "injection": self.generate_new_parameter_space(state)
            }

        # 3. 检查特定状态是否全失败
        failed_states = self.get_failed_states(results)
        if len(failed_states) >= 2:
            return {
                "action": "MARK_UNSUITABLE",
                "reason": f"状态{failed_states}连续失败,标记为不适用",
                "mark": failed_states
            }

        # 4. 检查是否达到目标
        best_result = self.get_best_result(results)
        if best_result and best_result.sharpe >= 1.5:
            return {
                "action": "EXPLOIT",
                "reason": f"达到目标夏普{best_result.sharpe},扩大探索",
                "expand_range": True
            }

        # 5. 正常继续
        return {
            "action": "CONTINUE",
            "reason": "内层循环正常运作"
        }

    def suggest_alternative(self, state):
        """
        建议替代方向(强制探索内层回避的方向)
        """
        current_direction = state.get("direction", "unknown")

        alternatives = {
            "momentum": ["mean_reversion", "breakout", "pairs_trading"],
            "mean_reversion": ["momentum", "volatility", "sector_rotation"],
            "breakout": ["mean_reversion", "momentum", "grid_trading"],
        }

        # 优先选择内层最近没有探索的方向
        recent_directions = state.get("recent_directions", [])
        available = [d for d in alternatives.get(current_direction, []) 
                     if d not in recent_directions[-3:]]

        return available[0] if available else "mean_reversion"

    def detect_pattern_trap(self, state):
        """
        检测搜索模式陷阱
        内层总是重试相似的参数组合
        """
        recent_attempts = state.get("recent_attempts", [])

        # 检查是否5次以上都是相似参数
        if len(recent_attempts) >= 5:
            similarities = self.calculate_similarity(recent_attempts[-5:])
            if similarities > 0.8:  # 80%相似度
                return True

        return False

    def generate_new_parameter_space(self, state):
        """
        生成新的参数空间(打破内层直觉)
        """
        return {
            "type": "radical_change",
            "description": "强制探索非常规参数组合",
            "new_ranges": {
                "ma_period": [3, 5, 120, 200],  # 极端参数
                "rsi_period": [5, 7, 21],  # 短期化
                "atr_multiplier": [0.5, 3.0, 4.0]  # 极端止损
            }
        }

外层循环实例

【Meta Agent 决策日志】

时间:2026-07-06 14:30

内层循环状态:
- 当前方向:momentum(趋势跟随)
- 连续失败:3次
- 最近尝试:MA_20_60, MACD_12_26, Bollinger_20_2.0

评估结果:
⚠️ 连续3次趋势策略失败
⚠️ 检测到搜索模式陷阱(参数相似度82%)

决策:PIVOT(强制切换)
原因:内层陷入趋势策略惯性,需要探索其他方向

注入指令:
{
  "direction": "mean_reversion",
  "new_parameter_space": {
    "strategy_type": "RSI + 布林带",
    "rsi_period": [7, 14],
    "rsi_threshold": [25, 30, 35],
    "bollinger_std": [1.5, 2.5],
    "max_holding_days": [3, 5]
  },
  "reminder": "这次必须尝试内层直觉回避的方向"
}

5.2 内层循环:六阶段框架

D-D-M-I-S-V 流程

Design(设计)     → 定义市场状态 + 策略模板
Diagnose(诊断)    → 分析当前反射状态
Measure(测量)    → 计算反射指标
Improve(改进)    → 参数优化
Verify(验证)     → Verifier Agent 严格打分 ← 【新增】
Scale(扩展)      → 部署 + 理解摘要

内层循环详细流程

def inner_loop(strategy_direction, market_state, state_file):
    """
    内层循环:单次策略探索
    """
    # ========== Phase 1: Research ==========
    research_result = research_agent.analyze(market_state)

    # ========== Phase 2: Generate ==========
    strategy = generator_agent.create(
        direction=strategy_direction,
        reflex_state=research_result.reflex_state,
        parameter_space=state_file.get_parameter_space()
    )

    # ========== Phase 3: Backtest ==========
    backtest_result = backtest_agent.run(strategy, market_state)

    # ========== Phase 4: Verify (NEW!) ==========
    verify_result = verifier_agent.evaluate(backtest_result)

    if not verify_result.passed:
        # 记录失败教训
        log_failure(strategy, verify_result)
        update_state(state_file, {
            "status": "FAIL",
            "reason": verify_result.reasons,
            "next_action": verify_result.suggestion
        })
        return {
            "status": "FAIL",
            "lessons": verify_result.reasons
        }

    # ========== Phase 5: Optimize ==========
    optimized_strategy = optimizer_agent.optimize(
        strategy, 
        backtest_result,
        constraints=state_file.get_constraints()
    )

    # ========== Phase 6: Deploy + Understand ==========
    deploy_result = deploy_agent.deploy(optimized_strategy)
    understanding = deploy_agent.generate_understanding(
        optimized_strategy,
        backtest_result
    )

    update_state(state_file, {
        "status": "PASS",
        "strategy_id": optimized_strategy.id,
        "metrics": backtest_result.metrics
    })

    return {
        "status": "PASS",
        "strategy": optimized_strategy,
        "understanding": understanding
    }

六、五Agent详细定义

6.1 Agent 1: Research Agent(研究代理)

角色: 市场研究员

系统指令:

你是一个严谨的A股市场研究员。
你的任务是分析当前市场的反射状态。
不要添加主观臆测,只基于数据说话。

职责:
1. 监测反射指标(情绪/主力/偏离度/背离)
2. 研究最新市场特征
3. 发现潜在alpha来源
4. 更新市场状态报告

输出格式:

# 反射理论市场研究报告
日期:{date}

## 反射指标仪表盘

| 指标类别 | 指标名称 | 当前值 | 变化趋势 | 信号 |
|-----------|---------|--------|---------|------|
| 认知 | 情绪指数 | XX | ↑/↓/→ | 偏热/偏冷 |
| 认知 | 乖离率 | XX% | ↑/↓/→ | 偏离 |
| 行为 | 主力净流入占比 | XX% | ↑/↓/→ | 净流入/净流出 |
| 偏离 | PE分位数 | XX% | ↑/↓/→ | 偏离 |

## 反射循环阶段
**当前阶段:** [正反馈/负反馈/拐点/震荡]
**判断依据:** [具体数据支撑]

## 综合信号
- 市场情绪:[极度贪婪/贪婪/中性/恐慌/极度恐慌]
- 主力动向:[吸筹/派发/观望]
- 建议策略方向:[趋势跟随/逆向/观望]

6.2 Agent 2: Generator Agent(策略生成代理)

角色: 策略设计师(Maker)

系统指令:

你是一个高效的策略设计师。
你生成策略,但不能评价自己的策略。
打分和验证由独立的Verifier Agent完成。
保持客观,不要美化你的策略。

职责:
1. 根据反射阶段选择策略类型
2. 应用反射过滤规则
3. 定义策略参数空间
4. 生成策略代码

输出格式:

# 策略生成报告
策略名称:{name}
生成时间:{datetime}

## 策略逻辑
### 入场条件
1. [条件1,含反射过滤]
2. [条件2]

### 出场条件
1. [条件1]
2. [条件2]

## 反射过滤
- 主力净流入占比 > X%
- 情绪指数 < 85
- 无顶背离

## 参数空间
| 参数 | 范围 | 说明 |
|------|------|------|
| fast_ma | [5, 10, 15, 20] | 快速均线 |
| slow_ma | [20, 30, 60] | 慢速均线 |

## 策略代码
```python
# 见附件

---

## 6.3 Agent 3: Backtest Agent(回测代理)

**角色:** 量化分析师

**系统指令:**

你是一个中立的回测执行者。
你只负责运行回测,不负责判断策略好坏。
严格按照策略代码执行,不做主观调整。
如实报告结果,哪怕结果很差。


**职责:**
1. 执行策略回测
2. 计算常规性能指标
3. 计算反射维度指标
4. 生成完整回测报告

**输出格式:**
```markdown
# 回测执行报告
策略:{name}
回测时间:{datetime}
数据区间:{start} ~ {end}

## 常规性能指标

| 指标 | 数值 | 达标 |
|------|------|------|
| 年化收益率 | XX% | ✅/❌ |
| 夏普比率 | X.XX | ✅/❌ |
| 最大回撤 | -XX% | ✅/❌ |
| 胜率 | XX% | ✅/❌ |
| 盈亏比 | X.XX | ✅/❌ |

## 反射维度指标

| 指标 | 数值 | 说明 |
|------|------|------|
| 主力跟随率 | XX% | 策略是否跟随主力 |
| 正反馈周期收益 | XX% | 趋势市表现 |
| 震荡周期收益 | XX% | 震荡市表现 |

## 交易明细
[表格]

## 原始数据(未加工)
[如实呈现]

6.4 Agent 4: Verifier Agent(验证代理)【核心新增】

角色: 严格质检员

系统指令:

你是一个严厉的量化评审员。
你与策略生成者完全独立——你不知道这个策略是怎么生成的。
你只相信数据:回测结果、指标数字、统计显著性。

你的评分必须诚实。
如果夏普<1.0,直接判0分,不要说"还行"。
循环的质量取决于你的严格程度。

【禁止行为】
- 不要看策略代码,只看回测结果
- 不要受策略描述的影响,只看数字
- 不要说"虽然XX不达标,但整体还行"

职责:
1. 严格打分(基于数字,不看代码)
2. 门控判断(PASS/FAIL/REVIEW)
3. 失败原因分析
4. 改进建议生成

打分规则:

class VerifierAgent:
    """
    独立验证器:严格的量化评审员
    """

    # ========== 门控规则(必须全部通过) ==========
    GATE_RULES = {
        "sharpe_min": 1.0,           # 夏普比率必须 >= 1.0
        "max_drawdown_max": -0.15,   # 最大回撤 <= -15%
        "min_trades": 50,            # 交易次数 >= 50
        "min_data_years": 2,         # 数据至少2年
    }

    # ========== 反射维度规则 ==========
    REFLEX_RULES = {
        "main_follow_rate_min": 0.65,    # 主力跟随率 >= 65%
        "state_adapt_coef_min": 2.0,    # 状态适应系数 >= 2.0
        "divergence_loss_max": -0.10,    # 背离期亏损 <= -10%
    }

    def evaluate(self, backtest_result):
        """
        严格评估回测结果
        返回:(是否通过, 分数, 原因, 建议)
        """
        scores = {}
        failures = []
        suggestions = []

        # ========== 第一关:基础门控 ==========
        for metric, threshold in self.GATE_RULES.items():
            value = getattr(backtest_result, metric)

            if metric == "max_drawdown_max":
                passed = value >= threshold  # 回撤是负数,越大越好
            else:
                passed = value >= threshold

            scores[metric] = {
                "value": value,
                "threshold": threshold,
                "passed": passed,
                "score": 1.0 if passed else 0.0
            }

            if not passed:
                failures.append(f"{metric}={value}, 需要>={threshold}")
                suggestions.append(self.get_fix_suggestion(metric, value, threshold))

        # ========== 第二关:反射维度 ==========
        for metric, threshold in self.REFLEX_RULES.items():
            value = getattr(backtest_result, metric, 0)
            passed = value >= threshold

            scores[metric] = {
                "value": value,
                "threshold": threshold,
                "passed": passed,
                "score": 1.0 if passed else 0.5  # 反射维度占0.5分
            }

            if not passed:
                failures.append(f"反射-{metric}={value}, 需要>={threshold}")
                suggestions.append(self.get_reflex_fix(metric))

        # ========== 第三关:过拟合检测 ==========
        overfit_risk = self.check_overfitting(backtest_result)
        if overfit_risk > 0.3:
            scores["overfit_risk"] = {
                "value": overfit_risk,
                "threshold": 0.3,
                "passed": False,
                "score": 0.0
            }
            failures.append(f"过拟合风险={overfit_risk:.1%}")
            suggestions.append("样本内外一致性差,需要简化策略或增加数据")

        # ========== 综合判断 ==========
        total_score = sum(s["score"] for s in scores.values())
        max_score = len(scores)
        normalized_score = total_score / max_score

        gate_passed = all(s["passed"] for s in scores.values())

        return {
            "passed": gate_passed,
            "score": normalized_score,
            "total_score": f"{total_score}/{max_score}",
            "failures": failures,
            "suggestions": suggestions,
            "details": scores
        }

    def get_fix_suggestion(self, metric, value, threshold):
        """根据失败指标给出具体建议"""
        suggestions = {
            "sharpe_min": f"夏普={value:.2f}太低。建议:优化出场条件、增加止损、使用更严格的过滤",
            "max_drawdown_max": f"回撤={value:.1%}过大。建议:收紧止损、降低仓位、增加离场条件",
            "min_trades": f"交易次数={value}太少。建议:放宽入场条件、增加标的池",
            "min_data_years": f"数据年数不足。建议:使用更长时间的历史数据"
        }
        return suggestions.get(metric, "需要调整参数")

    def check_overfitting(self, result):
        """检测过拟合风险"""
        if not hasattr(result, "in_sample_sharpe") or not hasattr(result, "out_sample_sharpe"):
            return 0.0

        # 样本内外夏普差异
        sharpe_diff = abs(result.in_sample_sharpe - result.out_sample_sharpe)

        # 差异超过30%认为有过拟合风险
        return min(sharpe_diff / result.in_sample_sharpe, 1.0)

Verifier Agent 输出模板:

# Verifier Agent 评审报告
策略:{name}
评审时间:{datetime}

## 评审结论
**判定:[PASS / FAIL / REVIEW]**

## 分数详情

| 指标 | 数值 | 阈值 | 通过 | 得分 |
|------|------|------|------|------|
| 夏普比率 | 0.85 | ≥1.0 | ❌ | 0/1 |
| 最大回撤 | -12% | ≤-15% | ✅ | 1/1 |
| 交易次数 | 68 | ≥50 | ✅ | 1/1 |
| 主力跟随率 | 62% | ≥65% | ❌ | 0.5/1 |
| 过拟合风险 | 18% | ≤30% | ✅ | 1/1 |

**总分:3.5/5 = 70%**

## 失败原因
1. 夏普比率=0.85 < 1.0(门控失败)
2. 主力跟随率=62% < 65%

## 改进建议
1. 优化出场条件,提高夏普至1.0以上
2. 加入主力净流入过滤条件,提高跟随率
3. 可选:增加 RSI 超卖条件作为入场二次确认

6.5 Agent 5: Optimizer Agent(优化代理)

角色: 策略优化师

系统指令:

你是一个参数优化专家。
只有Verifier通过的战略才会进入优化阶段。
你的任务是找到最优参数组合。
同时注意防止过拟合。

职责:
1. 参数敏感性分析
2. 参数优化(网格搜索/贝叶斯)
3. 过拟合检测
4. 各状态最优参数

参数优化按反射状态:

def optimize_by_reflex_state(strategy_class, historical_data, reflex_states):
    """
    按反射状态分别优化参数
    不同市场状态使用不同最优参数
    """
    optimal_params = {}

    for state in ["POSITIVE_FEEDBACK", "NEGATIVE_FEEDBACK", "VOLATILE"]:
        # 筛选对应状态的数据
        state_data = filter_by_reflex_state(historical_data, state)

        # 数据不足则跳过
        if len(state_data) < 100:
            continue

        # 优化参数
        params = grid_search(
            strategy=strategy_class,
            train_data=state_data[:int(len(state_data)*0.7)],
            test_data=state_data[int(len(state_data)*0.7):],
            metric="sharpe_ratio",
            constraints={
                "sharpe_min": 0.8,
                "max_drawdown_max": -0.20
            }
        )

        optimal_params[state] = params

    return optimal_params

6.6 Agent 6: Deploy Agent(部署代理)

角色: 风控专家 + 理解生成器

系统指令:

你是一个负责任的部署专家。
在部署策略前,你必须生成"人话理解摘要"。
这是为了防止"理解债务"积累。
没有理解摘要的策略不得部署。

职责:
1. 最终策略验证
2. 反射自适应仓位配置
3. 生成策略理解摘要【核心新增】
4. 监控规则设置

理解摘要模板(强制输出):

# 策略理解摘要
策略名称:{name}
部署时间:{datetime}

## 1. 策略核心逻辑(人话解释)
> 用一句话解释:这个策略在做什么?

示例:这个策略在追涨——当短期均线从下方穿越长期均线时买入,
但只有在主力资金也在买入时才跟进。

## 2. 策略的核心假设
- 假设1:[是什么]
- 假设2:[是什么]
- 假设3:[是什么]

## 3. 什么时候策略会失效?
- 失效场景1:[描述]
- 失效场景2:[描述]

## 4. 为什么要相信这个策略?
- 数据支撑:[X年数据,X次交易]
- 关键指标:[夏普/X,最大回撤/X%]
- 反射验证:[主力跟随率/X%]

## 5. 你需要关注什么?
- 预警指标:[当X发生时需要警惕]
- 监控频率:[建议每周检查一次]
- 止损触发:[如果X发生,说明假设失效]

七、验证器机制

7.1 验证器核心原则

> "写代码的模型给自己的作业打分太宽容。" —— 循环方法论

关键设计:
1. Verifier Agent 与 Generator Agent 完全独立
2. Verifier 只看数字,不看代码
3. 严格的门控规则,不留情面
4. 失败原因必须具体、可操作

7.2 验证流程图

┌─────────────────────────────────────────────────────────┐
│                    Backtest Agent                       │
│                    输出回测结果                          │
└─────────────────────────────────────────────────────────┘
                          │
                          ▼
┌─────────────────────────────────────────────────────────┐
│                    Verifier Agent                       │
│  ┌─────────────────────────────────────────────────┐   │
│  │ 第一关:基础门控(全部通过才继续)                │   │
│  │  - 夏普 >= 1.0                                   │   │
│  │  - 最大回撤 <= -15%                              │   │
│  │  - 交易次数 >= 50                                │   │
│  └─────────────────────────────────────────────────┘   │
│                          │                              │
│                    通过?│                              │
│              ┌─────────┴─────────┐                     │
│             否                  是                      │
│              │                  │                      │
│              ▼                  ▼                      │
│  ┌───────────────────┐  ┌─────────────────────────┐   │
│  │ 第二关:反射维度   │  │ 第三关:过拟合检测      │   │
│  │ - 主力跟随率 >= 65%│  │ 样本内外差异 <= 30%     │   │
│  │ - 状态适应系数     │  │                        │   │
│  └───────────────────┘  └─────────────────────────┘   │
│              │                  │                      │
│              ▼                  ▼                      │
│         FAIL ❌            全部通过?                   │
│         记录教训              是/否                      │
│         返回Generator         │                        │
│                                ▼                        │
│                           PASS ✅                       │
│                           进入Optimizer                │
└─────────────────────────────────────────────────────────┘

7.3 验证器决策表

场景 判定 说明
夏普<1.0 FAIL 基础盈利能力不足,不考虑其他
夏普>=1.0 但回撤>-15% FAIL 风险过大
夏普>=1.0, 回撤<=-15% 但交易<50 FAIL 数据不足,结果不可靠
夏普>=1.0, 回撤<=-15%, 交易>=50 但主力跟随<65% REVIEW 可能逆势,降低评分
全部通过 PASS 进入优化阶段

八、状态管理系统

8.1 state.yaml 结构

# reflex_loop_state.yaml
# 量化策略Loop状态文件
# 用于断点续跑和搜索进度追踪

version: &quot;2.0&quot;
created_at: &quot;2026-07-05 10:00:00&quot;
updated_at: &quot;2026-07-06 14:30:00&quot;

# ========== 当前Loop状态 ==========
current_loop:
  loop_id: &quot;loop_20260705_001&quot;
  iteration: 5
  phase: &quot;generate&quot;  # research/generate/backtest/verify/optimize/deploy
  start_time: &quot;2026-07-06 10:00:00&quot;
  direction: &quot;mean_reversion&quot;
  reflex_state: &quot;VOLATILE&quot;

# ========== 搜索进度 ==========
search_progress:
  total_attempted: 12
  passed: 3
  failed: 9
  consecutive_fails: 2
  consecutive_passes: 1

# ========== 已尝试的策略 ==========
attempted_strategies:
  - id: 1
    name: &quot;MA_Breakout_20_60&quot;
    direction: &quot;momentum&quot;
    status: &quot;fail&quot;
    reasons:
      - &quot;sharpe=0.8 &lt; 1.0&quot;
      - &quot;主力跟随率=55% &lt; 65%&quot;
    lessons:
      - &quot;趋势策略在震荡市表现差&quot;
      - &quot;需要加入主力过滤&quot;
    tested_at: &quot;2026-07-06 10:15:00&quot;

  - id: 2
    name: &quot;RSI_Oversold_25_50&quot;
    direction: &quot;mean_reversion&quot;
    status: &quot;pass&quot;
    sharpe: 1.35
    main_follow_rate: 0.72
    deployed: true
    understanding_summary: &quot;均值回归策略,适合震荡市&quot;
    tested_at: &quot;2026-07-06 11:30:00&quot;

# ========== 方向探索记录 ==========
direction_history:
  momentum:
    attempts: 4
    passes: 1
    last_attempt: &quot;2026-07-06 10:15:00&quot;
    status: &quot;exhausted&quot;  # exploring/exhausted/not_tried
    lessons:
      - &quot;趋势策略在当前市场不适用&quot;

  mean_reversion:
    attempts: 3
    passes: 2
    last_attempt: &quot;2026-07-06 11:30:00&quot;
    status: &quot;exploring&quot;

  breakout:
    attempts: 2
    passes: 0
    last_attempt: &quot;2026-07-06 09:45:00&quot;
    status: &quot;not_tried&quot;

  pairs_trading:
    attempts: 0
    passes: 0
    status: &quot;not_tried&quot;

# ========== 停止条件 ==========
stop_conditions:
  max_iterations: 20
  max_time_minutes: 120
  consecutive_fails_threshold: 5
  target_sharpe: 1.5
  target_main_follow: 0.70
  consecutive_passes_target: 3

# ========== 下一步行动 ==========
next_action:
  priority: 1
  action: &quot;switch_direction&quot;
  reason: &quot;连续2次momentum失败,切换到breakout&quot;
  new_direction: &quot;breakout&quot;
  parameter_space_hint: &quot;尝试更短的持仓周期&quot;

# ========== Meta Agent 决策历史 ==========
meta_decisions:
  - time: &quot;2026-07-06 14:30:00&quot;
    decision: &quot;PIVOT&quot;
    trigger: &quot;连续3次momentum失败&quot;
    new_direction: &quot;mean_reversion&quot;

  - time: &quot;2026-07-06 10:00:00&quot;
    decision: &quot;CONTINUE&quot;
    trigger: &quot;初始方向探索&quot;

8.2 状态读写函数

import yaml
from pathlib import Path

class LoopStateManager:
    &quot;&quot;&quot;
    状态管理器:负责读取和写入 state.yaml
    支持断点续跑
    &quot;&quot;&quot;

    def __init__(self, state_file=&quot;reflex_loop_state.yaml&quot;):
        self.state_file = Path(state_file)
        self.state = self.load()

    def load(self):
        &quot;&quot;&quot;加载状态文件&quot;&quot;&quot;
        if self.state_file.exists():
            with open(self.state_file, &#x27;r&#x27;, encoding=&#x27;utf-8&#x27;) as f:
                return yaml.safe_load(f)
        else:
            return self._create_default()

    def save(self):
        &quot;&quot;&quot;保存状态文件&quot;&quot;&quot;
        self.state[&#x27;updated_at&#x27;] = datetime.now().strftime(&quot;%Y-%m-%d %H:%M:%S&quot;)
        with open(self.state_file, &#x27;w&#x27;, encoding=&#x27;utf-8&#x27;) as f:
            yaml.dump(self.state, f, allow_unicode=True, default_flow_style=False)

    def update_iteration(self, iteration):
        &quot;&quot;&quot;更新当前迭代&quot;&quot;&quot;
        self.state[&#x27;current_loop&#x27;][&#x27;iteration&#x27;] = iteration

    def record_attempt(self, strategy_result):
        &quot;&quot;&quot;记录一次尝试&quot;&quot;&quot;
        self.state[&#x27;search_progress&#x27;][&#x27;total_attempted&#x27;] += 1

        if strategy_result[&#x27;status&#x27;] == &#x27;pass&#x27;:
            self.state[&#x27;search_progress&#x27;][&#x27;passed&#x27;] += 1
            self.state[&#x27;search_progress&#x27;][&#x27;consecutive_fails&#x27;] = 0
            self.state[&#x27;search_progress&#x27;][&#x27;consecutive_passes&#x27;] += 1
        else:
            self.state[&#x27;search_progress&#x27;][&#x27;failed&#x27;] += 1
            self.state[&#x27;search_progress&#x27;][&#x27;consecutive_fails&#x27;] += 1
            self.state[&#x27;search_progress&#x27;][&#x27;consecutive_passes&#x27;] = 0

    def should_stop(self):
        &quot;&quot;&quot;检查是否应该停止&quot;&quot;&quot;
        sc = self.state[&#x27;stop_conditions&#x27;]
        sp = self.state[&#x27;search_progress&#x27;]

        # 硬性限制
        if sp[&#x27;total_attempted&#x27;] &gt;= sc[&#x27;max_iterations&#x27;]:
            return True, &quot;达到最大迭代次数&quot;

        # 连续失败过多
        if sp[&#x27;consecutive_fails&#x27;] &gt;= sc[&#x27;consecutive_fails_threshold&#x27;]:
            return True, f&quot;连续{sp[&#x27;consecutive_fails&#x27;]}次失败&quot;

        # 达到目标
        if sp[&#x27;consecutive_passes&#x27;] &gt;= sc[&#x27;consecutive_passes_target&#x27;]:
            return True, f&quot;连续{sp[&#x27;consecutive_passes&#x27;]}次通过,达到目标&quot;

        return False, &quot;继续&quot;

    def _create_default(self):
        &quot;&quot;&quot;创建默认状态&quot;&quot;&quot;
        return {
            &#x27;version&#x27;: &#x27;2.0&#x27;,
            &#x27;current_loop&#x27;: {
                &#x27;iteration&#x27;: 0,
                &#x27;phase&#x27;: &#x27;research&#x27;,
                &#x27;direction&#x27;: &#x27;momentum&#x27;,
                &#x27;reflex_state&#x27;: &#x27;UNKNOWN&#x27;
            },
            &#x27;search_progress&#x27;: {
                &#x27;total_attempted&#x27;: 0,
                &#x27;passed&#x27;: 0,
                &#x27;failed&#x27;: 0,
                &#x27;consecutive_fails&#x27;: 0,
                &#x27;consecutive_passes&#x27;: 0
            },
            &#x27;attempted_strategies&#x27;: [],
            &#x27;direction_history&#x27;: {},
            &#x27;stop_conditions&#x27;: {
                &#x27;max_iterations&#x27;: 20,
                &#x27;max_time_minutes&#x27;: 120,
                &#x27;consecutive_fails_threshold&#x27;: 5,
                &#x27;target_sharpe&#x27;: 1.5,
                &#x27;consecutive_passes_target&#x27;: 3
            },
            &#x27;next_action&#x27;: {
                &#x27;priority&#x27;: 1,
                &#x27;action&#x27;: &#x27;research&#x27;
            },
            &#x27;meta_decisions&#x27;: []
        }

九、停止条件

9.1 停止条件分类

class LoopStopCondition:
    &quot;&quot;&quot;
    循环停止条件
    包含硬性限制、软性条件和放弃条件
    &quot;&quot;&quot;

    def __init__(self):
        # ========== 硬性限制(达到必停) ==========
        self.max_iterations = 20          # 最多尝试N个策略
        self.max_time_minutes = 120       # 最多运行X分钟
        self.max_cost_tokens = 1000000    # 最多消耗token

        # ========== 软性条件(达成即停) ==========
        self.target_sharpe = 1.5          # 目标夏普比率
        self.target_main_follow = 0.70    # 目标主力跟随率
        self.consecutive_passes = 3       # 连续3个PASS即停止

        # ========== 放弃条件(切换方向) ==========
        self.consecutive_fails = 5        # 连续5个FAIL,切换方向
        self.stagnation_threshold = 3     # 3轮无改善,切换方向
        self.same_direction_fails = 3     # 同方向连续3次失败

    def should_stop(self, state) -&gt; (bool, str, str):
        &quot;&quot;&quot;
        检查是否应该停止

        返回:(是否停止, 原因, 建议行动)
        &quot;&quot;&quot;
        # ========== 1. 硬性限制检查 ==========
        if state.iteration &gt;= self.max_iterations:
            return True, f&quot;达到最大迭代次数{self.max_iterations}&quot;, &quot;结束Loop&quot;

        if state.elapsed_minutes &gt;= self.max_time_minutes:
            return True, f&quot;达到最大运行时间{self.max_time_minutes}分钟&quot;, &quot;结束Loop&quot;

        # ========== 2. 达到目标检查 ==========
        if state.consecutive_passes &gt;= self.consecutive_passes:
            return True, f&quot;连续{state.consecutive_passes}次PASS,达到目标&quot;, &quot;结束Loop&quot;

        if state.best_sharpe &gt;= self.target_sharpe:
            return True, f&quot;最佳夏普={state.best_sharpe}达到目标&quot;, &quot;结束Loop&quot;

        # ========== 3. 放弃条件检查 ==========
        if state.consecutive_fails &gt;= self.consecutive_fails:
            return True, f&quot;连续{state.consecutive_fails}次FAIL,放弃&quot;, &quot;切换方向&quot;

        if state.same_direction_fails &gt;= self.same_direction_fails:
            return True, f&quot;同方向连续{state.same_direction_fails}次失败&quot;, &quot;强制切换方向&quot;

        # ========== 4. 继续 ==========
        return False, &quot;继续Loop&quot;, &quot;下一轮迭代&quot;

    def get_status_summary(self, state):
        &quot;&quot;&quot;获取状态摘要&quot;&quot;&quot;
        return {
            &quot;iteration&quot;: f&quot;{state.iteration}/{self.max_iterations}&quot;,
            &quot;consecutive_passes&quot;: f&quot;{state.consecutive_passes}/{self.consecutive_passes}&quot;,
            &quot;consecutive_fails&quot;: f&quot;{state.consecutive_fails}/{self.consecutive_fails}&quot;,
            &quot;best_sharpe&quot;: f&quot;{state.best_sharpe:.2f}/{self.target_sharpe}&quot;,
            &quot;elapsed&quot;: f&quot;{state.elapsed_minutes}/{self.max_time_minutes}min&quot;
        }

9.2 停止条件一览表

类型 条件 动作
硬性 迭代 >= 20 强制停止
硬性 运行时间 >= 120分钟 强制停止
软性 连续3次PASS 达到目标,停止
软性 最佳夏普 >= 1.5 达到目标,停止
放弃 连续5次FAIL 切换方向
放弃 同方向3次失败 强制切换方向

十、自动化心跳机制

10.1 自动化配置

## 自动化触发规则

### 1. 定时触发
| 触发时间 | 执行内容 |
|---------|---------|
| 每日 15:30(盘后) | Research Agent 诊断市场状态 |
| 每日 16:00 | 检查策略表现,更新监控 |
| 每周六 09:00 | 运行完整 Loop 策略发现 |
| 每月最后一个交易日 | 策略月报生成 |

### 2. 事件触发
| 事件 | 触发条件 | 执行内容 |
|------|---------|---------|
| 大盘异动 | 单日涨跌 &gt; 3% | 紧急反射状态评估 |
| 主力出逃 | 连续净流出 &gt; 5日 | 策略防御检查 |
| 情绪极端 | 情绪指数 &gt; 90 或 &lt; 10 | 逆向信号确认 |
| 新策略达标 | Verifier PASS | 自动进入优化阶段 |

### 3. 持续运行模式

/loop --continuous --interval=3600 --max-hours=72
"持续运行量化策略Loop,每小时检查一次"


## 10.2 心跳执行脚本

```python
import schedule
import time
from datetime import datetime

def run_research_heartbeat():
    &quot;&quot;&quot;盘后研究心跳&quot;&quot;&quot;
    print(f&quot;[{datetime.now()}] 运行盘后研究...&quot;)
    # 调用 Research Agent
    research_agent.analyze_and_report()

def run_full_loop():
    &quot;&quot;&quot;完整Loop执行(周六)&quot;&quot;&quot;
    print(f&quot;[{datetime.now()}] 开始完整Loop...&quot;)
    # 从 state.yaml 读取上次进度
    state = LoopStateManager().load()

    # Meta Agent 决策
    meta = MetaAgent()
    decision = meta.evaluate_inner_loop(state, get_results())

    if decision[&#x27;action&#x27;] == &#x27;STOP&#x27;:
        print(&quot;达到停止条件,Loop结束&quot;)
        return

    # 执行内层循环
    for i in range(state.get(&#x27;remaining_iterations&#x27;, 5)):
        if should_stop():
            break
        inner_loop(decision[&#x27;direction&#x27;])

# 定时任务
schedule.every().day.at(&quot;15:30&quot;).do(run_research_heartbeat)
schedule.every().saturday.at(&quot;09:00&quot;).do(run_full_loop)

while True:
    schedule.run_pending()
    time.sleep(60)

十一、理解保持机制

11.1 理解债务警示

> "循环交付代码的速度越快,你仓库里存在的代码和你真正理解的代码之间的鸿沟就越大。"

设计原则:
- 每份策略必须有人话理解摘要
- 定期生成理解报告
- 保持对系统的认知,不过度依赖循环输出

11.2 理解摘要生成器

class UnderstandingGenerator:
    &quot;&quot;&quot;
    理解摘要生成器
    防止&quot;理解债务&quot;积累
    &quot;&quot;&quot;

    def generate(self, strategy, backtest_result, market_state):
        &quot;&quot;&quot;
        生成策略理解摘要
        &quot;&quot;&quot;
        return {
            &quot;strategy_name&quot;: strategy.name,
            &quot;core_logic&quot;: self.explain_logic(strategy),
            &quot;assumptions&quot;: self.identify_assumptions(strategy, market_state),
            &quot;failure_scenarios&quot;: self.identify_failure_cases(strategy, backtest_result),
            &quot;evidence&quot;: self.summarize_evidence(backtest_result),
            &quot;monitoring&quot;: self.get_monitoring_plan(strategy)
        }

    def explain_logic(self, strategy):
        &quot;&quot;&quot;
        用人话解释策略逻辑
        &quot;&quot;&quot;
        # 根据策略类型生成不同解释
        if &quot;MA_Breakout&quot; in strategy.name:
            return (
                f&quot;这个策略在追涨。当{strategy.params[&#x27;fast_ma&#x27;]}日均线从下方穿越&quot;
                f&quot;{strategy.params[&#x27;slow_ma&#x27;]}日均线时买入。但我们只在主力资金也在买入时&quot;
                f&quot;才跟进(主力净流入&gt;{strategy.reflex_filter[&#x27;main_net_pct&#x27;]}%)。&quot;
                f&quot;这样可以避免假突破。&quot;
            )
        elif &quot;RSI_Oversold&quot; in strategy.name:
            return (
                f&quot;这个策略在抄底。当RSI跌到{strategy.params[&#x27;threshold&#x27;]}以下时,&quot;
                f&quot;认为市场超卖了。但我们只在价格严重偏离均线时才出手(乖离率&lt;&quot;
                f&quot;{strategy.reflex_filter[&#x27;bias_rate&#x27;]}%),因为这时候反弹概率更大。&quot;
            )
        else:
            return &quot;策略逻辑需要人工补充说明&quot;

    def identify_assumptions(self, strategy, market_state):
        &quot;&quot;&quot;
        识别策略的核心假设
        &quot;&quot;&quot;
        assumptions = []

        if strategy.direction == &quot;momentum&quot;:
            assumptions.append(
                &quot;假设趋势会延续——如果市场突然反转,策略会亏损&quot;
            )
            assumptions.append(
                f&quot;假设当前市场处于{market_state.reflex_state}状态&quot;
            )

        if strategy.use_reflex_filter:
            assumptions.append(
                &quot;假设主力资金能提供有效信号——如果主力行为与价格背离,此假设失效&quot;
            )

        return assumptions

    def identify_failure_cases(self, strategy, backtest_result):
        &quot;&quot;&quot;
        识别策略失效场景
        &quot;&quot;&quot;
        failures = []

        # 分析亏损交易
        losing_trades = [t for t in backtest_result.trades if t.return &lt; 0]

        # 最常见的亏损模式
        if losing_trades:
            avg_loss = sum(t.return for t in losing_trades) / len(losing_trades)
            if avg_loss &lt; -0.05:
                failures.append(
                    f&quot;震荡市中容易反复被止损(平均亏损{avg_loss:.1%})&quot;
                )

        # 特定状态表现
        if backtest_result.negative_feedback_return &lt; -0.10:
            failures.append(
                &quot;负反馈周期(趋势衰竭期)表现差,应避免使用&quot;
            )

        return failures

    def get_monitoring_plan(self, strategy):
        &quot;&quot;&quot;
        生成监控计划
        &quot;&quot;&quot;
        return {
            &quot;frequency&quot;: &quot;每周检查一次&quot;,
            &quot;key_metrics&quot;: [&quot;夏普比率&quot;, &quot;主力跟随率&quot;, &quot;胜率&quot;],
            &quot;warning_signals&quot;: [
                &quot;夏普比率连续2周 &lt; 1.0&quot;,
                &quot;主力连续净流出 &gt; 5日&quot;,
                &quot;情绪指数进入极端区间&quot;
            ],
            &quot;action_on_warning&quot;: &quot;触发复盘,考虑暂停策略&quot;
        }

11.3 周度理解报告

# 策略理解周报
周期:2026-07-01 ~ 2026-07-06

## 本周探索总结

### 测试方向
- momentum(趋势跟随):4次尝试,1次通过
- mean_reversion(均值回归):3次尝试,2次通过
- breakout(突破):2次尝试,0次通过

### 核心发现
1. **趋势策略在当前市场失效**
   - 原因:市场处于震荡状态,趋势难以延续
   - 数据:4次尝试中3次因夏普&lt;1.0失败

2. **均值回归策略有效**
   - 原因:RSI超卖 + 布林带下轨提供好买点
   - 最佳策略:RSI_25_50_Bollinger_20_2.0
   - 表现:夏普1.35,主力跟随率72%

3. **主力过滤有效**
   - 加入主力净流入&gt;2%的过滤后
   - 胜率从52%提升至65%

## 你需要了解的关键结论

### 为什么趋势策略不行了?
当前市场处于[震荡/熊市]状态,趋势难以延续。
MA金叉出现后,价格往往很快回落。
这是市场的根本性变化,不是参数问题。

### 为什么均值回归策略有效?
当RSI&lt;25时,市场情绪极度恐慌。
但由于[政策托底/基本面未变],
价格往往会反弹到合理区间。
布林带下轨提供了更好的入场点。

### 接下来应该关注什么?
1. 密切关注市场状态变化
2. 如果市场进入正反馈周期,重新测试趋势策略
3. 监控主力资金流向变化

## 当前策略库

| 策略名称 | 状态 | 夏普 | 适用场景 |
|---------|------|------|---------|
| RSI_25_50 | ✅ 部署中 | 1.35 | 震荡市 |
| MA_Breakout_20_60 | ❌ 放弃 | 0.8 | 不适用 |
| Bollinger_Reversion | 🔄 优化中 | 1.15 | 震荡市 |

十二、快速量化Loop协议

12.1 最小可用Loop(开箱即用)

> 无需配置,直接复制粘贴到任意LLM即可运行

你将在一个量化策略Loop中工作,直到任务达到标准。

任务:为A股市场设计一个基于[方向]的量化交易策略
成功标准(必须全部达标):
  - 夏普比率 &gt;= 1.0
  - 最大回撤 &lt;= -15%
  - 交易次数 &gt;= 50
  - 主力资金跟随率 &gt;= 65%

循环协议,每轮重复:

1. 计划 —— 说下一步唯一要做的一件事
2. 执行 —— 生成策略代码并运行回测
3. 验证 —— 对每个标准打分(1-10,极其诚实)
4. 决定 —— 如果全部标准&gt;=8分,输出&quot;完成&quot;。否则输出&quot;迭代中&quot;,修复最薄弱的点

规则:
- 未全部达标前,绝不说&quot;完成&quot;
- 每轮必须修复上一轮验证中最低分的项
- 不要问问题,做出合理假设继续
- 生成策略时,必须输出&quot;理解摘要&quot;(人话解释策略逻辑)

开始。

12.2 快速Loop执行示例

【第1轮】

计划:生成一个基础的MA金叉策略
执行:生成MA_20_60策略代码,运行回测
验证:
  - 夏普比率 = 0.7 → 评分 5/10
  - 最大回撤 = -18% → 评分 4/10
  - 交易次数 = 68 → 评分 8/10
  - 主力跟随率 = 55% → 评分 4/10
决定:迭代中。最弱项是主力跟随率,需要加入主力过滤。

【第2轮】

计划:加入主力净流入过滤条件
执行:修改策略,加入&quot;主力净流入&gt;2%&quot;的入场条件
验证:
  - 夏普比率 = 0.85 → 评分 6/10(改善!)
  - 最大回撤 = -14% → 评分 9/10(改善!)
  - 交易次数 = 52 → 评分 8/10
  - 主力跟随率 = 68% → 评分 8/10(改善!)
决定:迭代中。夏普仍需提升到1.0。

【第3轮】

计划:收紧出场条件,提高夏普
执行:加入RSI高位出场条件,MA死叉+RSI&gt;60双出场
验证:
  - 夏普比率 = 1.15 → 评分 9/10
  - 最大回撤 = -12% → 评分 9/10
  - 交易次数 = 48 → 评分 7/10(略降)
  - 主力跟随率 = 72% → 评分 9/10
决定:完成。全部标准&gt;=8分。

理解摘要:
这个策略在追涨——当短期均线从下方穿越长期均线时买入,
但只有在主力资金也在买入(净流入&gt;2%)时才跟进。
出场使用均线死叉或RSI过高双保险。
策略假设趋势会延续,且主力能提供有效信号。

十三、记忆层

13.1 目录结构

strategy_memory/
├── strategies/
│   ├── momentum/
│   │   ├── MA_Breakout_20_60/
│   │   │   ├── config.yaml
│   │   │   ├── params_by_state.json
│   │   │   ├── backtest_results.json
│   │   │   ├── reflex_analysis.json
│   │   │   └── understanding.md  ← 新增
│   │   └── ...
│   ├── mean_reversion/
│   └── ...
├── market_regimes/
│   ├── bullish_reflex.yaml
│   ├── bearish_reflex.yaml
│   └── volatile_reflex.yaml
├── lessons_learned/
│   ├── reflex_insights.md
│   ├── strategy_failures.md
│   └── meta_decisions.md  ← 新增
└── weekly_reports/
    └── 2026-W27.md  ← 新增

13.2 实验日志模板

# reflex_loop_log.md
# 量化策略Loop实验日志

## 2026-07-06 实验记录

### 第5轮迭代
- **研究方向:** 趋势跟随(正反馈周期)
- **测试策略:** MA_Breakout_20_60
- **回测结果:** sharpe=0.85 ❌(未达标)
- **失败原因:** 
  - 夏普=0.85 &lt; 1.0
  - 主力跟随率=55% &lt; 65%
- **教训:** 
  - 趋势策略在震荡市表现差
  - 需要加入主力过滤条件

### 第6轮迭代
- **研究方向:** 调整为均值回归
- **测试策略:** RSI_Oversold_25_50
- **回测结果:** sharpe=1.35 ✅
- **主力跟随率:** 68% ✅
- **结论:** 有效

### Meta Agent 决策
- **14:30 决策:** PIVOT
- **触发:** 连续3次momentum失败
- **新方向:** mean_reversion
- **原因:** 检测到搜索模式陷阱(参数相似度82%)

## 经验总结

### 什么有效?
- ✅ 均值回归策略在震荡市有效
- ✅ 主力净流入过滤能提高胜率
- ✅ RSI超卖 + 布林带下轨是好买点

### 什么无效?
- ❌ 趋势跟随策略在当前市场失效
- ❌ MA金叉单独使用胜率低
- ❌ 未过滤的交易在震荡市反复止损

### 下一步方向?
- 🔄 继续优化均值回归策略
- 📊 监控市场状态变化
- 🔔 如果正反馈周期到来,重新测试趋势策略

13.3 策略记录格式

strategy_record:
  name: &quot;RSI_Oversold_25_50&quot;
  created_date: &quot;2026-07-05&quot;
  reflex_state: &quot;VOLATILE&quot;
  status: &quot;active&quot;

  performance:
    overall:
      sharpe: 1.35
      max_drawdown: -10.2
      annual_return: 18.5%

    by_reflex_state:
      POSITIVE_FEEDBACK:
        sharpe: 0.9
        return: 8%
      NEGATIVE_FEEDBACK:
        sharpe: 0.6
        return: 3%
      VOLATILE:
        sharpe: 2.1
        return: 28%

  reflex_metrics:
    main_follow_rate: 0.72
    divergence_win_rate: 0.45

  best_parameters:
    by_state:
      VOLATILE:
        rsi_threshold: 25
        rsi_exit: 50
        bollinger_std: 2.0

  # ========== 新增:理解摘要 ==========
  understanding:
    core_logic: |
      当RSI跌到25以下时,认为市场超卖。
      布林带下轨提供更好的入场点(价格严重偏离均线)。
      策略假设超卖后会均值回归。

    assumptions:
      - &quot;假设市场会均值回归&quot;
      - &quot;假设RSI&lt;25是真正的超卖信号&quot;
      - &quot;假设当前市场处于震荡状态&quot;

    failure_scenarios:
      - &quot;趋势市:价格持续下跌,RSI持续低迷&quot;
      - &quot;负反馈周期:情绪极度悲观时,反弹不来&quot;

    evidence: |
      数据支撑:2年数据,152次交易
      震荡市胜率72%,趋势市胜率38%
      主力跟随率72%,说明策略有效跟随大资金

    monitoring:
      frequency: &quot;每周&quot;
      warning_signals:
        - &quot;连续3周夏普 &lt; 1.0&quot;
        - &quot;主力连续净流出 &gt; 5日&quot;
      action: &quot;考虑暂停或降低仓位&quot;

十四、执行命令

14.1 完整Loop执行

/loop &quot;执行反射理论量化策略自动发现与优化Loop&quot;

14.2 分步执行

/research &quot;分析当前反射指标状态&quot;
/generate &quot;基于[反射阶段]生成[策略类型]策略&quot;
/backtest &quot;对[策略名]执行反射增强回测&quot;
/verify &quot;验证[策略名]是否达到标准&quot;
/optimize &quot;优化[策略名]参数(按反射状态)&quot;
/deploy &quot;部署[策略名]到模拟交易&quot;

14.3 Meta Agent 命令

/meta &quot;查看外层循环状态&quot;
/meta decision &quot;强制要求Meta Agent做决策&quot;
/meta pivot &quot;强制切换方向&quot;
/meta continue &quot;继续当前方向&quot;

14.4 状态管理命令

/state &quot;查看当前Loop状态&quot;
/state resume &quot;从断点继续&quot;
/state reset &quot;重置状态,开始新Loop&quot;
/log &quot;查看实验日志&quot;

14.5 理解相关命令

/understand &quot;查看策略理解摘要&quot;
/report weekly &quot;生成周度理解报告&quot;
/report summary &quot;生成策略库总结&quot;

十五、A股特殊约束

15.1 必须遵守的规则

1. T+1制度:第一天买入,最早第二天才能卖出
2. 涨跌停限制:普通股票±10%,ST股±5%,科创/创业板±20%
3. 最小交易单位:100股
4. 交易时间:9:30-11:30,13:00-15:00

15.2 策略准入标准

ADMISSION_CRITERIA:
  minimum_sharpe: 1.0
  maximum_drawdown: -15%
  minimum_trades: 50
  minimum_data_years: 2
  out_of_sample_ratio: 0.3

REFLEX_CRITERIA:
  main_follow_rate_min: 0.65
  state_adapt_coef_min: 2.0
  divergence_loss_max: -0.10

十六、附录:优化点对照表

16.1 v1.0 vs v2.0 对照表

维度 v1.0(原有) v2.0(优化后) 改进说明
验证器 ❌ 无独立验证 ✅ 独立Verifier Agent Maker-Checker彻底分离
验证规则 ⚠️ 仅模板 ✅ 严格门控+打分 数字说话,不留情面
状态管理 ❌ 无 ✅ state.yaml 支持断点续跑
双层循环 ❌ 无 ✅ Meta Agent外层 打破搜索模式陷阱
停止条件 ❌ 无 ✅ 硬性+软性+放弃 防止无限循环
自动化 ⚠️ 命令模板 ✅ 定时+事件触发 心跳机制
理解保持 ❌ 无 ✅ 强制摘要生成 防止理解债务
记忆层 ⚠️ 仅策略库 ✅ 策略库+日志+报告 经验可积累
maker-checker ⚠️ 弱分离 ✅ 彻底分离 Verifier不看代码
迭代透明 ❌ 无 ✅ 每轮打分记录 失败原因透明
参数优化 ⚠️ 统一参数 ✅ 按状态分别优化 更精细的参数
Meta决策 ❌ 无 ✅ 决策历史记录 可追溯的元认知

16.2 核心新增组件

组件 文件 位置 说明
Verifier Agent verifier_agent.py 内层 独立打分Agent
Meta Agent meta_agent.py 外层 元认知决策
LoopStateManager state_manager.py 状态层 断点续跑
UnderstandingGenerator understanding.py 记忆层 理解摘要
LoopStopCondition stop_condition.py 控制层 停止条件
HeartbeatScheduler heartbeat.py 自动化 定时任务

16.3 优化效果预估

问题 优化前 优化后 提升
重复失败方向 无限重试 3次强制切换 节省70%+token
自说自话打分 Generator自评 Verifier独立评 质量提升
中断后重跑 从零开始 断点续跑 节省100%进度
理解债务 无感知 强制摘要 认知保持
模式陷阱 无法识别 Meta检测+注入 5倍探索效率

16.4 参考来源

  • 索罗斯反射理论
  • Karpathy AutoResearch Loop
  • 《双层自动研究:对自身进行元自动研究》论文
  • Loop Engineering 方法论

本Skill基于索罗斯反射理论和Loop Engineering框架设计(v2.0)
融合了主力资金、情绪指标、背离检测等A股特色量化因子
新增:双层循环、独立验证器、状态管理、理解保持机制

```

常见问题

5 问
答案由本站依据条目字段整理
量化策略自动Loop工程(反射理论增强版 v2)怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_d0deb03a/quant-reflex-loop。安装方式为未标注。装完刷新技能列表或重开客户端。

量化策略自动Loop工程(反射理论增强版 v2)支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

量化策略自动Loop工程(反射理论增强版 v2)权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

量化策略自动Loop工程(反射理论增强版 v2)收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

量化策略自动Loop工程(反射理论增强版 v2)用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。