DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

LipingAn04 /

LipingAn04/dsh-index-fund-guide

Verified

《指数基金投资指南》(银行螺丝钉) 的估值—定投—卖出体系,DSH 插件:9 份参考文档 + 4 个零依赖脚本 + 34 项保真测试

★ 2 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@1dc56c62

dsh-index-fund-guide

把《指数基金投资指南》(银行螺丝钉)的估值—定投—卖出体系做成一个能算、能核、能落地的工具箱,以 DSH 插件形态分发。

它不预测涨跌,也不替你做决定。它只做三件事:把书里的方法算清楚、把数据的来路摊开、把结论成立的前提写明。

你问:上证50 现在能不能买?
它答:盈利收益率 9.28% → 落在持有区(不是买入区)。
     用的是 2026-10 校准口径,买入线 10%、卖出线 3%。
     数据:自算 PE 10.87(逐只对账中位误差 0.012%),2026-10-19 收盘。

一、它能做什么

你的问题 它给你的东西
这只指数基金现在该买、该持、还是该卖? 按「四类指数 → 四种方法」自动分派,给出信号 + 依据 + 用的是哪套阈值
书里 2017 年那条 6.4% 卖出线,现在还能用吗? 用当期利率重算买卖线,并解释为什么两条线不同步下降
这个 PE 是真是假、是什么口径? 不采信现成结论,取成分股+净利润+净资产自己除,逐只与公开值对账
每月 2000 块,该分给哪几只? 按低估深度分配,带单只/同质组上限;一个都不低估时告诉你钱该去哪儿
这个月该投多少? 按「越低估投越多」放大或缩小本月金额
我这笔定投的真实年化是多少? IRR / XIRR(不是"总收益 ÷ 本金"那种假年化)
我赚了多少?(含分红和手续费) 持仓成本、浮动盈亏、已实现盈亏、累计分红、总收益、真实年化
从零开始,定投计划怎么落地? 生成一张可打印填写的计划表(现金流 → 选基 → 渠道 → 记录表)
这套规则真的有效吗? 拿你自己的历史 PE 序列回测「估值定投 vs 无脑定投」
改了东西会不会算错? 36 项保真断言,把书里可复现的数字钉成回归测试

二、九个核心功能

1. 判断信号 —— 先把品种分类,再谈买卖

同一个 PE,用对方法和用错方法会得出相反结论。所以第一步永远是分类:

品种类型 方法 判据
盈利稳定(上证50、沪深300、红利、恒生、H股) 盈利收益率法 1/PE 对照买入线/卖出线
高速增长(创业板、中证500、纳指100) 博格公式 PE 历史分位 <30% 可投
周期但无长期亏损(证券、银行、能源) PB 法 PB 历史分位 <30% 可投
长期亏损(困境行业) 放弃 任何估值都不买
python valuation.py signal --pe 9.01 --pe-type ttm --preset cal
品种方法           : 盈利收益率法(盈利稳定的价值指数)
盈利收益率         : 11.10%
信号               : 分批投资  (信号码 buy)
依据               : 盈利收益率 11.10% > 买入线 10.0%, 处于低估区, 按月坚持定投
阈值口径           : 当期校准-教材直译 2026-10-16

[!] 卖出线 3.0% 隐含 PE > 33 倍 … 本方法在当前环境几乎永远发不出"卖出"信号。

用错方法时会当场报警:

python valuation.py signal --method bog --pe 31.90 --percentile 18.2
信号               : 历史较低区域  (可开始/继续定投)
分位 18.2% < 30%  → 便宜
交叉验证(盈利收益率): 3.13% -> 分批卖出
[!] 两种方法给出的信号不一致。这通常说明该品种被用错了方法。

创业板 PE 31.9 用盈利收益率法算出来是"卖出",按分位却是"最便宜的一档"——这就是分派的价值。

2. 阈值校准 —— 让阈值跟着利率走

python valuation.py calibrate --riskfree 1.65 --bond-avg 3.0 --as-of 2026-10
买入线 = max(10%, 2 × 无风险利率) = max(10%, 3.30%) = 10.00%   -> PE < 10.00
卖出线 = 债基长期平均收益 + 风险溢价 = 3.00%                  -> PE > 33.33
对照书中 2017 口径:  买入线 10.0% (PE<10)   卖出线 6.4% (PE>15.62)

买入线锚定格雷厄姆的 10% 绝对安全边际,利率再低也不松;卖出线锚定"持有股票已不如持债",随债基收益一起下移。两条线不同步,于是持有区被拉宽到 PE 10~33——低利率下卖出条件事实上失效,卖出必须改用分位判断。这是本插件与原书最大的差异。

3. 自己算 PE/PB —— 不抄结论,逐只对账

python rawdata.py fetch --index 000300          # 成分股 + 行情 + 财报
python rawdata.py calc  --index 000300 --verify --csv 000300.csv
指数 PE = Σ(成分股总市值) ÷ Σ(成分股净利润 TTM)
指数 PB = Σ(成分股总市值) ÷ Σ(成分股净资产)
TTM 净利润 = 本期累计 + 上年年报 − 上年同期

输出五种口径(中证口径 / 剔除亏损 / 自由流通 / 个股中位数 / PB)+逐只对账误差+可抽查的 CSV 明细。

2026-10-19 实测:沪深300 自算 PE 13.06 vs 公开 12.9964(偏差 +0.51%),279 只个股逐只对账中位误差 0.012%,97.5% 的个股误差 ≤1%。

