《尘世之外》

第二卷-大学时代 · 第 060 章

第六十章 方向

校门口的电话亭是那种绿色的——铁皮外壳刷了绿漆,漆皮翘起来几块,露着底下的锈。哈尔滨的冬天把铁皮冻得硬梆梆的,手握上去冷得发痛。听筒的塑料壳也是冷的——零下二十度的塑料像一块铁,握在手里两秒就开始往掌心里吸热。

投了两块钱硬币。硬币从投币口落进去的时候在铁皮筒壁里滚了一圈,发出叮的一声,像在空管道里敲了一下——和暖气管里水流撞到弯头的声音差不多。拨号。嘟——嘟——嘟——响了五声。

"喂?"

赵启明的声音从听筒里传出来,清晰得像他站在旁边——上海的信号比哈尔滨好。他的声音比大学时候多了些什么——不是音色变了,是底气变了。底气这个东西听得到——勇敢的人说话字和字之间没有多余的空间,每个字都站得稳。

"是我。"

"之宇?"

"嗯。"

"你在哈尔滨?"

"嗯。实验室。"

"零下多少度?"

"二十几度。"

"上海零上五度。我穿了两件。"他笑了一声。笑声很短,像硬币落进投币口那一下。


"我硕士快毕业了。"

"嗯。"

"准备了论文答辩。下个月。"

"什么题目?"

"中国A股市场的量价关系实证研究。"他说题目的时候语速比说别的话慢了一点——像在念一行标题,每个字都要站住。"答辩完我就去基金公司了。"

"不读博了?"

"不读了。"停了一下。"读完了。硕士够用了。理论的东西已经掌握了,剩下的要在市场里学。"

听筒里的电流声像很远的雨——哗啦啦的,没有间隙。办公室里有人在叫什么——听不清叫什么,像隔了一面墙。赵启明用手捂住了话筒——我听到他说了一句"稍等",然后手松开了话筒。

"我现在在一家对冲基金实习。做量化分析。"

"量化分析。"

"就是用数学模型和计算机程序来分析市场、制定交易策略。"他的语气和讲Black-Scholes模型的时候一样——每个字后面跟着逻辑,逻辑后面跟着证据。"和你写程序算管网有点像。你用代码找最优管径,我用代码找交易信号。输入不同,算法不一定一样,但思路可以互相借。"

思路可以互相借。

他把大三那年信里的话换了一种方式又说了一遍——只是这次他没有在信纸上写,他在电话线那一头的上海说出这几个字。两千公里。从上海到哈尔滨。信号在光缆里跑,带着一点电流声,断断续续地钻进听筒。

"你在做什么?"

"管网优化程序。遗传算法。三千行了。"

"三千行?"他在那头轻轻吹了一声口哨。"你已经能写三千行了?"

"用的C语言。加了选择、交叉、变异三个算子。迭代两千代以上收敛。"

"选代……选择、交叉、变异。"他重复了一遍,语速很慢。"你知道这三个算子在金融里叫什么吗?"

"什么?"

"选股——选优留种。策略交叉——两只策略组合。参数变异——随机调参。你的遗传算法如果换一组输入,把水压、流速、造价那些约束先放到一边,改成收益、回撤、胜率——"

他停了一下。电流声在听筒里哗啦啦的,像松花江冬天的冰面底下水流经过的声音——看不见,但听得到。

"你在写一个量化交易的策略引擎。"

我没有接话。

电话两头安静了三秒。这三秒里面电流声一直没停,像有人把一张很薄的砂纸贴在耳边轻轻摩擦。

"你什么时候回哈尔滨?"他问。

"我没走。一直在。"

"哦。对。你在读研。"他顿了一下?"我说错了——你还在管网里。我已经在K线里了。"

还在管网里。已经在K线里了。


挂了电话。听筒放回去的时候塑料壳碰了一下铁皮框,当的一声,和硬币落进去那一下差不多。零下二十度的塑料听筒被手捂了十分钟,握过的地方留下一个手印——手印很快冻回去了,塑料表面又变得和其他地方一样冷。手心的汗在塑料壳上凝成了薄薄一层水汽,几秒之后就结了霜,霜在路灯下白了一片,像玻璃窗上极小的一片冰花。

走出电话亭。十二月底的哈尔滨,下午五点天已经黑了一小时。路灯照着校园的路——柏油路面冻得发白,踩上去嘎吱响。白杨树只剩枝丫,枝丫在路灯光里投出交错的影子,像一张管网图从天上掉下来铺在地上。

经过图书馆门口的时候站了一下。台阶上的雪被踩出一条窄路,中间的雪变成冰,冰面反着路灯的光。半年前我们在这里拍了毕业照——六个人站在台阶上,身后是"哈尔滨工业大学"六个烫金字。王强穿着大了两号的西装,袖子卷了三圈,站在最右边。林小月站在我旁边,笑得很淡。我穿二手市场买的白衬衫,领口有点松。赵启明站在最左边,领带系得很正——六个人里只有他打了领带。

