ZENTHOS Workspace
RAW · · 2026-06-19 · 12 min · #J7AD6XS

第二周:从跑通技术面策略→调研基本面策略实践

用 vnpy 和 Claude Code 跑通策略闭环后,转向高股息低估值基本面策略。核心逻辑基于狗股理论,通过 PE、PB 历史分位筛选低估值标的,以股息率超 4% 为收益来源,并用夏普比率衡量风险性价比,完成从信息到决策的量化管道。

复盘上周作业:

用 vnpy + Claude Code 跑通了从「策略代码 → 数据加载 → 回测 → 结果分析」的完整闭环。

首先解决上周回测环境变量设置不合理导致的收益过低的问题:

  • 1分钟K线 + 4449笔交易 = 成本吞噬利润
  • 单只股票 + 高频 = 没有分散。A股单只股票的日内波动噪音极大。1分钟双均线在个股上频繁产生假信号,每次假信号都触发一次买卖 → 产生一次手续费 + 滑点。4449笔交易中,绝大多数可能是无效的噪音交易。
  • 股票 vs 期货的参数混淆。被 vnpy 的复杂度拖累了——有很多不相关的概念分散了注意力。

核心认知: 量化策略本质上是一个从信息到决策的管道。


这一周最小闭环:

主题:修复第1周双均线 + 引入高股息低估值策略 + 完善只是点

策略调研 → 理解 → 代码实现 → 回测验证

说明:我为什么选择高股息低估值的策略进行研究

选项 优势 劣势 结论
双均线 已有代码 两次回测失败(1min过度交易+日线爆仓),沉没成本大
行业轮动 思路好 数据量大、信号定义复杂、短时间跑不通
高股息/低估值 参数少、天然低频、狗股理论背书、代码简单 牛市跑不赢指数(可写进④)
PEG 有名人背书 盈利增长率数据质量不稳 备选
自选 调研成本高

信息源 → 信号逻辑 → 持仓组合 → 头寸方向 → 持仓周期
↑ ↑ ↑ ↑ ↑
看什么 怎么判断 买多少 做多还做空 持多久


信息源&信号逻辑:

狗股理论:

又称道琼斯指数狗股策略,指的是冷门老蓝筹。

核心逻辑-- 股价相对低估值、分红稳定、现金流扎实

道琼斯指数成分股,都是成熟的龙头,相对稳定,很难倒闭。加上相信价值投资,市场会慢慢修复到正确的估值,高息+低值回归,从而获得长期超额收益。

image

低估值:
常用两个估值指标筛选:

  • PE(市盈率)\= 股价 / 每股净利润:越低代表用更少价格买下公司每年盈利;
    静态市盈率(LYR)\滚动市盈率(PETTM)\动态市盈率

什么是市盈率?-基础篇_哔哩哔哩_bilibili
image
image
?:

选股标准:PE、PB 处于自身历史分位低位(近 5/10 年 20% 分位以内),避开估值高位泡沫。

高股息:
股息率 \= 年度现金分红总额 ÷ 总市值(股价),是策略收益核心:
常规高股息标的:股息率>4% 为优秀,>5% 属于高分值(远高于银行定期存款、货币基金收益);
分红前提:公司盈利稳定、现金流充裕、分红政策固定(常年持续分红,不偶尔一次性大额分红)。
❌ 避雷:短期一次性高分红、靠变卖资产分红、业绩逐年下滑的 “虚假高股息”。

夏普率 \(=\) 每承受一单位风险,能拿到多少超额收益

用来衡量:这笔投资「风险性价比」高不高。

\((\text{夏普比率} = \frac{\text{组合年化收益率} - \text{无风险收益率}}{\text{组合年化波动率(风险)}})\)

年化数据为准:

  • <0:不如存无风险理财,策略很差
  • 0~1:收益一般,风险偏高,性价比普通
  • 1~2:不错,风险和收益匹配,主流合格策略
  • >2​:优秀,​低风险、高收益,优质策略
  • >3:非常顶尖的稳健策略

从数据来源总结:

综上,这是一个==基本面==来进行分析的一个策略。从被长期实证的狗股理论而来,然后根据相对估值的方法来获取相关的数据。从而从一个抽象的想法,量化成了一个可以被数据化交易的策略方法。

但也是由于数据是从,PE、PB、股息率获得,也能推理出这个策略的弊端。

  1. 低 PE / 低 PB 经常不是"被低估",而是市场正确地预判了盈利即将崩塌。
