dsh-bayes-predict:用贝叶斯定理在 DSH 里估计个股上涨概率

前言

在 DSH(DeepSeek Harness)里让 agent 分析一只股票,通常只能得到一段定性描述;想知道「未来 N 天上涨概率有多大、当前趋势处于什么状态、持仓风险有多高」,要么自己另开量化脚本,要么切回行情软件手动盯指标。

dsh-bayes-predict 把这件事做成了 DSH 插件:以贝叶斯定理为核心,把多个技术指标融合成对「未来 N 日上涨」的后验概率估计,并在对话和浏览器面板两个入口直接输出结果。下面介绍它的定位、核心功能与安装用法。

这是什么

dsh-bayes-predict 是一个基于贝叶斯定理的 DSH 个股预测插件,覆盖 A 股和美股,提供三类输出:多指标信号融合的上涨概率估计、趋势状态识别与持仓风险度量。维护者为 pg527322814,许可证 MIT。

需要先说明平台依赖:插件依赖 dsh 宿主环境(dsh web、cordis 插件系统、window.__ModuleLoader__ 等),该平台未随仓库公开,单独克隆仓库无法直接运行,代码供学习、参考与移植。

核心功能

多指标信号融合评分

评分以「未来 N 日上涨」为假设 H,流程如下:

  1. 先验取加权历史胜率,并向 0.5 收缩(shrunk);
  2. 以 MACD 金叉、RSI、均线排列、布林带位置、量能、动量、近 5 日走势等信号作为证据;
  3. 每个信号计算双向经验似然比(看多信号用 LR_bull、看空信号用 LR_bear),做时间衰减加权与样本收缩;
  4. 通过 odds 乘法做贝叶斯更新,输出后验上涨概率(含 95% 置信区间)与 0-100 评分、评级。

为了降低单股样本不足带来的偏差,插件启用了分层先验:启动时加载 market-prior.json 的全市场通用 LR 表,单股 LR 与之混合,权重为 w = n/(n+80)

多窗口对比与趋势状态识别

  • 多窗口对比:同时输出 2/5/10/20 日的后验概率对比表;
  • 趋势状态:按贝叶斯 t 检验风格做三状态分类,输出 P(上涨)、P(下跌)、P(震荡),阈值 δ = max(0.5·SE, 年化 5% 经济当量),避免大样本下把微小趋势误判为明确方向。

持仓风险估计与信号归因

  • 波动率用 EWMA(RiskMetrics λ=0.94);
  • VaR/CVaR 以经验分位数为主输出,正态估计作为对照,另附历史最大回撤;
  • 信号归因输出贡献绝对值 Top3 的信号,解释「为什么看多/看空」。

Host 端与浏览器端

插件是 dual-face 结构,两端都有入口:

  • Host 端:注册 bayes_stock_predict 全局工具,附带 GET /bayes-predict/analyze 路由,可生成 markdown 报告;
  • 浏览器端:React 可视化面板,挂在侧边栏「📊 贝叶斯股票分析」入口,仪表盘和走势图均为 SVG 自绘。

行情获取与数据防护

数据源免费、无需 key:

  1. 代码归一化:600519sh600519000001AAPL 等写法都能识别;
  2. A 股日 K 用腾讯 fqkline 后复权 hfq(最多约 700 根,主/备用域名自动切换,东财后复权兜底);美股日 K 用新浪全历史;
  3. 实时快照:A 股用腾讯,美股用腾讯 us 前缀;
  4. 内存 TTL 缓存 30 分钟。

针对腾讯后复权数据的基准滚动问题,fetchKlines 内置了断层防护:hfq 最后一天 |单日涨跌| > 8% 时,会拉不复权序列核对,判定为复权断层则丢弃最后一天,宁缺毋滥。

注意数据口径:评分与单股分析均使用后复权(hfq),收益序列含分红再投资、信号干净,但价格不是真实股价;如需真实股价口径要改用不复权。

安装与启用

安装没有 dsh plugin add 形式的命令,需要手动拷贝插件包并修改配置,共三步。

1、把插件包拷贝至 %USERPROFILE%\.dsh\profiles\web\node_modules\dsh-bayes-predict(目录不存在时先创建;profile 的 baseUrl 锚定在 profiles\web,node 解析会向上逐级查找 node_modules)。

2、在 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml 追加:

- insert:
    - id: bayes-predict
      name: 'dsh-bayes-predict'

3、重启 dsh web。插件集变更需重启生效;client bundle 的 HMR 仅在 pnpm run dev:web 重建时可用。

如果要自己改客户端代码,注意一个契约:lib/client.js 的 factory 必须导出 inject 数组(如 exports.inject = ["slots"]),缺失时 apply(ctx) 里访问 ctx.slots 会直接抛 cannot get property "slots" without inject

项目零第三方依赖,要求 Node 18+;npm test 会运行 test/smoke.mjs(贝叶斯核心 + 合成 K 线端到端)与 test/normalize.test.mjs(代码归一化单测)。

典型用法

对话方式(重启后开新会话,让 agent 看到新工具):

分析一下 600519
用贝叶斯方法评估一下 300750 未来 5 天的上涨概率

可视化面板方式:点击侧边栏底部「📊 贝叶斯股票分析」快捷按钮,弹出居中面板后输入代码,点「贝叶斯分析」。

适用场景与注意事项

适合两类人:一是在用 dsh web、希望让 agent 直接给出结构化概率结论和风险度量的开发者;二是想参考「双向 LR 四格表 + 时间衰减 + 分层先验」这套贝叶斯实现的人,代码结构清晰(bayes.js 核心计算、market.js 行情、client.js 面板),便于移植。

使用前有几点必须知道:

  1. 插件以当前 dsh 进程的权限运行,且需要手动放进 node_modules 并修改 cordis.patch.yml,安装前建议先检查源码与许可证(本项目为 MIT);
  2. 所有输出由贝叶斯统计模型基于历史行情生成,仅供参考,不构成投资建议;
  3. 卸载需三步:删除 cordis.patch.ymlbayes-predict 的 insert 行、删除 node_modules\dsh-bayes-predict、重启 dsh web

结语

dsh-bayes-predict 的价值在于把一套完整的贝叶斯评分流程(信号 → 似然比 → 后验概率 → 风险度量)封装成 DSH 插件,让「上涨概率」这类量化结论可以直接在对话和面板里拿到,且不依赖任何付费数据源。

  • GitHub:https://github.com/pg527322814/dsh-bayes-predict
  • 插件目录页:https://www.skillhub.cn/plugins/pg527322814/dsh-bayes-predict
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