2017年10月16日,星期一,上午八点。
深圳,默石资本,技术部实验室。
这是第四季度第一个完整交易周的早晨。窗外,秋意渐浓,天空澄澈如洗,远处的平安金融中心在阳光下反射着淡金色的光。技术部的灯从昨晚就一直亮着——林枫带着他的核心团队,连续工作了整整一个周末。
今天是“默石Alpha”系统2.0版本上线的日子。
陈默走进实验室时,林枫正站在大屏幕前,面前是密密麻麻的代码和图表。他的眼睛里布满血丝,但精神很好——那种在完成一项艰巨工程后特有的、带着疲惫的兴奋。
“准备好了?”陈默问。
林枫点头。“准备好了。过去三个月,我们复盘了2015年股灾期间的所有数据,识别出了三个新的风险因子,优化了两个核心模型。今天,这些更新将正式部署到生产环境。”
他转过身,面对屏幕,手指在触摸屏上滑动。
“陈总,我们开始吧。”
---
第一部分:复盘——从痛苦中学习
林枫调出一张图——2015年6月至9月的市场走势,上面标注了十几个关键节点:6月12日证监会清查场外配资,6月15日千股跌停,7月8日股指期货限空令,7月9日国家队大规模入场,7月13日试探性建仓启动,8月24日二次探底,9月15日市场见底……
“过去三个月,我们团队花了上千个小时,复盘了股灾期间的每一个关键决策、每一次市场异动、每一笔交易记录。我们问自己三个问题:第一,系统当时给出了什么信号?第二,我们实际做了什么决策?第三,系统和我们,错在哪里?”
他调出一张表格,上面列出了十几个“错误”或“不足”。
“总结下来,我们的系统有三个盲区。第一,没有停牌风险因子。当大量公司停牌时,我们的净值计算失真,流动性管理失效。第二,没有政策干预影响因子。当国家队入场、限空令出台时,我们的模型无法量化这些政策对市场微观结构的影响。第三,对极端流动性风险的估计不足。期权市场枯竭、期货贴水扩大、ETF融券被限制——这些‘尾部中的尾部风险’,我们的压力测试没有覆盖到。”
他顿了顿。
“今天,我们要给系统打上‘2015补丁’,补上这三个盲区。”
---
第二部分:新因子——停牌风险、政策干预、极端流动性
林枫调出第一张图——“停牌风险因子”的建模框架。
“停牌风险因子的核心逻辑是:当大量公司停牌时,组合的真实风险被低估了。因为停牌股票的价格被冻结了,但它们的真实价值在变化。我们用‘可比公司法’来估算停牌股票的真实价值——找同行业、同规模、没有停牌的公司,用它们的涨跌幅来模拟停牌股票的潜在涨跌幅。”
屏幕上出现了一个复杂的公式。
“具体来说,停牌风险因子 = 停牌比例 × 行业平均跌幅 × 流动性折价系数。停牌比例越高,风险越大;行业跌幅越大,风险越大;流动性越差,折价系数越高。这个因子会被纳入风控模型。当停牌风险因子超过阈值时,系统会自动降低组合的风险暴露,并建议增加现金储备。”
陈默盯着那个公式。“这个因子,在2015年7月会给出什么信号?”
林枫调出一张历史回测图。“2015年7月7日,停牌比例达到33%,行业平均跌幅20%,流动性折价系数1.2。停牌风险因子 = 0.33 × 0.20 × 1.2 = 0.079,也就是7.9%。系统会发出橙色预警,建议将仓位降低10%。”
“当时我们没有这个因子,仓位是40%。如果有了这个因子,我们会降到36%。”
“对。少亏4%。”
陈默点头。“下一个。”
林枫调出第二张图——“政策干预影响因子”。
“这个因子比停牌风险复杂得多。因为政策干预的形式多种多样——国家队买入、限空令、熔断、降息降准……每一种政策对市场的影响机制都不同。”
他调出一张表格,上面列出了十几种政策工具及其影响参数。
“我们的方法是:用事件研究法,分析历史上每次政策干预后市场的反应。比如,国家队买入权重股,会导致权重股上涨、中小盘下跌,造成‘二八分化’。限空令会导致期货贴水扩大、对冲成本上升。熔断会导致磁吸效应、流动性枯竭。”
屏幕上出现了一个决策树。
“政策干预影响因子 = 政策强度 × 市场脆弱性 × 政策预期差。政策强度取决于干预的规模、力度和持续性。市场脆弱性取决于估值、杠杆、流动性。政策预期差取决于市场对政策的预期与实际政策的差距。这三个维度的乘积,就是政策干预对市场的影响程度。”
陈默盯着那个决策树。“这个因子,在2015年7月8日会给出什么信号?”
林枫调出一张历史回测图。“2015年7月8日,限空令出台。政策强度0.8,市场脆弱性0.9,政策预期差0.7。政策干预影响因子 = 0.8 × 0.9 × 0.7 = 0.504,也就是50.4%。系统会发出红色预警,建议将期货对冲比例提高至上限,并启动替代对冲方案。”
“当时我们确实做了这些。但如果没有林枫的人工判断,系统不会自动触发。”
“对。现在,系统可以自动触发了。”
陈默点头。“第三个。”
林枫调出第三张图——“极端流动性因子”。
“这个因子的核心逻辑是:在极端市场环境下,流动性会枯竭,导致交易成本急剧上升,甚至无法交易。我们用三个指标来度量流动性——买卖价差、市场深度、成交量萎缩率。”
屏幕上出现了三个子图。
“买卖价差,正常市场是0.1%到0.2%,2015年7月扩大到了1%到2%。市场深度,正常市场是几百万到几千万,2015年7月降到了几十万。成交量萎缩率,正常市场是10%到20%,2015年7月达到了50%以上。”
“极端流动性因子 = 买卖价差 × 市场深度倒数 × 成交量萎缩率。当这个因子超过阈值时,系统会自动暂停交易,并启动应急流动性管理程序——比如用ETF替代个股、用期货替代现货、用现金储备应对赎回。”
陈默看着那张图。“这个因子,在2015年7月8日会给出什么信号?”
林枫调出历史回测。“2015年7月8日,买卖价差1.5%,市场深度20万,成交量萎缩率60%。极端流动性因子 = 1.5% × (1/20万) × 0.6 = 0.000045。听起来很小,但阈值是0.00001。超过4.5倍。系统会发出黑色预警——最高级别——建议暂停所有交易,只保留现金和期货对冲。”
陈默沉默了几秒。“如果我们当时有这个因子,会怎样?”
林枫想了想。“我们可能会更早暂停卖出,避免在流动性枯竭时强行交易。我们的交易成本可能会降低1%到2%。”
“不错。”陈默说,“这三个因子,全部纳入风控系统。”
林枫点头。“已经写进代码了。今天部署。”
---
第三部分:模型优化——市场状态识别与策略轮动
林枫调出第四张图——“市场状态识别模型2.0”。
“原来的模型把市场分为四个状态——强牛市、弱牛市、震荡市、熊市。但2015年的经验告诉我们,还有一种状态——危机状态。危机状态的特征是:流动性枯竭、政策干预频繁、市场微观结构扭曲。”
他调出一张新的分类图,五种状态:强牛市、弱牛市、震荡市、熊市、危机状态。
“危机状态的识别指标包括:停牌比例超过20%,期货贴水超过5%,波动率指数超过40,融资余额下降速度超过10%/周,政策干预强度超过0.5。当这些指标中的三个以上同时触发时,系统判定进入危机状态。”
“危机状态下的策略是:第一,仓位降至30%以下;第二,对冲比例提高至上限;第三,现金储备提高至40%以上;第四,暂停所有买入;第五,启动应急流动性管理程序。”
陈默看着那张图。“这个模型,在2015年6月会给出什么信号?”
林枫调出历史回测。“2015年6月15日,千股跌停第一天。停牌比例5%,期货贴水1%,波动率指数25,融资余额下降速度2%/周,政策干预强度0.1。只有1个指标触发,系统判定为‘熊市’,不是‘危机状态’。6月26日,停牌比例15%,期货贴水3%,波动率指数35,融资余额下降速度8%/周,政策干预强度0.3。三个指标触发,系统判定进入‘危机状态’。比我们人工判断早了三天。”
“早了三天?”陈默的眼睛亮了一下。
“对。如果我们当时有这个模型,我们会在6月26日就将仓位降至30%,而不是等到7月1日。那三天,市场跌了15%。我们的净值可能会少亏2%到3%。”
陈默深吸一口气。“这就是系统的价值——比人更快、更冷静。”
林枫调出第五张图——“策略轮动模型2.0”。
“原来的策略轮动模型,是在强牛市、弱牛市、震荡市、熊市之间切换策略。现在,我们加入了‘危机状态’,也加入了‘复苏状态’。”
“复苏状态的特征是:市场从危机中恢复,流动性改善,政策退出,估值处于历史低位。识别指标包括:停牌比例低于10%,期货贴水低于2%,波动率指数低于30,融资余额企稳回升,政策干预强度低于0.2。”
“复苏状态下的策略是:第一,逐步提高仓位至60%;第二,降低对冲比例至30%;第三,降低现金储备至20%;第四,开始试探性建仓,优先买入估值低、基本面强的龙头股;第五,恢复买入指令。”
陈默看着那张图。“这个模型,在2015年7月13日会给出什么信号?”
林枫调出历史回测。“2015年7月13日,停牌比例25%,期货贴水4%,波动率指数45,融资余额还在下降,政策干预强度0.4。只有1个指标触发,系统判定还是‘危机状态’,不是‘复苏状态’。7月27日,二次探底。8月24日,第三次探底。9月15日,停牌比例降至10%,期货贴水降至2%,波动率指数降至30,融资余额企稳,政策干预强度降至0.1。四个指标触发,系统判定进入‘复苏状态’。比我们人工判断早了三天。”
“早了三天?”陈默重复。
“对。如果我们当时有这个模型,我们会在9月15日开始加大买入力度,而不是等到10月。那一个月,市场反弹了10%。我们的净值可能会多赚3%到5%。”
陈默沉默了几秒。“也就是说,有了这个模型,我们可以在危机中更早地收缩,在复苏中更早地扩张。收益可能提高5%到10%,回撤可能降低5%到10%。”
“对。这就是系统进化的价值。”
---
第四部分:部署——2.0版本上线
林枫调出最后一张图——“默石Alpha系统2.0架构图”。
新的架构比1.0复杂得多。数据层新增了“政策数据”和“停牌数据”;因子层新增了“停牌风险因子”“政策干预影响因子”“极端流动性因子”;模型层新增了“危机状态识别模型”“复苏状态识别模型”;决策层新增了“应急流动性管理程序”“政策应对预案”。
“今天,这些更新将全部部署到生产环境。”林枫说,“从今天起,默石Alpha系统不仅能识别正常的市场状态,还能识别危机和复苏。不仅能处理常规风险,还能处理停牌、政策干预、流动性枯竭等极端风险。”
他顿了顿。
“2015年,我们付出了巨大的代价——净值回撤、客户流失、团队疲惫。但这些代价,没有白费。我们把每一次痛苦,都转化成了代码;把每一次错误,都转化成了因子;把每一次危机,都转化成了系统的进化。”
他转过身,面对陈默。
“陈总,默石Alpha系统2.0,准备就绪。请指示。”
陈默站起来,走到大屏幕前。他看着那张复杂的架构图,沉默了很久。
然后他伸出手,拍了拍林枫的肩膀。
“部署。”
林枫点头,转身面对技术团队。
“开始部署。”
技术团队的工程师们开始执行。屏幕上,代码在滚动,服务器在重启,数据在同步。一切都在安静地、有序地进行。
十五分钟后,林枫报告:“部署完成。系统运行正常。所有新因子已激活,所有新模型已上线。”
陈默看着屏幕上的绿色指示灯——全部亮起。
“林枫,谢谢你。”
林枫摇头。“不是谢我。是谢所有人。谢清如的研究,谢方远的执行,谢交易员们的反馈,谢技术团队的加班。没有他们,我什么都不是。”
陈默笑了。“你又来了。每次都说‘不是我’。”
林枫也笑了。“因为真的不是我。我只是一个拼图的人。拼图的设计,是大家一起想的。”
陈默走到窗边,看着窗外的深圳。秋日的阳光,温暖而柔和。远处的平安金融中心,在阳光下闪闪发光。
他想起2015年7月,他们在血流成河的战场上,捡起第一块金子。想起2016年1月,熔断闹剧中的荒诞与无奈。想起2017年6月,净值创新高时的释然与泪水。
那些痛苦,没有白费。它们变成了代码,变成了因子,变成了模型,变成了系统。变成了未来最坚固的护城河。
他转过身。
“林枫,我想起老陆说过的一句话。”
“什么话?”
“每一次危机,都是一次进化的机会。不进化,就死亡。”
林枫点头。“我们进化了。”
“对。我们进化了。”
陈默走出技术部,经过研究部。沈清如正在录制投资者教育的视频课程,声音温柔而坚定。他经过交易室,方远在整理明天的交易计划,交易员们在安静地工作。他经过客服部,小刘在给客户发新产品说明书。
每一个人都在做自己的事。安静的,专注的,有条不紊的。
他知道,无论市场如何变化,无论危机如何来临,他的团队都会坚守自己的位置。不是因为他们不怕,是因为他们准备好了。系统准备好了,团队准备好了,心也准备好了。
他走进办公室,关上门,坐在椅子上。
手机震动了。是林枫发来的消息:“系统2.0运行正常。今天没有异常。”
他回了一条:“好。继续监控。”
林枫秒回:“明白。”
陈默放下手机,站起来,走到窗边。
窗外,深圳的夜景即将来临。夕阳的余晖洒在城市的高楼上,镀上一层金色的光。
他想起2015年股灾最惨烈时,自己在车公庙的小办公室里,看着屏幕上的数字,无能为力。那时候,他没有系统,没有团队,没有准备。现在,他有系统,有团队,有准备。
不是因为他聪明,是因为他痛苦过。不是因为他勇敢,是因为他害怕过。不是因为他能预测未来,是因为他愿意为每一种可能做准备。
他转过身,关掉灯,走出办公室。
走廊里,灯光明亮。他经过技术部,林枫还在监控系统运行。他经过研究部,沈清如还在录制视频课程。他经过交易室,方远还在整理交易记录。
每一个人都在做自己的事。安静的,专注的,有条不紊的。
他走进电梯,按下一楼的按钮。
电梯门关上,数字从18跳到1。
叮。门开了。
大堂里空无一人,只有保安在值班。
“陈总,今天这么早?”保安问。
“嗯。今天早点回去。”陈默点头,“辛苦了。”
他走出大楼,深吸一口秋天的晚风。十月的深圳,凉爽而干燥,空气中弥漫着一种桂花的甜香。
远处,夕阳正在沉入地平线,留下最后一抹橙红色的光。
他知道,系统进化了,团队进化了,他也进化了。不是变得更聪明,是变得更谦逊。不是变得更勇敢,是变得更谨慎。不是变得更贪婪,是变得更清醒。
他坐进车里,发动引擎。收音机自动打开,传来一个声音:“……今日A股圆满收官,上证指数收于3400点。市场平稳,成交量温和……”
他关掉收音机。不需要听这些。他知道,市场还会波动,危机还会再来。但他的系统,已经准备好了。
他挂上倒挡,驶出停车场,汇入深南大道的车流。
前方,是更长的路。是更多的危机,更多的进化,更多的成长。
他握着方向盘,眼睛看着前方的路。路灯一盏一盏地亮起来,像一条光河,流向远方。
他不知道这条河的尽头是什么。但他知道,无论是什么,他的系统都会给出信号。他的团队都会做好准备。他的心,都会保持平静。
身后,默石资本的办公楼在夜色中渐渐模糊。十八层的灯光,在黑暗中闪烁,像一座灯塔。
照亮进化的路。