前言¶
在 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,流程如下:
- 先验取加权历史胜率,并向 0.5 收缩(shrunk);
- 以 MACD 金叉、RSI、均线排列、布林带位置、量能、动量、近 5 日走势等信号作为证据;
- 每个信号计算双向经验似然比(看多信号用 LR_bull、看空信号用 LR_bear),做时间衰减加权与样本收缩;
- 通过 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:
- 代码归一化:
600519、sh600519、000001、AAPL等写法都能识别; - A 股日 K 用腾讯 fqkline 后复权 hfq(最多约 700 根,主/备用域名自动切换,东财后复权兜底);美股日 K 用新浪全历史;
- 实时快照:A 股用腾讯,美股用腾讯
us前缀; - 内存 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 面板),便于移植。
使用前有几点必须知道:
- 插件以当前 dsh 进程的权限运行,且需要手动放进
node_modules并修改cordis.patch.yml,安装前建议先检查源码与许可证(本项目为 MIT); - 所有输出由贝叶斯统计模型基于历史行情生成,仅供参考,不构成投资建议;
- 卸载需三步:删除
cordis.patch.yml中bayes-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