七月初的一个周六上午,林晨坐在书房里做半年投资复盘。
这是他坚持了三年的习惯——每个季度做一次完整回顾,半年做一次深度复盘。书房的桌上摆着两台显示器,左边是他自己写的投资系统管理后台,右边开着一个空白的复盘文档。空调在头顶嗡嗡地吹,苏婉带乐乐去少年宫上Scratch编程课了,家里很安静。
他先拉出了过去六个月的账户净值曲线。一月初的数字是一百零五万,曲线从那里起步,头两周就往下扎了一下——A股年初跌了近百分之三,他的账户跟着回撤了两个多点,净值掉到一百零二万附近。他点开一月份的详细交易日志看了看,那段时间系统没有触发任何调整信号,风控参数一切正常。他当时判断是正常的市场波动,没有干预。事后证明判断是对的——但一月下旬那几天他每天早上醒来都会先看一眼账户,确认没有出格的事情发生。
二月份开始曲线抬头。新版文本信号层在一月中旬正式上线——他把FinGpt对政策新闻和公司公告的自动分析接入了投资系统的信号层。这层东西他打磨了将近三个月,之前一直在回测环境里跑,没敢直接上实盘。上线后效果来得比预想中快:二月中旬系统通过文本信号捕捉到一条央行关于流动性措辞的微妙变化——合理充裕变成了合理适度,两个字的差异,但系统给出了一个偏紧的信号。林晨当时犹豫了一下,让系统自动减了一成权益仓位。两天后市场确实回调了一波,他少亏了大概一万五。那一笔赚的数字不大,但整个逻辑闭环跑通了——从新闻文本到交易信号到下单执行,全自动,没有人工干预。
三月份净值突破一百一十五万。他拉出二到三月的胜率数据看了看——文本信号触发后的交易胜率比纯技术指标高了十一个百分点。这个数字让他放心了一些,但他也注意到了一个问题:文本信号的触发频率太低,平均两天才出一条有效信号。这意味着在大部分时间里系统仍然靠技术指标运行,文本信号只是偶尔的加成。他在复盘文档里记下了这一点:信号频率需要提升,但精度不能降。
四五月市场进入震荡期,沪深三百几乎横盘。林晨的投资系统靠债市配置在这段时间跑出了正收益——账户缓慢上行到一百二十二万。他点开四五月份的持仓记录看了看,债基的占比从年初的百分之三十提到了百分之四十。这个调整是系统自动做的——震荡市里降低权益仓位、加配固收,逻辑没问题。但他翻着翻着眉头皱了一下——四月下旬有一笔可转债交易差点出问题。
那是一只跌破转股价的转债,系统根据均值回归模型发出了买入信号,仓位自动打到了预设上限的百分之八十。林晨当时看了信号觉得没问题就放行了。结果第二天发行方发了一则公告——下修转股价的方案被董事会否决了。转债价格在公告发布后十分钟内暴跌百分之八。他的系统在跌幅触碰到止损线的时候自动平仓了——亏了大约一万二。
他重新打开那笔交易的完整日志,从信号触发到平仓,整个过程的每一个时间戳都有记录。止损执行时间是公告发布后第十二秒。他盯着屏幕上那个数字看了好一会儿。如果止损线再低两个百分点,这笔交易就会变成一个窟窿。如果他的止损机制没有设成全自动而是需要人工确认——公告发布后那十二秒他可能根本来不及操作,因为那天他正在公司开部门周会。
他在复盘文档里加了一段:四月二十八日可转债止损事件。事后归因:文本信号层对公告风险的预判不足——模型只分析了公告文本的情绪倾向,没有识别出董事会否决这一类具有强烈方向性的事件信号。需要增加事件驱动型的文本分类模块。
六月行情起来了。智研项目推进的过程中,他从FinGpt v3的优化里拿到了更强的文本信号源——投研场景的文本理解能力反哺到了投资系统的信号层。六月中下旬科技股有一波像样的行情,系统在六月十五日加仓了一组半导体EtF,六月二十三日又追了一笔AI算力方向的仓位。两笔都踩在了行情启动的早期阶段。月底账户从一百二十二万快速升到了约一百三十万。
他把六个月的净值曲线拉出来跟沪深三百做了对比。沪深三百同期涨了大约百分之五。他的账户从一百零五万到一百三十万,涨了二十五万,半年度收益率百分之二十四。
百分之二十四。林晨对着屏幕自言自语。年化接近百分之五十——虽然下半年市场走势不一定能维持这个速度,但系统至少证明了它的持续有效性。
他开始写复盘文档的月度摘要。一月至六月各月关键节点和数据已经在正文里记过了,摘要只补一条结论:文本信号层是最大增量,事件驱动分类模块是最大短板。
然后他写核心结论——半年增长二十五万,半年度收益率百分之二十四。文本信号层是最大的增量来源,但事件驱动分类模块需要补强。风控整体健康,过去二十个月最大回撤控制在百分之八点七以内。
他停笔想了一下。从2022年到现在三年半,初始本金五万,累计净投入大约二十万——中间向亲戚借过三十万加仓,后来还了——目前账户一百三十万。净赚一百一十万,投入产出算下来是五倍半。这个数字不是他最在意的。他更在意另一个指标:回撤控制。最大回撤百分之八点七,意味着系统从来不让任何一次错误变成灾难。
他在文档末尾写了下半年目标:继续稳健增长,补强事件驱动信号模块,争取年内突破一百六十万。
下午两点,苏婉和乐乐从少年宫回来了。乐乐进门就冲进书房找林晨:爸爸你看!我今天做了一个画图的程序!
林晨接过平板看了看——乐乐用Scratch画了一朵花,花瓣是用循环语句画的,重复十二次旋转三十度。他摸了一下乐乐的头。不错。循环用对了。
乐乐欢天喜地跑了。苏婉走进来,手里拿着一杯柠檬水。她把手机递给林晨——复盘文档她已经看完了。
年初到现在赚了二十五万。
比去年下半年多了不少。
文本信号层接入之后信息优势明显了一些。林晨关掉了后台面板,转过椅子面对她。
苏婉在书房的折叠椅上坐下来。那个四月差点出事的转债,你现在修好了吗?
还在改。需要给文本信号加一个事件分类模块——专门识别这一类有方向性的关键词。估计要一两个月。
你说的自动止损——那十二秒——每次都这么快吗?
止损是系统里优先级最高的指令,触发就执行,不需要确认。
苏婉点了点头。她不懂技术细节,但她记住了差点出事自动止损这两个关键词。前者让她后怕,后者让她安心。她没有追问怎么改,而是问了另一个问题。
那二十五万,你打算怎么放?
按上次的资产配置继续分散。一部分配海外EtF和黄金,一部分留在A股和债基里做复利增长,留百分之十现金。
不再买一套房?
资产集中度已经太高了——大平层的房贷月供五万七,再买房压力太大。而且现在房价走势不明朗,不如把钱留在流动资产里。
苏婉想了一下。那你觉得下半年还能赚这么多吗?
不一定。行情好的时候可能更多,行情差的时候可能回撤。我给自己的目标是年收益百分之三十以上——只要复利持续跑下去,十年之后数字会比较大。
百分之三十——那一年大概就是三四十万。
按一百三十万算,一年三十九万。加上我们两个人的工资,家庭年收入大概一百四十万左右。
苏婉在心里默默算了一下。房贷一年六十八万,乐乐的教育和日常开销一年三十多万,加上给父母偶尔的补贴,一年总支出大约一百万。收入减支出,每年能剩四十万上下。
够用了。她说。
林晨嗯了一声。
苏婉站起来走到书房门口,停了一下。你那个四月的事——以后会不会又出?
不能保证不出。但我能保证出的时候系统会自动砍掉。
苏婉看着他的眼睛。她没有接话,点了一下头,出了书房。外面客厅里传来乐乐的声音——她在给苏婉演示那朵用循环画出来的花。
林晨转回屏幕,打开了一个新的代码分支——事件驱动型文本分类模块。光标闪烁了几秒,他开始写第一行import。