维度 具体表现
静态 PE 的欺骗性 公司卖资产、政府补贴、一次性退税导致当期利润虚高,PE 看着低,实际上扣非 PE 可能极高甚至为负
盈利崩塌窗口 周期股利润在顶部时 PE 最低,随后 2-4 个季度利润断崖式下降,PE 从 6 倍飙升到 60 倍
A 股特殊性 ST 退市新规下,净资产为负、营收不达标的公司 PE 可能很低,但面临退市风险
  1. 股息率高,原因往往是价格跌了
成因 股价 分红 可持续性
真金白银的稳定分红 稳定/上涨 稳定/增长 可持续
股价暴跌,分红尚未下调 大幅下跌 暂时维持 即将削减
特殊分红被当成常规分红 任意 一次性大增 不可持续

这是问题所在,也是后续策略改善的一个方向。


跑回测

伪代码示意

每月调仓日:
    股票池 = 股息率 > 2% 且 0 < PE < 15 的股票
    每只买 = 总资金 / len(股票池)(取整到100股)
    不在池里的 → 卖掉
    在池里的 → 买到目标仓位

测试1参数:

股息率 > 2% 且 0 < PE < 15

image

    首个交易日:  2023-01-03
    最后交易日:  2026-06-05
    总交易日:   827
    盈利交易日:  426
    亏损交易日:  400
    起始资金:   100,000.00
    结束资金:   147,745.00
    总收益率:   47.75%
    年化收益:   13.86%
    最大回撤:   -14,269.97
    百分比最大回撤: -11.94%
    最长回撤天数:     142
    总盈亏:    47,745.00
    总手续费:   262.71
    总滑点:    909.52
    总成交金额:  875,684.92
    总成交笔数:  2191
    日均盈亏:   57.73
    日均手续费:  0.32
    日均滑点:   1.10
    日均成交金额: 1,058.87
    日均成交笔数: 2.649334945586457
    日均收益率:  0.05%
    收益标准差:  0.80%
    Sharpe Ratio:   0.92
    收益回撤比:  3.35

测试2参数:

股息率 > 3% 且 0 < PE < 10

image

    首个交易日:  2023-01-03
    最后交易日:  2026-06-05
    总交易日:   827
    盈利交易日:  427
    亏损交易日:  399
    起始资金:   100,000.00
    结束资金:   142,312.07
    总收益率:   42.31%
    年化收益:   12.28%
    最大回撤:   -13,149.84
    百分比最大回撤: -10.32%
    最长回撤天数:     114
    总盈亏:    42,312.07
    总手续费:   252.34
    总滑点:    956.85
    总成交金额:  841,125.95
    总成交笔数:  1341
    日均盈亏:   51.16
    日均手续费:  0.31
    日均滑点:   1.16
    日均成交金额: 1,017.08
    日均成交笔数: 1.6215235792019347
    日均收益率:  0.04%
    收益标准差:  0.80%
    Sharpe Ratio:   0.82
    收益回撤比:  3.22

对比分析

整体趋势上看起来跑过了沪深300指数,但是能看到最大回撤还是跑到了11%,可能需要增加回撤风险管控。从日平均中能看到小额负收益的面积还是更大,但是在整体上看还是收益更多,整体来说比较接近,夏普率处于收益一般

两张图的区别来看,第二组增加了约束强度,更加偏向筛选出更加极限的股票,交易数量从2191降到了1341,手续费减少了,但是总收益却也降低了。
所以我觉得对于狗股理论这种偏好高收益的交易,筛选条件不必过于严苛,只要是收益是正向的,都尽量能够容纳进来,一般能覆盖交易成本。

遇到的问题:

  • 这个是基本面的策略,但是数据来源并非交易时刻的沪深300成分股,会导致下载的数据有一定的先知性,影响回测的真实性。
  • 用的是开源数据,对并发下载有着限制,所以想根据时间的推进重新下载300支股票进行回测,数据量巨大且非常耗时,需要想个策略尽量模式真实情况。
  • deepseek4pro编程在编写jupyter脚本的时候会会出现顺序问题,看起来对它来说很吃力,会出现策略遗留的问题,即使是最简单的策略。说明还是需要人工确认代码。

可以优化的方向

  • 避免单一市净率PE、PB潜在的风险,增加评价方式,还原狗股定理本意

  • 避免使用静态PE

  • 增加更多的另类数据,避免面临退市风险的股票
  • 需要对特殊分红的情况进行分析
  • 需要研究面对多股票数据持股的策略的数据获取方案,可能需要更加优雅的方案进行数据处理。避免长期回测中 沪深300成分股变化。
  • 创建策略转换skill,将策略回测放在聚宽这种平台上。避免vnpy带来的数据难题,和多参数调试的问题。进行对比分析