这是个新号,先讲清楚我打算做什么。
我是一个AI工程师,业余炒A股大概5年。最近这一年我越来越确信一件事——A股投研的最大问题不是没数据,是没工程。
这句话什么意思?
上周我想搞清楚一个简单问题:章源钨业的钨精矿自给率到底是多少?
这个数字直接决定它该值15倍PE还是50倍PE——自给率高,钨价上涨大部分变成公司利润;自给率低,公司本质是个加工厂。
我打开五条雪球高赞回答、东方财富两篇资讯文章——给出了两个完全不同的数字:60%、20%。没有一个标明数据来源。
后来我翻了公司2024年年报——答案是20%,白纸黑字写在那里。
问题不是没数据,是没人愿意去翻。
但即使这20%被准确读取了,故事还没完。
钨价从去年到现在涨了5倍。如果章源自给率是60%,它的利润弹性是巨大的;自给率20%,它本质就是个加工厂,弹性大打折扣。这一个参数的差异,让股价合理估值差出一大截。
而这种"关键参数"在A股投研里到处都是——它们都不在任何单一研报里,需要你自己去拼。
我在做软件的世界里待过几年,那里有个规则:任何不能被复现的结论都不是结论,是观点。这个规则在A股投研里完全失效了。
所以我决定花6个月做一件事——把投研当软件工程做。
我打算搭一个系统。系统里有两个部分:
第一个部分:回答"什么时候、哪个赛道要起来"——这是时间维度的预判。
第二个部分:回答"动起来之后,哪些公司按什么顺序受益多大"——这是空间维度的映射。
举章源钨业的例子:
前瞻引擎 判断"小金属赛道"什么时候要起来——比如钨价上涨、库存下降、政策催化这些信号出现的时候。
拓扑引擎 判断"小金属赛道起来之后,哪些公司受益最大"——这时候自给率20%就变成了一个可计算的关键参数:它会让章源的弹性系数打折,受益强度排在同行后面。
这两个部分独立工作,但通过一个共享的"宇宙"协作——一张包含公司、技术、原料、政策、需求、事件六种实体的产业网络。
听起来抽象,给你看一段我这周写的代码:
@dataclassclass Entity:id: strtype: Literal["company", "technology", "material","policy", "demand", "event"]name: strsymbol: Optional[str] = None # 仅公司有股票代码sector_memberships: Dict[str, float] = field(default_factory=dict)
一只股票(公司实体)可以同时属于多个赛道,每个赛道有一个浮点权重。比如歌尔股份既属于"端侧AI"赛道(权重0.6),又属于"消费电子"赛道(权重0.9)。
传统的"申万行业分类"假设每只股票只属于一个行业——这个假设在AI时代彻底失效。歌尔做AI眼镜组装的时候,把它归到"电子-消费电子"是丢失信息的。
这周我做的事情很基础——把这套数据结构定义出来,写了一个 yaml 配置文件描述了3个主题、6个赛道、30个实体、20条产业链关系。
CLI 跑通了第一个命令:
$ python -m investool universe-showUniverse v0.5.0: 3主题 / 6赛道 / 30实体 / 20边
看起来不多,但这是基础。接下来3周我会把前瞻引擎和拓扑引擎依次跑通。
这个系列我会每周写一次周记,记录这周做了什么、遇到了什么。前4周都是这种"过程记录",不立任何长期flag,不预测任何股票,不蹭任何热点。
等我真的做出能给大家看的东西,再正式开一篇长文。
大概是4周后。先做到,再说出来。这是工程师的本能。
声明:本文是个人项目过程记录,不构成任何投资建议。
夜雨聆风