BOCPD drift_threshold 参数说明

BOCPD drift_threshold 参数说明

概述

drift_threshold 是 BOCPD(Bayesian Online Change Point Detection,贝叶斯在线变点检测)模块中的核心参数,用于定义**"有经济意义的最小漂移"**。

它回答的核心问题是:

每根 K 线的均值收益率 |μ| 要多大,才能被判定为"市场处于趋势中"?

该参数位于动量过滤器 Layer 0(BOCPD 机制检测层),直接影响硬拦截决策。

数学原理

P(trending) 的计算

BOCPD 为每个 run length r 维护一组 Normal-Inverse-Gamma (NIG) 后验参数 (μ_r, κ_r, α_r, β_r)。在此后验下,均值 μ_r 服从 Student-t 分布:

μ_r | data ~ Student-t_{2α_r}(μ̂_r, β_r / (α_r · κ_r))

趋势概率的计算分两步:

第一步:对每个 run length r,计算"真实漂移超出阈值"的概率:

P(trending | r) = P(|μ_r| > δ)
                = 1 - CDF_t(δ; df, μ̂, scale) + CDF_t(-δ; df, μ̂, scale)

其中:

  • δ = drift_threshold
  • df = 2α_r(自由度)
  • scale = sqrt(β_r / (α_r · κ_r))(后验标准差)

第二步:按 run length 后验概率加权求和:

P(trending) = Σ_r P(r | data) × P(trending | r)

P(trending) 超过预设阈值时,BOCPD 判定市场处于趋势机制,触发硬拦截,阻止开仓。

直觉理解

drift_threshold 本质上是一个**"死区"(dead zone)**:

|μ| ≤ δ  →  视为噪声 / 均值回归环境(允许开仓)
|μ| > δ  →  视为趋势驱动(拦截开仓)

当前配置

位置 参数值 说明
_BOCPD.__init__ 默认值 0.0005(0.05%/bar) 类级别默认值
MomentumFilter 实际使用值 0.001(0.1%/bar) 系统运行时生效值

系统实际使用 0.001,即每根 5 分钟 K 线的平均收益率超过 0.1% 才被视为趋势。

经济学含义换算

drift_threshold = 0.001(0.1%/5min bar)为例:

时间粒度 等效漂移率 说明
5 分钟 0.1% 单根 bar 均值漂移
1 小时 ~1.2% 12 根 bar 累计
24 小时 ~28.8% 288 根 bar 累计

这意味着只有出现强烈的单向趋势时 BOCPD 才会触发硬拦截,避免在趋势行情中执行均值回归策略。

调参指南

调大 drift_threshold(如 0.002)

  • 对趋势的判定标准更高,需要更强的漂移才认定为趋势
  • BOCPD 拦截频率降低,更多行情被视为"噪声"
  • 开仓机会增多
  • 风险:趋势行情中误开仓的概率增大

适用场景:高波动币种、BOCPD 误杀过多时

调小 drift_threshold(如 0.0003)

  • 对趋势的判定标准更低,微小漂移即判定为趋势
  • BOCPD 拦截频率升高,更多行情被标记为趋势
  • 开仓机会减少
  • 风险:可能误杀本可盈利的均值回归机会

适用场景:低波动币种、保守风控需求

与其他参数的联动

参数 联动关系
hazard_rate 变点先验概率。hazard 越大,regime 切换越频繁,drift_threshold 的判定在更短的窗口内生效
beta0(NIG 先验方差) 决定后验 scale 的初始值。beta0 越大,初始后验越宽,drift_threshold 在早期数据不足时影响较小
bocpd_trend_threshold P(trending) 的拦截阈值。drift_threshold 决定"什么算趋势",trend_threshold 决定"趋势概率多高才拦截"

代码位置

  • 参数定义:src/trading/momentum_filter.py_BOCPD.__init__(L211)
  • 趋势概率计算:src/trading/momentum_filter.py_BOCPD.trend_probability(L284-313)
  • 系统配置值:src/trading/momentum_filter.pyMomentumFilter.__init__(L597)
  • BOCPD 实例化:src/trading/momentum_filter.pyMomentumFilter._update_buffers(L1229-1232)

Read more

AMI的优越性

世界模型(World Models)的具体例子 如下,我按类型分类,便于理解。每类都附带实际实现、演示效果和应用场景。 1. Yann LeCun / Meta 的 JEPA 系列(最直接对应“世界模型”概念) 这些是 LeCun 主张的非生成式抽象预测世界模型代表。 * I-JEPA(Image JEPA,2023) 输入一张图像,模型把不同区域(context 和 target)编码成抽象表示,然后预测 target 的表示(不在像素级别重建)。 例子:给定一张遮挡了部分物体的图片,模型能预测“被遮挡物体的大致位置和属性”,构建对物体持久性和空间关系的理解。 这是一个“原始世界模型”,能学习物理常识(如物体不会凭空消失)。 * V-JEPA / V-JEPA 2(Video JEPA,

By SHI XIAOLONG

什么是:“世界模型(World Models)”

世界模型(World Models) 是人工智能领域的一个核心概念,尤其在 Yann LeCun 等研究者推动的下一代 AI 架构中占据中心位置。它指的是 AI 系统在内部构建的对现实世界的抽象模拟或内部表示,让机器能够像人类或动物一样“理解”物理世界、预测未来、规划行动。 简单比喻 想象你闭上眼睛也能“看到”房间里的物体会如何移动、碰撞或掉落——这就是你大脑里的世界模型。AI 的世界模型就是类似的“数字孪生”(digital twin)或“内部模拟器”:它不是简单记住数据,而是学习世界的动态、因果关系和物理直觉(如重力、物体持久性、遮挡、因果等)。 为什么需要世界模型? 当前主流的大型语言模型(LLM) 擅长处理文本(统计模式预测),但存在根本局限: * 缺乏对物理世界的真正理解 → 容易“幻觉”、无法可靠规划。 * 样本效率低 → 人类/

By SHI XIAOLONG

K线周期可配置化设计方案

K线周期可配置化设计方案 1. 背景与目标 当前 Beta 套利策略的 K 线周期硬编码为 "1h",分散在多个文件中。需要: 1. 将 K 线周期从 1h 改为 2h 2. 提取为环境变量 BETA_ARB_KLINE_INTERVAL,使其可在 .env 中配置 2. 影响范围分析 2.1 需要修改的文件(共 6 个) 文件 硬编码位置 修改内容 src/trading/config.py BetaArbConfig dataclass 新增 kline_interval 字段,

By SHI XIAOLONG

对于空间环境、“信息/逻辑”(比如代码、结构、表达)秩序追求的心理特征分析

一、为什么是“空间 + 信息”同时强化? 因为你当年面对的是“双重失控”: 1️⃣ 外部世界是脏乱 + 失序的 * 空间被污染 * 行为无边界 * 基本生活秩序崩塌 👉 所以你现在会强烈要求: * 桌面干净 * 房间有序 * 物品可控 这是在修复:“物理世界必须是可控的” 2️⃣ 人的行为和逻辑也是混乱的 * 没有规则 * 没有底线 * 没有理性 👉 所以你现在会特别在意: * 表达是否清晰 * 逻辑是否自洽 * 结构是否优雅 * 代码是否干净 这是在修复:“认知世界必须是合理的” 二、你其实构建了一个“高纯度系统” 你现在的偏好,本质上是: 👉 低噪音 + 高结构 + 强控制感 具体表现就是: * 空间:极简、整洁、可预测 * 信息:清晰、压缩、无冗余 这类人有一个很明显的优势: 👉 处理复杂问题时,

By SHI XIAOLONG