百度的数据中心不在上地——在亦庄。从西北旺开车过去要四十分钟,走五环。九月的风从车窗灌进来,带点凉——北京的九月开始转凉了,早晚要加一件,中午还热。车里开着暖风,风吹在脸上是暖的,和车窗外面灌进来的凉风混在一起,冷热交替,像设计院工地上站在基坑边的感觉——脚底是暖的,地温高;上面是冷的,风从地面刮过来。
数据中心是一栋灰色的大楼——没有玻璃幕墙,没有设计感,就是灰色的混凝土和金属百叶窗。百叶窗是通风用的——机房要散热,空调不够,还得靠自然通风。和管道井一样——管道井里有通风口,因为管子散热,尤其是热水管。热水管外面要包保温层,但保温层只能减慢散热,不能阻止。和数据中心一样——空调只能减慢升温,不能阻止。一千台服务器的热量是挡不住的。
大楼门口的铁门很厚,刷卡才能进。卡不是百度的工牌——是专门的门禁卡,白的,上面只有一个编号。工牌是身份,门禁卡是权限。身份和权限是两回事。你有百度的身份,但不一定有数据中心的权限。
进去之后是走廊。走廊很长,灯光是白的——不是办公室那种暖黄,是冷白,照得人脸色发青。冷白光像月光——月光也是冷白的,照什么都是灰的。走廊两边是机房,机房的门也是铁的,玻璃窗很小,从外面看不到里面。
推开门。声音先到了——嗡嗡嗡嗡。一千台服务器的风扇同时在转,声音不是嗡嗡的——是哗的,像站在瀑布旁边。空气是干的,有股金属的味道——铜和铝和硅的味道,热的。铜是电路板的走线,铝是散热片,硅是芯片。三种金属的味道搅在一起——和设计院工地上混凝土、沥青、铁锈的味道一样,几种味道搅在一起闻久了就分不清了。
空调拼命吹——机房温度控制在二十二度,但一千台服务器散发的热量让空调一直在满负荷运转。冷风从天花板上压下来,热气从服务器后面排出来,冷热在中间碰头。
机柜排成行,一排一排,像墓碑。黑色的铁皮柜,上面亮着绿色和黄色的灯——绿灯是正常的,黄灯是告警。一排机柜三十台,一百排,三千台服务器。每一台上面贴着标签——编号、IP地址、所属业务线。标签是打印的,白底黑字,贴在铁皮上有点翘角——机房的温度和湿度让胶水老化了。和管道上的标签一样——管道出厂的时候贴着标签,标着管径、壁厚、材质、出厂日期。标签在土里埋几年就烂了,但管子还在。
地图数据的机柜在D区第三排。D-3-17到D-3-22,六台服务器。刘洋说:"百度的地图数据全在这六台机器上。路网、POI、实时路况、用户轨迹——都在。"
POI——Point of Interest,兴趣点。商场、餐厅、加油站、医院——地图上每一个有名字的点都是POI。北京的POI有几十万个。几十万个点,十几万条边,这就是北京在数据库里的样子。不是真实的北京,是数据的北京。数据比真实简单,只有坐标和属性,没有灰尘、没有风、没有人的表情。但够了。计算不需要那些东西。
白天在数据中心调试路线规划的算法。数据量大了之后算法的行为不一样——在小图上跑四百毫秒的策略,在大图上要四秒。四秒不行。又开始优化。
索引结构重写——用四叉树做空间索引,把北京切成四块,每块再切四块,切到每一块里不超过一千个节点。查询的时候从最大的块开始找,一层一层往下钻。大问题拆成小问题,速度就下来了。
优化完。四百毫秒回来了。
数据在服务器上跑——每秒几百个查询,每个查询几百毫秒。服务器日志刷得很快,黑底绿字,一行一行往上翻。每行是一个查询的记录:进来一个起点和终点,出去一条路线。
晚上回出租屋。九点。
Python环境。不是百度的数据了——是自己的。股票数据、期货数据、外汇数据——最近几个月开始拉更多的数据。不只是日K线了——开始看分钟K线、Tick数据。数据量比日K线大了一百倍——一天四小时交易时间,每分钟一根K线,一天二百四十根。日K线一天才一根。二百四十比一。
数据在屏幕上刷,数字一行一行往上翻,和百度服务器日志一样。但百度日志里的是地图查询,这里的是价格变动。两种数据,同一种格式:时间戳、数值、标识。
移动平均线交叉——已经试过了,7.8%。
动量策略——追涨杀跌,年化9.2%。
均值回归——跌多了买、涨多了卖,年化8.5%。
布林带突破——价格突破布林带上轨买入,突破下轨卖出,年化6.7%。
都不够。都不够好。不是因为算法不行,是因为这些策略太"对称"了。所有人都能算均线,所有人都能看到动量和均值。没有信息差。所有人都能算的东西,最后就不会是谁的优势。
赵启明说的"不对称"——在哪里?
一天晚上画了一张图。把一张K线图打印出来,然后在上面叠加了一张旧图。
A4纸上先打印了K线——横轴是时间,纵轴是价格。涨跌波动,起起伏伏。然后用蓝色钢笔在高点上标一个圆圈,低点上标一个圆圈,圆圈之间用线连起来。
高点是价格的压力位,低点是价格的支撑位。画出来以后,它不再只是曲线,开始有了结构。
高点到低点是一条边,低点到下一个高点是另一条边。每条边有方向,也有幅度。
结构看起来相似。
节点——价格极值点。
边——时间区间内的价格变化。
权重——波动幅度。
K线变成了一张图。
翻开笔记本。蓝色钢笔。
在"赵启明找到了不对称的地方——市场。我呢?"下面,画了一张小图。
水压曲线。
K线。
没有问号了。至少这一页上没有。
两行字并排放着,结构像是有了。方向在哪?
林小月从哈尔滨打电话来。
"你还写代码吗?"
"写。"
"除了百度的代码呢?"
"也写。"
"写什么?"
"数据。流动的数据。"
"听不懂。"
"我也不太懂。"
她在那头笑了一声——不是嘲笑,是无奈的笑。和她问"你是不是又想做别的事了"时候的笑一样。她笑的时候声音比说话的时候轻——笑声是从鼻子里出来的,短,像暖气片里气泡撞到管壁的声音。
"你在北京还习惯吗?"
"习惯。"
"想我吗?"
"想。"
"想怎么不打电话?"
"忙。"
"忙什么?"
"代码。"
又是代码。她不说什么了——不是生气,是习惯了。从大学时候开始,我在写代码的时候就不太说话。写代码需要脑子全部占满——变量、循环、条件、返回值——没有空间留给别的。她理解——但理解不等于接受。理解是脑子的事,接受是心的事。脑子里她知道我在做什么,心里她还是觉得我应该多打电话。
"我下个月论文答辩。"
"嗯。加油。"
"你都不问我论文写什么。"
"写什么?"
"高分子薄膜的拉伸力学性能。"
听不懂。就像她听不懂"流动的数据"。两个专业,两种语言。她在材料里找性能,我在数据里找方向。
"答辩完我来看你。"
"好。"
挂了电话。屏幕上K线还在。笔记本上那两行字还在。结构像是有了,方向还没定。
窗外北京的天黑了——九月底的天黑得早了,七点就暗了。远处的工地还在响,咚、咚、咚。打桩的声音比几个月前远了,工地在往外移,城市的边界也在往外推。
扩张。加法。陈默的加法是一层一层加,我的加法是一行一行加。城市在加,市场也在加。方向不同,但都停不下来。