Tech Whims

[40] 行为纪律规则引擎设计

2026-03-23


风控与心理 · 共 10 篇

tradeSys #40: 行为纪律规则引擎 — 从认知偏差到可编码规则

研究目标:将 #23 交易心理的 7 大认知偏差、#26 回撤管理的分级响应、#36 regime detection 信号,转化为一个可编码、可 cron 调度、可自动执行的行为纪律规则引擎。 研究日期:2026-03-23 前置依赖:#23 交易心理 | #26 回撤管理 | #36 Regime Detection | Plan E3-AW 账户参数:$50K 起步,季度再平衡,四标的(GLD/DBMF/sUSDe/BIL)


核心论点

行为偏差是散户投资者最大的单一收益杀手——Dalbar QAIB 30年数据显示,散户因行为问题年均少赚 3-4%,远超管理费(0.5%)和交易成本(0.3%)的总和。对于 Plan E3-AW 这样年化预期 ~6% 的策略,行为损耗如果达到 3%,等于砍掉一半收益

本研究的核心主张:行为纪律不能靠意志力,必须靠代码。将认知偏差的触发条件量化为 IF-THEN 规则,由 cron 自动检测和干预,把人类最薄弱的环节(情绪决策)交给最擅长执行的角色(程序)。


1. 行为偏差的量化触发条件

1.1 七大偏差 → 七组 IF-THEN 规则

基于 #23 交易心理研究中识别的 7 大认知偏差,转化为可检测信号:

#偏差量化触发条件自动干预动作数据源
1损失厌恶组合单日跌幅 >2% 后 24h 内出现非计划卖出信号🔒 锁定交易 48h + 推送"计划内吗?“提醒账户API + 交易日志
2处置效应亏损持仓持有 >90 天且无止损触发,同时盈利持仓 <30 天即卖出推送"你在卖赢家、留输家"警告 + 强制审视止损线持仓记录
3过度交易月度 turnover >15%(Plan E3-AW 正常值 <3%)🔒 冻结非计划交易至月末 + 发送交易频率报告交易记录
4近因偏差组合连涨 >3 周后出现加仓信号,或连跌 >2 周后出现减仓信号推送"你在追涨/杀跌"警告 + 强制等待 72h 冷静期价格数据
5锚定效应再平衡时偏离目标权重执行(如应调到 25% 但只调到 22%“因为买入价更高”)强制显示目标配比 vs 实际配比差异,要求确认偏离理由再平衡执行记录
6过度自信连续 3 次交易盈利后仓位扩大 >20%(vs 计划仓位)推送"胜率偏差"警告:显示历史胜率 vs 近期胜率交易记录
7从众行为交易指令与社交媒体热度(Twitter/Reddit 提及量)相关性 >0.6推送"你在跟风吗?"+ 48h 冷静期社媒API + 交易时间戳

反直觉发现 #1过度交易(#3)是 Plan E3-AW 最大的行为风险,而不是恐慌卖出。原因:季度再平衡策略本应极少交易(年 4 次),但散户常因"闲着焦虑"而增加不必要的调整。Barber & Odean (2000) 发现高频交易者年化收益比低频者少 6.5%

1.2 数据源与信号采集架构