那时候台阶上没有雪。六月的风吹过来是暖的,白杨树的叶子哗哗响。现在是白色的一片。台阶还是那几级——从下往上走的时候每一步抬高十五公分。耳朵里仿佛还有快门响的那一下——咔——短促,清脆,和硬币落进投币口差不多。


路过修车铺的时候停了一下。铺子亮着灯,卷帘门半开,暖黄色的灯光落在巷口的雪地上。门外有一排大脚印——王强的,四十三码的工装靴,鞋底花纹很深。脚印从巷口延伸到门口,门口叠得最密。

透过卷帘门看到他蹲在一辆车底下——只露着两条腿,裤脚扎在靴子里。机油的味飘出来,和雪的冷气搅在一起。

站了三秒。走了。


回到实验室的路上经过操场。跑道上的积雪被踩成两条窄道——一条绕圈,一条斜穿。交叉的地方踩得最实,几乎成了冰。斜穿操场的人走直线——两点之间直线最短,但直线也最滑,踩的人多了冰面像镜面一样反光。有人开始走边上的雪——雪更厚更软,但更安全。

绕远的路更安全。直路更短但更滑。最短路径不是最优路径——遗传算法的选择算子里写着:适应度不只是距离最短,还有约束条件。水压不能太低,流速不能太快,管径不能太小。

脚下的雪嘎吱嘎吱响。每一步都踩出一个新的脚印。从操场这头到实验室那头,大约四百步。四百步之后到了实验室楼下,抬头看三楼的窗户——灯亮着。电脑还在跑。程序的屏幕在黑暗的实验室里一闪一闪,绿色的。


回到实验室。程序已经跑到了第3500代。适应度668.2——和第2400代比只降了两点。收敛了。程序找到了它的最优解。

拉开椅子坐下。蓝色钢笔还在——笔帽裂了一道缝,缠了两圈透明胶。从初三到研一,笔杆上的漆磨没了,露出底下的黄铜色。

翻开笔记本第一页。1999年,初三。纸页发黄了,边起了毛。第一行写的是两个字:

咸菜。

那两个字写得大,笔画粗,但认真。横折弯钩的弯写得圆——那时候写字还不会用锋,笔尖在纸上过弯没提笔,直接拐过去的。咸菜。陈默的咸菜饭盒。母亲的咸菜坛子。那两个字是这本笔记本的起点。

翻到最后一页。2007年12月。笔记本用了四分之三——前面是给排水公式和管网拓扑图,中间是代码流程图,后面是遗传算法的迭代记录。初三的字一行一格,大而清楚;现在的字一行挤两行——纸只有那么宽,字只能挤。

蓝色钢笔在空白处写了一行字:

管网→算法→?

问号后面是空的。但问号本身就是方向——方向不需要标明终点,只需要指着出路。


合上笔记本。封面泛着灰——棕色硬纸板,四角磨出了白芯,书脊漆也磨了大半。八年从广西到哈尔滨,从咸菜到代码。这本笔记本的头和尾之间隔了八年——八年前第一页写的是"咸菜",八年后最后一页写的是"管网→算法→?"。第一个词是食物,最后一个词是一个问号。食物是活着的底线,问号是方向的起点。

关电脑。屏幕暗下之前最后看了一眼——适应度668.2。程序找到了最优解。但我还没有。

走出实验室。走廊的灯灭了,安全出口的绿牌亮着。推开大门,零下二十度的空气刮在脸上。呼出去的白雾在路灯下散开——一团一团的,每团活两秒就散了。校园里雪很静。白杨树只剩黑枝,枝丫交错在夜空里,像一张管网图——根到干,干到枝,枝到梢。树的管网在上面,城市的管网在下面。上面是光,下面是水。

星星很多。哈尔滨冬天的星星比夏天亮——空气冷,水汽少,天更透。校园里没有高灯了,路灯只能照到路面,照不到天上。仰头看,北斗七星挂在白杨树树梢的方向,勺口朝下,像一把漏斗——水往漏斗里倒,从勺口流出去,流到更低的地方。

往回走。实验室楼后面雪地上一条窄脚印——我的。明天继续优化管网程序。适应度668.2不是终点——不同的地形、不同的需水量,算法每次都重新开始。未来大概也是这样:每次换一组条件,重新算,重新走。

回到实验室门前。钥匙插进锁孔转了两圈——锁芯很紧,哈尔滨的冬天把金属冻得收缩了,钥匙转的时候金属摩擦发出轻微的吱嘎声,和暖气管里水撞到弯头的声音差不多。门开了。灯亮了。电脑屏幕上遗传算法安安静静停在第3500代。明天还会再跑——新的管网数据来了就再跑一遍。管网在地下。代码在屏幕上。K线在远方。

方向是新的。问题还在前面。