不是投资建议,是一个普通人和AI一起"造工具"的真实记录。
说实话,这事儿的起点特别朴素——我就是懒。
两个月前读了齐东平教授的《大数投资》,书里讲的是一个特别反常识的理念:别去猜哪只股票会涨,就去买整个市场里最便宜的那一批,分散持有,等待均值回归。
筛选条件粗暴到让人怀疑人生:
PE小于10
PB小于1
行业内选估值最低的
大盘点位决定仓位
读完我热血沸腾,打开Excel准备手动筛。然后我发现,A股五千多只股票,光是把PE和PB拉一遍就花了一个多小时。
分行业排名、查52周最低点、算距离最低点的涨幅、查资产负债率、排虚拟资产占比……
这一套流程我断断续续花了一个多星期才跑完了一遍。而每个交易日数据都会变化,买点卖点都会有更新,这样人工操作,几乎不太可能。
然后,就有了这个故事。
第一版:一个"能跑"的脚本,跑了40分钟
最开始我就想写个Python脚本,输入是A股全市场,输出是一份低估值股票清单。
AI写得很快,大概20分钟,一个基于BaoStock的脚本就摆在我面前了。我兴奋地运行,然后去泡了杯茶,回来一看——还在跑。又刷了20分钟短视频,回来一看——还在跑。
终于跑完了,用时40多分钟。出来的结果是对的,筛选出了七十多只PE小于10、PB小于1的股票,但这个过程让我崩溃:BaoStock的接口是单线程的,每只股票的财务数据要一个个去问,问完这家问那家,像在银行柜台排队办业务,前面站了五千多个人。
我当时就意识到:这玩意儿如果不能"秒出结果",我根本不可能每天坚持用。

第二版:并发+缓存,从40分钟压到8秒
优化的过程,是我和AI"吵架"最多的一段。
我:"能不能并发请求?"
AI:"BaoStock官方建议单线程。"
我:"那其它平台有实时数据吗?"
AI:"新浪财经可以并发,但你要自己处理分页。"
我:"那就只把BaoStock不能并发的部分单线程,其他全部并发。"
于是就有了现在的架构: - 新浪实时PE/PB数据:8线程并发分页拉取,30秒搞定全市场 - BaoStock行业分类:缓存90天,一季度才变一次的东西,天天问它干嘛? - BaoStock财务/杜邦/现金流数据:单线程但缓存30天,一个月问一次就够了 - 新浪历史K线(算52周最低):15线程并发,20秒拉完
第一次优化后,耗时从40分钟降到了8分钟。
但我还不满意。
第二次跑的时候,因为缓存命中,全程只用了8秒。
8秒!从40分钟到8秒。我看着终端里的日志,有种养了一年的乌龟突然学会了百米冲刺的感觉。

第三版:三维评分,给"便宜"一个量化标准
光有清单不够,齐东平教授的书里说要"行业内选估值最低的"。但"最低"是个相对概念,我怎么知道一只银行股PE=5算不算低?要看看银行业里其他兄弟是什么水平。
于是我们又加了一套三维评分系统:
第一维:PE得分(35-100分) - 在同行业里排名,PE最低的拿100分,最高的保底35分 - 用百分位法,保证公平
第二维:PB得分(35-100分) - 同理,行业内比市净率
第三维:股价得分(0-100分) - 离52周最低点越近,得分越高 - 涨幅超过100%直接0分,这就是书里说的"卖出信号"
总分300分。 4月7日那期,排第一的是大商股份,298分;第二是贵阳银行,295分;第三是江苏国信,289分。

这套评分最妙的地方是:所有股票都有正分,但好股票会被排名"顶"出来。 不像某些打分系统,烂股票全给零分,结果筛出来一片0分,你也不知道谁更烂。
第四版:从脚本到Skill,微信自动推送
脚本跑着爽,但每天还得手动执行、手动看结果,我还是懒。于是我们开始把这个脚本封装成一个Skill。
SKILL.md、目录结构、我的持仓、操作建议、一键运行入口、自动化流水线、……全部安排上。
最后一步:把结果推送到微信。我注册了个PushPlus,把token写进脚本。
终于,在手机上看到了第一份"大数投资日报":一个清晰明了的HTML表格,排名、名称、PE、PB、涨跌、总分、操作建议,清清楚楚。

那个瞬间我突然觉得:这整个折腾的过程,比看股票有意思多了。
踩过的坑,都是学费
现在skill已经稳定运行了一个多月,每个交易日下午四点自动执行,把结果推送到我的微信,每周日自动形成周报。说说真实的感受和几个血泪教训:
坑一:数据源不是免费的午餐 - BaoStock确实免费,但速度就是慢,服务端限制你没办法 - 新浪数据快,但有些字段不全 - 最后只能"拼接":实时数据走新浪,财务数据走BaoStock,K线走新浪
坑二:并发不是越多越好 - 一开始我把K线并发开到50,结果被新浪限流了
降到15才稳定 免费接口的并发策略,得像求房东降租一样试探
坑三:缓存过期要设对 - 一开始K线缓存设了7天,结果发现某些股票停牌后复牌,K线数据变了但缓存没更新 - 后来改成24小时,每天更新一次,刚刚好
坑四:HTML表格推送的格式玄学 - PushPlus对HTML的支持有限,一开始用了复杂的CSS,到手机上全乱 - 最后改成最朴素的table标签+内联样式,反而最稳
给想造工具的朋友几个建议
第一,别追求一步到位。 我这个skill从第一版到能用,迭代了至少十多次。先让脚本能跑,再优化速度,再封装成skill,最后加自动化。每一步都是在上一步的基础上长出来的。
第二,真实场景是最好的测试。 如果你不做投资,你永远不会知道"40分钟跑一次"和"8秒跑一次"之间的差别有多大。只有每天真正用它,你才会发现哪些功能重要、哪些冗余。
第三,AI不是帮你写代码的,是帮你"试错"的。 整个过程中,我负责提需求和判断方向,AI负责实现和debug。我根本不会写并发代码,但我知道"并发"这个概念;我不懂BaoStock的API细节,但我知道"缓存"能解决问题。
知道"要做什么"比知道"怎么做"更重要,因为后者可以问AI。
花了一天时间,让一个AI帮我造了一个"选股管家"。它每天自动跑、自动评分、自动推送到我手机上。它不会情绪化,不会追涨杀跌,不会听信小道消息。它就是机械地执行一套我认同的投资逻辑。
而这,可能是AI对我们普通人最大的价值——不是替我们思考,而是把我们思考清楚后的规则,一丝不苟地执行下去。
如果你也对投资感兴趣,或者也想用AI造点工具解决自己的实际问题,我的建议是:别想太多,先写一个能跑的最小版本,剩下的,
让迭代发生!
免责声明:本文仅为个人AI工具开发经验分享,不构成任何投资建议。股市有风险,入市需谨慎。
夜雨聆风