十一月的鹏城终于凉了下来。海风从湿热变成了干爽,早晚温差拉大到七八度,阳台上不用开风扇就能坐得住了。
周六上午,林晨没有去公司。他坐在书房里,面对双显示器,左边是FinGpt的ApI测试界面,右边是他那套已经跑了三年的投资系统后端代码。
他有一个想法,在脑子里转了两周了。
目前投资系统的信号来源主要是量价数据——K线、成交量、技术指标。这些数据能捕捉市场规律,但有一个盲区:不识字。当一条政策新闻出来的时候,系统看到的是股价的波动,但不知道波动的原因。这就导致了两个问题——信号滞后,和误判风险。
但如果把FinGpt的文本理解能力接到投资系统里,让系统能新闻、公告和研报——那它得到的信号就不只是股价在跌,而是股价在跌因为某行业的补贴政策要到期了。前者是描述,后者是理解。
他打开一个新的python文件,开始写一个接口模块。
思路不复杂:在现有的投资策略引擎上增加一个文本信号层。每一篇新推送的财经新闻、每一个公司公告、每一份公开的行业研报,先过FinGpt做摘要和信号抽取——提取出事件类型、影响标的、影响方向和置信度。然后把这个文本信号量化为一个向量,跟量价信号在同一个策略层做融合。
是技术难点。量价信号是浮点数——涨了百分之三,成交量放大了两倍。文本信号是语义向量——该行业面临政策收紧压力。两个信号不在同一个空间里,怎么做加法?
他在纸上画了半小时的架构图,最后选了一个方案:不做信号加法,做信号分层。文本信号作为一层过滤器——当文本信号的置信度超过阈值的时候,调节量价信号的权重。如果FinGpt判断某条政策新闻对某个行业的负面影响很高,那么即使该行业的量价信号显示超跌反弹的机会,仓位也只开到原来的三分之一。
不是让AI替人做决策——是让AI在决策前多问一句:你看过今天的新闻了吗?
下午两点,他跑通了第一个版本。测试用的是上个月的一条真实新闻——某新能源补贴政策到期前一天的市场数据。旧版系统在补贴到期当天还在做多——因为量价信号显示超跌。新版系统在新闻发布之后立刻把仓位减了半,因为FinGpt判断补贴到期对行业利润的负面影响是长期的。
回测下来,那一个交易日就少亏了八千多。
他看着对比结果,把数据截了张图。
苏婉端了杯茶进来,看到屏幕上的两张回测曲线。这是你那个投资系统?
新版。给它加了一个读新闻的模块。用FinGpt。
也就是说你的AI现在会看新闻了?
会了。而且看完之后会自己调仓位。
苏婉看了他几秒。你让AI帮你看新闻炒股——这样合法吗?
用公开信息做分析不违法。而且这个系统不对外提供服务——是我自己用的。
苏婉把茶放下,没有继续追问。晚上想吃什么?我去买菜。
随便。让林浩做吧——今天是周六,他休息。林晨说到这里突然停了一下。林浩上周刚到鹏城,目前在林晨家暂住,正在厨师学校上课。
苏婉出去了。林晨继续写代码。他在文本信号层加了一个置信度阈值的参数——只有当FinGpt对某条新闻的判断置信度高于百分之七十的时候,才允许干预量价信号。低于七十的不予采纳——这是安全边界,防止模型在不确定的时候乱动仓位。
这个参数的设置不是拍脑袋的。他用了过去两年的新闻数据做回测,发现百分之七十这个阈值下,文本信号的准确率接近百分之八十五,召回率在百分之六十左右。保守但有效——这正是他想要的。
傍晚的时候陈铭发来了一条微信:林总,您周末在用FinGpt ApI跑什么?后台监测到一个人一直在调文本理解接口,每秒十几条——差点触发限流了。
林晨回:接投资系统。给系统做了一层文本信号过滤。回测效果不错。
陈铭发了一串省略号。您周末的爱好是写量化系统?
林晨回了个习惯了,然后继续调参。
晚上九点,他终于跑完了全量回测。新版系统对比旧版,在最近六个月的市场数据上,夏普比率从一点一提升到了一点四,最大回撤从百分之十五降到了百分之十一。不算惊艳——但稳定。而稳定是投资系统最重要的品质。
他在回测报告末尾写了一行注释:
# v4.0 - 融合FinGpt文本理解层。不是让AI取代策略——是让策略在出手之前先学会。