tradeSys 行为规则引擎 MVP 设计方案
张晓龙 / 2026-04-20
tradeSys 行为规则引擎 MVP 设计方案
版本:v1.0
日期:2026-04-14
状态:设计文档
一、行为规则引擎基础
1.1 七大认知偏差回顾
| 认知偏差 | 定义 | 交易场景表现 |
|---|---|---|
| 损失厌恶 (Loss Aversion) | 对损失的敏感度是收益的两倍 | 亏损时不愿止损,盈利时急于落袋 |
| 处置效应 (Disposition Effect) | 过早卖出盈利头寸,过久持有亏损头寸 | 股票涨了急着卖,跌了死扛 |
| FOMO (Fear of Missing Out) | 害怕错过机会的非理性焦虑 | 追涨杀跌,高位接盘 |
| 过度自信 (Overconfidence) | 高估自己的判断能力 | 频繁交易,仓位过重 |
| 锚定效应 (Anchoring) | 过度依赖初始信息 | 买入价成为心理锚点,影响卖出决策 |
| 确认偏误 (Confirmation Bias) | 选择性寻找支持自己观点的证据 | 只看利好消息,忽视风险信号 |
| 后见之明 (Hindsight Bias) | 事后认为事件可预测 | 亏损后说"早就知道",不做复盘 |
1.2 对应的 IF-THEN 规则设计
规则 1:损失厌恶拦截器
IF 当前持仓亏损 > 5% AND 距离上次再平衡 < 7 天
THEN 触发"冷静期"告警,延迟执行 24 小时
规则 2:处置效应检测器
IF 单笔盈利 > 10% AND 持有时间 < 30 天
THEN 标记为"过早止盈嫌疑",要求填写理由
规则 3:FOMO 防火墙
IF 标的 7 日涨幅 > 20% AND 未在计划内
THEN 禁止开仓,发送"追涨风险提示"
规则 4:过度自信监控
IF 月度交易次数 > 计划次数 * 2
THEN 锁定交易权限至月底,强制复盘
规则 5:锚定效应提醒
IF 卖出决策中提及"成本价"或"买入价"
THEN 弹出"去锚定"提示,显示当前估值而非成本
规则 6:确认偏误对冲
IF 连续 3 次交易方向相同(连续买入或卖出)
THEN 强制展示反向观点数据,要求确认
规则 7:后见之明预防
IF 交易亏损 AND 未在 48 小时内提交复盘
THEN 暂停新交易,直至复盘完成
1.3 行为损耗的量化方法
3-4%/年的行为损耗来源分析:
| 损耗来源 | 估计年化损耗 | 计算依据 |
|---|---|---|
| 处置效应 | 1.0-1.5% | Barber & Odean (2000) 实证研究 |
| 过度交易 | 0.5-1.0% | 频繁交易的摩擦成本 |
| FOMO 追涨 | 0.5-1.0% | 高位买入的额外成本 |
| 损失厌恶(不止损) | 0.5-1.0% | 小亏变大亏的累积 |
| 合计 | 2.5-4.5% | 保守估计 3-4% |
量化公式:
行为损耗率 = (实际收益率 - 策略理论收益率) / 策略理论收益率
月度行为评分 = 100 - Σ(违规次数 × 权重)
- 触发规则但遵守:-2 分/次
- 触发规则且违规:-10 分/次
- 未触发规则:0 分
二、MVP 架构设计
2.1 检测层:识别"非计划交易"
核心检测逻辑:
class UnplannedTradeDetector:
def detect(self, trade_intent):
checks = [
self.is_in_rebalance_plan(trade_intent), # 是否在再平衡计划内
self.is_emergency_stop_triggered(trade_intent), # 是否触发紧急止损
self.is_cash_management(trade_intent), # 是否现金管理需求
]
return not any(checks) # 都不是 = 非计划交易
def is_in_rebalance_plan(self, intent):
# 检查是否在月度/季度再平衡清单中
pass
def is_emergency_stop_triggered(self, intent):
# 检查是否触发预设止损线(如 -10%)
pass
非计划交易特征:
- 不在预设的再平衡时间表内
- 标的不在当前持仓或目标配置中
- 交易理由包含情绪关键词(“忍不住”、“感觉要涨”、“怕错过”)
- 短时间内多次反向操作
2.2 干预层:告警、锁定、延迟执行
三级干预机制:
| 级别 | 触发条件 | 干预措施 |
|---|---|---|
| L1 提醒 | 触发任意规则 | 弹窗/消息提醒,记录日志 |
| L2 延迟 | 触发 2+ 规则或高风险操作 | 强制 24h 冷静期,需二次确认 |
| L3 锁定 | 月度违规 > 3 次或单次重大违规 | 暂停交易权限,需人工解锁 |
延迟执行实现:
class DelayedExecution:
def __init__(self):
self.pending_orders = []
def schedule(self, order, delay_hours=24):
execute_at = now() + timedelta(hours=delay_hours)
self.pending_orders.append({
'order': order,
'execute_at': execute_at,
'reason': 'cooling_off_period'
})
# 发送延迟确认通知
self.notify(f"订单已延迟至 {execute_at} 执行")
def check_and_execute(self):
for pending in self.pending_orders:
if now() >= pending['execute_at']:
if self.confirm_intent(pending['order']):
self.execute(pending['order'])
2.3 复盘层:交易日志与行为评分
交易日志结构:
CREATE TABLE trade_logs (
id INTEGER PRIMARY KEY,
timestamp DATETIME,
symbol TEXT,
action TEXT, -- BUY/SELL
quantity REAL,
price REAL,
trigger_type TEXT, -- PLANNED / DETECTED_BEHAVIORAL / EMERGENCY
rules_triggered JSON, -- ["FOMO", "LOSS_AVERSION"]
decision_rationale TEXT,
outcome_7d REAL, -- 7天后收益率
outcome_30d REAL -- 30天后收益率
);
行为评分仪表盘:
- 月度行为得分(0-100)
- 规则触发热力图(按偏差类型)
- 遵守率趋势(合规交易 / 总交易)
- 行为损耗估算(vs 理论收益)
三、技术实现方案
3.1 与现有再平衡引擎的集成
集成架构:
┌─────────────────────────────────────────────────────────┐
│ tradeSys Core │
├─────────────┬─────────────────────┬─────────────────────┤
│ 再平衡引擎 │ 行为规则引擎 │ 执行层 │
│ Rebalance │ Behavior Engine │ Execution │
├─────────────┼─────────────────────┼─────────────────────┤
│ • 计划生成 │ • 意图检测 │ • 订单路由 │
│ • 调仓计算 │ • 规则匹配 │ • 成交确认 │
│ • 时间表 │ • 干预决策 │ • 状态同步 │
└──────┬──────┴──────────┬──────────┴──────────┬──────────┘
│ │ │
└─────────────────┴─────────────────────┘
│
┌──────────▼──────────┐
│ 统一数据层 │
│ (DuckDB/SQLite) │
└─────────────────────┘
集成点:
- 前置拦截:所有交易意图先经过行为规则引擎
- 计划标记:再平衡引擎生成的交易自动标记为
PLANNED - 结果回调:执行层将成交结果回写至行为引擎用于复盘
3.2 数据存储选型:DuckDB vs SQLite
| 维度 | DuckDB | SQLite | 推荐 |
|---|---|---|---|
| 分析查询 | 优秀(列式存储) | 一般 | DuckDB |
| 写入性能 | 好 | 优秀 | 持平 |
| 部署复杂度 | 低(单文件) | 极低 | SQLite |
| 时间序列分析 | 内置支持 | 需自行实现 | DuckDB |
| 生态成熟度 | 新兴 | 极成熟 | SQLite |
| 行为分析需求 | 非常适合 | 够用 | DuckDB |
MVP 选择:DuckDB
- 理由:行为分析需要大量聚合查询(月度统计、趋势分析)
- 备选:如部署环境受限,可降级至 SQLite
3.3 告警渠道
优先级配置:
| 场景 | 飞书 | 邮件 | 短信 |
|---|---|---|---|
| L1 提醒 | ✓ | - | - |
| L2 延迟 | ✓ | ✓ | - |
| L3 锁定 | ✓ | ✓ | ✓ |
| 月度报告 | ✓ | ✓ | - |
飞书机器人消息模板:
{
"msg_type": "interactive",
"card": {
"header": {
"title": {"tag": "plain_text", "content": "🚨 行为规则触发"},
"template": "red"
},
"elements": [
{"tag": "div", "text": {"tag": "lark_md", "content": "**规则**: FOMO 防火墙\n**标的**: NVDA\n**建议**: 该标的 7 日涨幅 25%,不在计划内,建议暂缓买入"}},
{"tag": "action", "actions": [
{"tag": "button", "text": {"tag": "plain_text", "content": "确认违规,继续执行"}, "type": "danger"},
{"tag": "button", "text": {"tag": "plain_text", "content": "接受建议,取消交易"}, "type": "primary"}
]}
]
}
}
四、实盘验证计划
4.1 验证周期
总周期:2-3 年(24-36 个月)
理由:
- 覆盖完整牛熊周期(A股平均周期 3-5 年)
- 足够样本量验证规则有效性(至少 200+ 次交易)
- 行为改变需要长期观察(习惯养成需 6-12 个月)
4.2 关键指标
| 指标 | 定义 | 目标值 |
|---|---|---|
| 规则触发次数 | 每月规则触发总次数 | 记录基线,观察趋势 |
| 遵守率 | 触发后按规则执行次数 / 总触发次数 | > 80% |
| 行为损耗变化 | (Year_N 实际收益 - 理论收益) vs Year_1 | 降低 50%+ |
| 干预有效性 | 延迟/取消的交易 30 天后收益为负的比例 | > 60% |
| 系统可用性 | 引擎正常运行时间占比 | > 99% |
4.3 里程碑
| 时间点 | 里程碑 | 验收标准 |
|---|---|---|
| 3 个月 | 系统稳定运行 | 无重大 bug,数据完整记录,告警正常触发 |
| 6 个月 | 行为基线建立 | 完成 50+ 次交易,规则触发模式清晰,月度报告自动化 |
| 1 年 | 初步有效性验证 | 遵守率 > 70%,行为损耗呈下降趋势 |
| 2 年 | 中期评估 | 遵守率 > 80%,行为损耗降低 30%+,决定是否扩大规则覆盖 |
| 3 年 | 最终评估 | 完整周期数据,ROI 可量化,形成标准化规则引擎 |
五、独到判断
5.1 行为规则引擎的实际价值
判断:价值被严重低估,是散户量化投资的"隐形护城河"
- 不对称收益:8-12 小时开发成本 vs 1-2% 年化收益提升,ROI 极高
- 复利效应:每年 1-2% 的差异,20 年复利差距可达 20-40%
- 非竞争性优势:不像策略因子会被市场套利,行为优势是个人内在
- 防御属性:在极端行情(泡沫/恐慌)中价值最大,正好是收益差距最大的时期
5.2 是否值得投入工程资源
判断:值得,但要有正确预期
值得的原因:
- 开发成本低(MVP 可控制在 20 小时内)
- 维护成本低(规则相对静态,无需频繁调优)
- 与策略引擎正交(不影响原有策略逻辑)
正确预期:
- 不是"圣杯",不能替代策略本身
- 效果显现慢(6-12 个月才能看到统计显著性)
- 需要配合纪律执行(规则再完善,绕过就没用)
5.3 对 tradeSys 实盘的含义
核心意义:从"策略执行"升级为"策略纪律"
当前 tradeSys 解决了"做什么"(资产配置、择时信号),行为规则引擎解决"怎么做对"(避免执行层面的自我破坏)。
长期愿景:
- 第一阶段(MVP):被动拦截明显违规行为
- 第二阶段:主动预测行为风险(如市场高波动期自动收紧规则)
- 第三阶段:个性化规则(基于个人历史行为模式定制)
六、实操建议
6.1 MVP 开发优先级
P0(核心功能,必须实现)
| 功能 | 工作量 | 说明 |
|---|---|---|
| 非计划交易检测 | 4h | 与再平衡计划对比 |
| 基础规则引擎(3条) | 4h | FOMO、处置效应、损失厌恶 |
| 交易日志存储 | 2h | DuckDB 基础表 |
| 飞书告警通知 | 2h | 基础消息推送 |
| P0 合计 | 12h |
P1(增强功能,建议实现)
| 功能 | 工作量 | 说明 |
|---|---|---|
| 延迟执行机制 | 3h | 24h 冷静期实现 |
| 行为评分仪表盘 | 4h | 月度报告自动化 |
| 规则 4-7 实现 | 4h | 过度自信、锚定、确认偏误、后见之明 |
| 复盘报告生成 | 2h | 亏损交易自动提醒复盘 |
| P1 合计 | 13h |
P2(优化功能,可延后)
| 功能 | 工作量 | 说明 |
|---|---|---|
| 邮件/短信告警 | 2h | 多渠道通知 |
| 交互式确认 UI | 4h | 飞书卡片按钮交互 |
| 行为预测模型 | 8h | 基于历史数据预测违规风险 |
| 个性化规则调整 | 4h | 根据个人行为模式动态调整阈值 |
| P2 合计 | 18h |
总工作量:P0(12h) + P1(13h) + P2(18h) = 43h
6.2 预期工作量
| 阶段 | 时间 | 交付物 |
|---|---|---|
| MVP v0.1 | 12h(2天) | P0 功能,可拦截基本违规行为 |
| MVP v0.5 | 25h(1周) | P0+P1,完整规则覆盖,月度报告 |
| MVP v1.0 | 43h(2周) | P0+P1+P2,生产级可用 |
6.3 风险与应对
| 风险 | 可能性 | 影响 | 应对策略 |
|---|---|---|---|
| 规则误报 | 中 | 中 | 设置白名单机制,计划内交易自动放行;设置阈值可调参数 |
| 绕过系统 | 高 | 高 | 心理层面:明确规则意义;技术层面:延迟执行增加绕过成本 |
| 效果不明显 | 中 | 高 | 设定清晰的成功标准(遵守率>80%);3个月无改善则复盘调整 |
| 维护负担 | 低 | 低 | 规则尽量静态,避免频繁调优;使用声明式配置而非硬编码 |
| 数据丢失 | 低 | 高 | 定期备份 DuckDB 文件;关键日志双写(本地+云端) |
附录:快速启动检查清单
开发前准备
- 确认再平衡引擎输出格式(计划交易清单)
- 申请飞书机器人 webhook
- 安装 DuckDB Python 客户端
开发阶段
- 实现非计划交易检测逻辑
- 实现 3 条核心规则(FOMO、处置效应、损失厌恶)
- 集成飞书告警
- 编写单元测试
上线前检查
- 模拟交易测试规则触发
- 验证告警消息正常送达
- 确认数据写入正确
上线后监控
- 每周检查规则触发日志
- 每月生成行为评分报告
- 每季度评估规则有效性
文档结束