[IBKR API] ──→ 持仓/交易数据
[Stooq/Yahoo] ──→ 价格数据(日频)
[交易日志 JSON] ──→ 计划 vs 实际执行对比
[VIX/CTS] ──→ Regime 信号(来自 #36)
        │
        ▼
  [信号采集层] ──→ 每日 cron 扫描
        │
        ▼
  [规则引擎] ──→ IF-THEN 匹配
        │
        ▼
  [动作层] ──→ 告警/锁定/报告

最简实现:一个 Python 脚本 + DuckDB 本地数据库 + cron 每日运行。无需复杂基础设施。


2. 规则引擎架构设计

2.1 整体架构:事件驱动 + 规则匹配 + 动作执行

三层设计:

  1. 感知层(Sensor):每日收集价格、持仓、交易记录
  2. 决策层(Rules Engine):用规则库匹配当前状态
  3. 执行层(Actuator):发送告警、锁定交易、生成报告

2.2 规则库数据结构

# rules.py - 行为纪律规则库
RULES = [
    {
        "id": "R001_loss_aversion",
        "name": "损失厌恶检测",
        "trigger": {
            "condition": "portfolio_daily_return < -0.02 AND unplanned_sell_signal_in_24h",
            "data_sources": ["ibkr_positions", "trade_log"]
        },
        "action": {
            "type": "lock_and_alert",
            "lock_duration_hours": 48,
            "message": "⚠️ 组合今日跌幅 {drop}%,你在 24h 内发出了卖出信号。这在你的计划内吗?交易已锁定 48h。"
        },
        "priority": 1,  # 1=最高
        "cooldown_days": 7  # 触发后 7 天不重复告警
    },
    {
        "id": "R003_overtrading",
        "name": "过度交易检测",
        "trigger": {
            "condition": "monthly_turnover > 0.15",
            "data_sources": ["trade_log"]
        },
        "action": {
            "type": "freeze_and_report",
            "freeze_until": "month_end",
            "message": "🚫 本月 turnover {turnover}%,远超正常值 3%。非计划交易已冻结至月末。"
        },
        "priority": 1,
        "cooldown_days": 30
    },
    {
        "id": "R004_recency_bias",
        "name": "近因偏差检测",
        "trigger": {
            "condition": "(streak_up_weeks >= 3 AND buy_signal) OR (streak_down_weeks >= 2 AND sell_signal)",
            "data_sources": ["price_data", "trade_log"]
        },
        "action": {
            "type": "cooling_period",
            "wait_hours": 72,
            "message": "🧊 组合连涨/跌 {weeks} 周后你想操作——72h 冷静期已启动。"
        },
        "priority": 2,
        "cooldown_days": 14
    }
]

2.3 与 cron 调度的整合

# crontab 配置
# 每日 21:00 UTC (北京时间 05:00) 运行行为检测
0 21 * * * cd ~/tradeSys && python3 behavioral_engine.py --mode=daily_scan

# 每月 1 日生成月度行为报告
0 22 1 * * cd ~/tradeSys && python3 behavioral_engine.py --mode=monthly_report

# 每季度末触发再平衡前检查
0 20 28-31 3,6,9,12 * cd ~/tradeSys && python3 behavioral_engine.py --mode=pre_rebalance_check

2.4 规则优先级与冲突解决

当多条规则同时触发时:

  1. 安全规则优先:锁定/冻结类(R001/R003)> 警告类(R002/R004)> 信息类(R005/R006)
  2. 最严格动作生效:如同时触发 48h 锁定和 72h 冷静期,取 72h
  3. 冲突日志:记录所有被覆盖的规则,供月度复盘分析

3. 交易日志与复盘框架

3.1 每次交易必须记录的字段

{
    "timestamp": "2026-03-23T15:30:00Z",
    "asset": "GLD",
    "action": "sell",
    "quantity": 10,
    "price": 245.30,
    "planned": true,
    "plan_reference": "Q1_rebalance",
    "pre_trade_emotion": "neutral",  // calm/anxious/excited/fearful
    "trigger_source": "rule_engine",  // rule_engine/manual/external_signal
    "market_context": {
        "vix": 18.5,
        "regime": "low_vol_trend",
        "portfolio_dd": -1.2
    },
    "post_trade_note": ""
}

关键字段说明

3.2 月度复盘模板

## 月度行为复盘 — YYYY-MM

### 交易统计
- 总交易次数: X(计划内: Y,计划外: Z)
- 月度 turnover: X%
- 规则触发次数: X(锁定: Y,警告: Z,信息: W)

### 行为偏差检测
- [ ] 损失厌恶事件: 0
- [ ] 过度交易: 否(turnover < 3%)
- [ ] 追涨杀跌: 0 
- [ ] 非计划交易: 0 

### 情绪分布
- calm: X% | anxious: X% | excited: X% | fearful: X%

### 本月教训
自由文本记录具体的行为发现

### 下月计划调整
基于本月教训调整规则参数或新增规则

3.3 季度深度复盘

季度复盘增加:

  1. 规则有效性评估:每条规则的触发次数、干预成功率(干预后是否避免了损失)
  2. 行为趋势分析:非计划交易的月度趋势(应逐月下降)
  3. 与组合表现的相关性:行为评分 vs 超额收益(或欠额)

4. 实证数据:行为干预对散户收益的量化影响

4.1 Dalbar QAIB 研究(1984-2023, 30 年跨度)

Dalbar 的 Quantitative Analysis of Investor Behavior 是该领域最权威的长期研究:

指标S&P 500 基准平均散户股票基金差距(行为损耗)
30 年年化收益10.2%6.8%-3.4%/年
20 年年化收益9.5%5.5%-4.0%/年
10 年年化收益12.0%8.0%-4.0%/年

核心发现:散户在 30 年间因行为问题累计损失了 65% 的潜在财富。如果 $50K 按 10.2% 复利 30 年 = $900K;按 6.8% = $360K。差额 $540K 全部归因于行为损耗。

4.2 Barber & Odean 系列研究

Barber & Odean (2000, Journal of Finance) “Trading Is Hazardous to Your Wealth”:

Barber & Odean (2001) “Boys Will Be Boys”:

反直觉发现 #2交易越少,赚得越多——这不是因为"买入持有"是最优策略,而是因为大多数额外交易的期望收益为负。对 Plan E3-AW,年 4 次季度再平衡已足够,任何额外交易大概率是在损害收益。

4.3 Vanguard 行为指导价值量化

Kinniry et al. (2019, Vanguard) “Putting a Value on Your Value: Quantifying Vanguard Advisor’s Alpha”:

Vanguard 量化了财务顾问通过行为指导创造的年化价值:

干预类型年化增值
行为指导(防止恐慌卖出/追涨)1.50%
再平衡纪律0.35%
税务优化0.00-0.75%
资产配置0.00-0.75%
总计约 3%

关键发现:行为指导贡献了 Vanguard 估算的顾问价值的 50%。而本研究的规则引擎本质上就是一个自动化的行为指导系统——用代码替代人类顾问的角色。

4.4 综合:行为干预的预期收益幅度

基于以上实证,行为纪律规则引擎对 Plan E3-AW 的预期增值:

这意味着行为规则引擎可能是 tradeSys 投入产出比最高的模块——零资金成本,年化增值 1-3%。


5. 与现有研究的整合

5.1 回撤分级响应的规则化(来自 #26)

回撤级别触发条件自动动作
绿灯MaxDD < 3%正常运行,无干预
黄灯3% ≤ MaxDD < 7%推送提醒 + 禁止加仓 + 72h 冷静期
红灯MaxDD ≥ 7%🔒 全面冻结非再平衡交易 + 发送详细回撤分析报告 + 强制等待至下一再平衡日

5.2 Regime 信号的规则化(来自 #36)

Regime 状态VIX + CTS 信号配比调整规则
低波动趋势VIX < 20 & CTS > 0.5维持目标配比,正常再平衡
高波动趋势VIX > 25 & CTS > 0.5GLD +5pp, DBMF +5pp, BIL -10pp
高波动震荡VIX > 25 & CTS < 0.3BIL +10pp, GLD -5pp, DBMF -5pp
低波动震荡VIX < 20 & CTS < 0.3维持目标配比,延长再平衡间隔至半年度

5.3 统一状态机

[每日 cron 扫描]
    │
    ├─→ 检查回撤级别(绿/黄/红)
    │       │
    │       └─→ 红灯 → 冻结所有非计划交易
    │
    ├─→ 检查 Regime 状态
    │       │
    │       └─→ 高波动趋势 → 预设配比调整(下次再平衡时生效)
    │
    ├─→ 检查 7 条行为规则
    │       │
    │       └─→ 触发 → 执行对应干预(锁定/警告/冷静期)
    │
    └─→ 生成每日状态摘要(一行)
            │
            └─→ 写入 tradeSys/logs/daily_status.jsonl

6. 部署方案与 MVP 路线图

MVP(1-2 天可完成)

  1. 交易日志 JSON 模板 — 手动记录每笔交易(5 分钟/笔)
  2. 月度复盘 Markdown 模板 — 每月 1 日填写(30 分钟)
  3. 一个 Python 脚本:读取交易日志 → 检测过度交易(turnover > 15%)→ 发送告警

V1.0(1-2 周)

  1. 接入 IBKR API 自动获取持仓/交易数据
  2. 实现全部 7 条行为规则的自动检测
  3. cron 每日扫描 + 告警推送(通过 OpenClaw 消息)

V2.0(1-2 月)

  1. 整合 #26 回撤分级 + #36 Regime 信号
  2. 自动生成月度/季度行为报告
  3. 交易锁定功能(通过 IBKR API 撤销非计划订单)

检查线自检

事实来源清单

  1. Dalbar QAIB (2023) — 30 年散户行为损耗数据
  2. Barber & Odean (2000) “Trading Is Hazardous to Your Wealth”, Journal of Finance
  3. Barber & Odean (2001) “Boys Will Be Boys”, Quarterly Journal of Economics
  4. Kinniry et al. (2019) “Putting a Value on Your Value”, Vanguard Research
  5. #23 交易心理研究 — 7 大认知偏差及量化损耗
  6. #26 回撤管理 — 分级响应框架
  7. #36 Regime Detection — VIX+CTS 双信号系统

独到见解摘要

  1. 行为损耗(3-4%/年)是 Plan E3-AW 预期收益(6%)的一半以上——行为纪律是投入产出比最高的模块
  2. 过度交易是 Plan E3-AW 最大行为风险(不是恐慌卖出)——季度再平衡策略最怕"闲着焦虑”
  3. 行为规则引擎 = 自动化财务顾问——用代码实现 Vanguard 估算的年化 1.5% 行为指导价值
  4. 交易越少赚越多——Barber & Odean 的 7.1% 差距证明额外交易期望收益为负
  5. MVP 只需 1 个 Python 脚本 + 交易日志模板——零基础设施成本,即刻可用