Agent预测系统 · 专门文档
Agent预测系统是四因子决策框架的智能补充,当用户未提供预测时,系统基于用户"动量为先,反直觉"的交易风格自动生成预测。
场景:S5 · 流水线 · 共 5 幕 · 幕题与副句逐字取自本文小标题与首句
Agent预测系统 · 专门文档
系统概述
Agent预测系统是四因子决策框架的智能补充,当用户未提供预测时,系统基于用户"动量为先,反直觉"的交易风格自动生成预测。
触发条件
用户未预测场景
- 用户连续多日未更新日度预测
- 盘前简报中未找到有效预测输入
- 用户处于观望状态,等待左侧触发点
系统自动触发
# 检查用户预测状态
if [ -z "$user_prediction" ] || [[ "$user_prediction" == *"未输入预测"* ]]; then
# 启动Agent预测系统
generate_agent_prediction
fi预测逻辑
1. 动量数据采集
# 获取近5日黄金序列
gold_sequence="4355,4378,4389,4362,4369"
gold_prices=(${gold_sequence//,/})
# 计算日度变化
day1=${gold_prices[0]} # 4355
day2=${gold_prices[1]} # 4378
day3=${gold_prices[2]} # 4389
day4=${gold_prices[3]} # 4362
day5=${gold_prices[4]} # 4369
# 计算百分比变化
trend1=$(echo "scale=2; ($day2 - $day1) / $day1 * 100" | bc) # +0.53%
trend2=$(echo "scale=2; ($day3 - $day2) / $day2 * 100" | bc) # +0.25%
trend3=$(echo "scale=2; ($day4 - $day3) / $day3 * 100" | bc) # +0.48%
trend4=$(echo "scale=2; ($day5 - $day4) / $day4 * 100" | bc) # -0.62%2. 动量状态判断
# 动量方向判断
if (( $(echo "$trend4 > 0.5" | bc -l) )); then
momentum_direction="positive"
momentum_strength="strong"
elif (( $(echo "$trend4 < -0.5" | bc -l) )); then
momentum_direction="negative"
momentum_strength="strong"
else
momentum_direction="neutral"
momentum_strength="weak"
fi3. 反直觉预测生成
基于用户"动量为先,反直觉"风格:
| 动量方向 | 动量强度 | Agent预测 | 传统思维 | 反直觉逻辑 |
|---|---|---|---|---|
| positive | strong | 谨慎观望 | 追涨 | 强涨后回调风险 |
| positive | weak | 等待突破 | 小幅追涨 | 动量不足,等待确认 |
| negative | strong | 左侧机会 | 杀跌 | 跌透后反弹机会 |
| negative | weak | 等待突破 | 观望 | 跌势未尽,等待确认 |
| neutral | any | 等待突破 | 随机操作 | 震荡时等待方向选择 |
预测示例
场景1:强上涨后的谨慎观望
近5日序列:4,300 → 4,320 → 4,340 → 4,360 → 4,380
日度变化:+0.47% → +0.62% → +0.58% → +0.56%
动量状态:positive + strong
Agent预测:日度:谨慎观望
逻辑:连续强涨后回调风险增加,符合反直觉风格场景2:下跌后的左侧机会
近5日序列:4,400 → 4,380 → 4,360 → 4,340 → 4,320
日度变化:-0.45% → -0.46% → -0.46% → -0.58%
动量状态:negative + strong
Agent预测:日度:左侧机会
逻辑:深度下跌后反弹概率增加,符合左侧思维场景3:震荡等待突破
近5日序列:4,350 → 4,365 → 4,358 → 4,372 → 4,369
日度变化:+0.34% → -0.16% → +0.32% → -0.07%
动量状态:neutral + weak
Agent预测:日度:等待突破
逻辑:震荡无方向,等待明确信号,符合左侧思维验证与优化
1. 预测准确性评估(v2 · 可证伪版)
⚠ 本节于 2026-09-12 重写。旧版 bash 实现有两个致命缺陷,已废弃:
1. 语法非法:
[[ "$x" =~ "震荡"|"小幅" ]]在 bash 中不构成正则交替——引号内的模式按字面量匹配,震荡"|"小幅这种串永远不可能出现在结果里,函数恒返回"错误"。2. 判据不可证伪(更严重):"谨慎观望" 只要结果含"震荡/小幅"就算对,"等待突破" 只要结果含"方向"就算对——而"方向"一词几乎出现在每句描述里。这类判据在任何行情下都能自圆其说,其 100% 命中率不含任何模型信息量。
1.1 核心原则:预测必须落到数字上
禁止用"震荡/反弹/突破"等文字描述作为验证对象。所有预测必须收敛为可比较的数值区间:
| 预测标签 | 可证伪定义(次日 LBMA PM Fix 日涨跌) | 判证实 | 判证伪 |
|---|---|---|---|
| 观望 / 谨慎观望 / 等待突破 | 预期涨跌幅落在 ±0.30% 以内 | |Δ| ≤ 0.30% | |Δ| > 0.30% |
| 左侧机会(看涨) | 预期次日收涨且涨幅 > +0.30% | Δ > +0.30% | Δ ≤ +0.30% |
| 规避风险(看跌) | 预期次日收跌且跌幅 > 0.30% | Δ < -0.30% | Δ ≥ -0.30% |
| 未给出方向与区间 | —— | 记 未覆盖 | 记 未覆盖 |
±0.30%为默认区间[待验证]:该阈值应按 60 日日涨跌分布的 ~20 分位标定,并用 3 个月滚动样本外验证后固定。未标定前不得作为模型有效性证据。未覆盖不进任何分母:未给方向的预测既不算证实也不算证伪,单独统计为"覆盖率"指标。
1.2 参考实现(Python,可直接运行)
# validate_prediction.py — 可证伪的日度预测判定
# 用法:python3 validate_prediction.py <预测标签> <前收> <今收>
import sys
NEUTRAL_BAND = 0.0030 # ±0.30%,[待验证] 需按 60 日分布 20 分位重标
def day_change(prev: float, today: float) -> float:
if prev is None or today is None or prev == 0:
raise ValueError("缺数据:不得用 0 或前值填充")
return (today - prev) / prev
def validate(label: str, prev: float, today: float) -> str:
d = day_change(prev, today)
if any(k in label for k in ("观望", "等待", "谨慎")):
return "证实" if abs(d) <= NEUTRAL_BAND else "证伪"
if any(k in label for k in ("左侧", "看涨", "反弹", "做多")):
return "证实" if d > NEUTRAL_BAND else "证伪"
if any(k in label for k in ("看跌", "规避", "做空", "减仓")):
return "证实" if d < -NEUTRAL_BAND else "证伪"
return "未覆盖" # 没给方向也没给区间 → 不进分母
if __name__ == "__main__":
label, prev, today = sys.argv[1], float(sys.argv[2]), float(sys.argv[3])
d = day_change(prev, today)
print(f"预测={label} | 日涨跌={d*100:+.2f}% | 判定={validate(label, prev, today)}")自检(可直接跑,验证实现正确):
$ python3 validate_prediction.py "观望中" 4353.15 4382.25 # 09-01→09-02 +0.67% → 证伪
$ python3 validate_prediction.py "观望中" 4568.95 4562.75 # 08-27→08-28 −0.14% → 证实
$ python3 validate_prediction.py "结构性新因子重塑" 4405.80 4420.0 # 未给方向 → 未覆盖
$ python3 validate_prediction.py "观望中" 4562.75 4353.15 # 09-01 −4.59% → 证伪
# 脚本实际位置:scripts/validate_prediction.py1.3 汇总口径
方向覆盖率 = 有方向预测条数 ÷ 总预测条数
可证伪命中率 = 证实 ÷ (证实 + 证伪) # 未覆盖不进分母
基准率(对照) = P(|日涨跌| ≤ 0.30%) # "什么都不预测、只说小幅波动"的命中率必须同时报告命中率与基准率。若命中率 ≤ 基准率,则该预测不具备信息量,不得作为模型有效性依据。
参考:2026-08-17→09-08 实测窗口内,基准率 P(|Δ|<0.30%) = 31%,P(|Δ|<0.50%) = 44%;旧口径给出 100%。
2. 动量阈值优化
# 当前阈值设置
STRONG_THRESHOLD=0.5 # 强动量阈值
WEAK_THRESHOLD=0.2 # 弱动量阈值
# 历史验证优化
# 根据历史准确率调整阈值
if [ "$accuracy_rate" -lt 70 ]; then
# 调整阈值
STRONG_THRESHOLD=$(echo "scale=2; $STRONG_THRESHOLD + 0.1" | bc)
fi3. 用户风格适配
未实现
[待验证]。此节此前是一个空的analyze_user_style()函数壳,无输入、无输出、无调用方,留着会误导为已有自适应能力。真实需求(若将来实现):按用户历史预测的方向命中率 / 幅度命中率 / Brier Score 分档,反向调整 Agent 预测的激进度。实现前不得声称系统具备风格自适应。
输出格式
Agent预测报告
## Agent预测分析
### 动量数据
- 近5日序列:4,355 → 4,378 → 4,389 → 4,362 → 4,369
- 日度变化:+0.53% → +0.25% → +0.48% → -0.62% → +0.16%
- 动量方向:neutral(震荡)
- 动量强度:weak(弱)
### 预测逻辑
基于用户"动量为先,反直觉"风格:
- 震荡期:等待突破信号
- 弱动量:不追涨杀跌
- 左侧思维:等待更好机会
### Agent预测
**日度:等待突破 → 转化为区间:预期次日涨跌幅落在 ±0.30% 以内**
### 验证标准(可证伪)
- 证实:次日 LBMA PM Fix 日涨跌 `|Δ| ≤ 0.30%`
- 证伪:`|Δ| > 0.30%`
- 对照基准率:本窗口 P(|Δ|≤0.30%) ≈ 31%;命中率若不高于此值,本预测无信息量
- **禁止**使用"震荡行情持续或出现突破 → 算准确"这类任何行情下都成立的表述能力边界(替代旧版“系统优势”宣称)
1. 当前可用
- 可在手动复盘中基于真实 LBMA PM 序列生成候选预测格式。
- 可将候选预测翻译为数值区间和证伪条件。
- 可把缺失数据、未覆盖预测和待验证参数明确标出。
2. 当前未实现或未验证
- 没有自动预测发布链;自动化脚本已停用。
- 没有经过样本外验收的用户风格自适应。
- “反直觉”“左侧”是研究偏好,不是已验证的风险降低能力。
- 动量信号不等于收益、胜率或低风险保证。
3. 恢复性能评估的条件
- 结构化预测日志在结果发生前追加落盘;
- 与中性、简单动量和随机基准比较;
- 报告覆盖率、区间命中、Brier/校准、置信区间和成本;
- 完成预先登记的样本外验收后,才可使用“有效/有信息量”等表述。
部署配置
状态属实说明:自动化脚本已停用(现行无自动生成流程)。Agent 预测逻辑供手动复盘时参考——当用户未提供预测时,Agent 基于动量分析生成预测,并必须按 §1.1 落到数值区间。
若用户未在盘前给出预测:
1. Agent 取近 5 个真实交易日 LBMA PM Fix 收盘(缺值不补、不插值)
2. 按 [[框架/数据口径定义#五、L1 动量判定的优先级(消除自相矛盾)|L1 强度优先]] 判定动量状态
3. 按下方"反直觉映射表"给出方向标签
4. 【强制】把方向标签翻译为数值区间(±0.30% / >+0.30% / <-0.30%),否则记为"未覆盖"
5. 写入当日复盘"Agent预测"字段,含区间与证伪条件不再提供
generate_agent_prediction之类的占位调用——此前该函数从未实现,留着会让人误以为存在自动化流程。
日志记录
# 记录Agent预测过程
log "Agent预测启动"
log "动量分析:$momentum_direction $momentum_strength"
log "预测结果:$agent_prediction"验证记录
# 记录预测准确性
echo "$date,$prediction,$actual,$accuracy" >> agent_prediction_history.csv版本历史
- v1.0(2026-08-16):初始版本,基础动量分析和反直觉预测
- v1.1(计划):增加用户风格适配和历史优化
- v1.2(计划):增加多时间框架分析
*最后更新:2026-08-16*