4. 组合分配 —— 预算怎么分,以及"都不便宜时钱去哪"

python valuation.py portfolio --budget 2000 \
  --candidates "000922:9.01:1:yield,510300:13.0:1:yield,399006:31.9:1:bog:18.2" \
  --max-single 0.5
代码        方法      数值     盈利收益率    权重       金额
000922    yield    9.01     11.10%     50.00%   1000.00 元
399006    bog     31.90        -%       50.00%   1000.00 元
[!] 单只上限 50% 生效
提醒: 买到重复持仓不算分散 —— 上证50 / 基本面50 / H股 里有大量同一批银行股
  • 候选格式 代码:估值[:折价[:方法[:分位]]]
  • 全市场都不低估 → 自动把预算指向债券基金(书里的规则)
  • 预算 <1000 只留 1 只,<3000 最多 3 只
  • 上限凑不满时明说"不可行",不假装满足

5. 定期不定额 —— 越低估投越多

python valuation.py amount --base 1000 --mode pe --first 10 --now 7.5 --n 1
# 本月金额 = 基准 × (首次PE / 当前PE)^n = 1000 × (10/7.5) = 1333.33 元

6. 定投年化 —— IRR / XIRR,不是"总收益 ÷ 本金"

python dingtou.py irr --invest 10000,10000,10000,10000,10000,10000,10000 --final 76518
# → 月均 2.2260%,年复 30.24%(书中案例)

7. 记账与真实收益 —— 成本法、分红、费用、已实现盈亏

python dingtou.py record --file 我的定投.csv --date 2026-10-20 --action 买 \
        --code 510880 --amount 2000 --shares 700 --fee 0.4 --valuation 9.13 --valuation-type PE
python dingtou.py report --file 我的定投.csv --nav 510880:2.86
持仓成本   : 1544.91 元        当前市值 : 1598.81 元
浮动盈亏   : 53.90 元          已实现盈亏 : 43.61 元
累计分红   : 42.50 元          累计费用 : 1.30 元
总收益     : 140.01 元
真实年化   : 4.79%   (XIRR: 按每笔资金的实际在场时间加权, 已含分红现金流)

卖出时按持仓均价结转成本,分红单独记账——不会把已实现盈亏混进成本。

8. 定投计划 —— 一张能填能贴的计划表

python dingtou.py plan --income 10000 --expense 6000 --age 35 --out 我的定投计划.md

四段式:梳理现金流 → 选低估品种 → 定渠道与定投日 → 附定投记录表。

9. 回测 —— 用你自己的历史序列验证规则

python valuation.py backtest --series pe_history.csv --amount 1000
# CSV 需含 date / pe / close,对比「估值定投 vs 无脑定投」

免费源拿不到历史 PE 序列,所以回测是 CSV 驱动:工具的价值在"让验证可重复",不在"替你取数"。

附:保真测试

python selftest.py      # 36 项断言,离线可跑,全部来自书中可复现数字与 CLI 契约

三、判断模型(一屏看懂)

① 分类 ──→ 宽基还是行业?盈利稳不稳?→ 决定用哪套方法(错了结论会反转)
② 取数 ──→ 自己算 PE/PB(或第三方数据 + 数值/来源/时间三要素)
③ 定口径 ─→ book(2017 原文) / cal(2026 教材直译) / cal-rp(风险溢价平移)
④ 出信号 ─→ 分批买 / 坚定持有 / 分批卖
⑤ 落计划 ─→ 月投多少 → 分给谁 → 怎么写下来 → 怎么记账

卖出三层判据(按优先级)

  1. PE/PB 历史分位 >70% ← 校准后唯一稳定可用的判据
  2. 盈利收益率 < 卖出线 ← 理论正统,低利率下极少触发
  3. 有更便宜的同类品种 ← 同质组内估值倒挂时换仓

四、边界与风险

完整版见 DISCLAIMER.md,最要紧的四条:

  1. 低估不等于会涨,可以再低估 30%,也可以低估三年。
  2. 盈利收益率法在当前利率下几乎不会发出卖出信号,只依赖 signal 可能在高位一直"持有"到回撤——必须叠加分位判断。
  3. 方法选错,结论反转。工具会提示"你可能选错方法了",但最终归你判断。
  4. 数据可能与现实有偏差:免费接口无 SLA、TTM 相减法在重组年份失真、分位 30%/70% 是工具自定的(书里只说"历史较低/较高区域")。

还有三条插件反复提醒但无法替你执行的硬约束:一年内要用的钱不进股市;不借钱不加杠杆不碰分级 B;单一行业不重仓、规模 <1 亿的基金不买。


五、安装

pnpm add https://github.com/LipingAn04/dsh-index-fund-guide.git
# 再把 dsh-index-fund-guide 加进 profile 的 package.json → dsh.profile.bundles

装好后 skill({ name: "index-fund-guide" }) 即可加载。三种安装方式、两个已知的安装坑、目录结构、数据来源与报告期规则,见 INSTALL.md。

脚本也可以脱离 DSH 单独使用:skills/index-fund-guide/scripts/ 下 4 个 Python 文件零第三方依赖。


六、许可

MIT。方法论来自原书《指数基金投资指南》(银行螺丝钉),本仓库只做工程化与 2026 年数据校准,与原书作者无关,未获其授权或背书;书中回测数字、案例、结论的版权归原作者。

—/ 5

No ratings yet

Verified DSH bundle

Commit 1dc56c622501

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout