30847.52。
屏幕右上角的账户余额停在八和四之间——30847点五二。小数点后面两位,五和二,黑色的字在浅灰的背景上。三千零八百四十七块五毛二分——不,三万零八百四十七块五毛二分。账户总资产。本金三万加利润八百四十七块五毛二分。
八百四十七块五毛二分。他盯着这个数字看了一会儿。不是盯着看了——是目光自然地停在那儿,就像停在一根K线的拐点上。八百四十七。八月中旬。从七月初到八月中旬,六个星期,四十二天,三十个交易日——Aurora跑了三十个交易日,八百四十七块的利润落在了账户里。
他拿蓝色钢笔在笔记本上算了一下。年化收益率——30847.52除以30000,减1,除以42天乘365天——算不过来。他算了一个月化的大概:847除以30000,百分之二点八二。月化2.82%。不高。但正的。正的意味着方向没有错。
两周的真实交易。从七月八号第一笔买入平安银行开始,Aurora在三十个交易日里一共做了六十七笔交易——买入三十三笔,卖出三十四笔,卖比买多一笔是因为有一笔是止损卖出。止损的那一笔亏了二百一十三块,是七月底的一只医药股,买入之后跌了百分之五点二,止损线触发了,程序自动平仓。二百一十三块从账户里划走的时候他正在吃午饭——吃的是楼下快餐店的青椒肉丝盖饭,十五块。他吃完了盖饭回来,看到清算记录上的-213.00,放下筷子看了八秒。八秒之后他把记录翻过去了。止损是止损。赵启明说的——止损不是认输,是给下一次机会留本金。
止损的逻辑写了二百行代码,比整个策略模块还多。策略模块只有一百二十行——双均线交叉,五日和二十日,金叉买入,死叉卖出。思路简单到可以在纸上画出来:五日线从下往上穿过二十日线就是金叉,买;五日线从上往下穿过二十日线就是死叉,卖。画两根线,看交叉点,完。一百二十行代码把这两根线画进了程序。
但止损模块有二百行:固定百分比止损、追踪止损、时间止损、波动率自适应止损。四道止损,一层套一层。第一道看亏损比例,第二道看回撤持续时间,第三道看持仓时间,第四道根据波动率调整阈值。
四层止损的逻辑很笨,但笨得可靠。一道规则失效,还有下一道。价格跌得快,就走固定止损;价格慢慢磨,就走追踪止损;行情不动,就走时间止损;波动突然放大,就让阈值自己收紧。四道防线把风险框死在百分之五以内。
二百行代码,二百行止损。赵启明的话只有一句:"止损不是认输,是给下一次机会留本金。"但这句话展开以后有二百行——每一条止损规则都对应一个数字,每一个数字对应一个百分比,每一个百分比对应一次回测,每一次回测对应一组参数。二百行代码把一句话变成了一道墙。
夜里。深圳的八月,十一楼,窗开了一条缝。
外面是湿的。空气从窗缝里挤进来,挤进来的不是风——风太小了,挤进来的是热气,带着潮气,贴在皮肤上像一层没干透的毛巾。空调开着二十六度,但窗缝进来的热气让室温始终在二十七度和二十八度之间摇摆——温控器上的数字跳来跳去,和K线一样,跟着波动。
他坐在工位前面。工位上两台显示器——左边是智水平台的维护终端,右边是Aurora的实时监控面板。智水平台的数据面板已经最小化了,任务栏里一个蓝色小方块,按一下能弹出来,但按出来看到的还是那些数字——水压、流量、水质,三组数据,每三秒跳一次,跳给空气看。
右边屏幕上Aurora在跑。行情接口拉下来的实时数据,每一秒刷新一次。价格在跳,成交量在累加,买卖五档的数字一行一行改。Aurora在后台运算——五日均线、二十日均线、止损线、止盈线、仓位比例。运算完了等信号。信号没来就继续等。
他看着Aurora看着市场。两层注视。他注视屏幕上的Aurora,Aurora注视市场上的数据。数据是市场的影子——价格涨了就是一根阳线,价格跌了就是一根阴线,阳线阴线交替出现,把看不见的情绪画出来。
风扇在旁边转。不是空调——是一台转页扇,塑料外壳的,三个叶片在铁丝网后面搅动热空气。风扇底下有一圈灰——深圳的灰和哈尔滨的不一样,哈尔滨的灰是干灰,手指一抹就干净了,深圳的灰是油灰,黏在塑料上像涂了一层胶,抹也抹不掉。风从他右后方吹过来,吹到后颈上,后颈的汗被风带走了一部分,凉了一小片,但汗又从毛孔里渗出来,凉意只维持了一秒就没了。和止损一样——风来的时候温度降了一点,风走了温度又升回来,升回来之后等着下一次风。
远处有雷声。深圳八月的雷不打闪电,只从天边滚过一阵闷响,像重型卡车在很远的高速公路上开过去。雷声滚过来又滚过去,雨没下——闷雷不下雨是深圳八月的常态,天在酝酿雨,但雨一直压着。
桌上摊着方便面的调料包——老坛酸菜的红色铝箔袋,撕开一半,里面的调料粉倒完了,袋子扁了,边缘的铝箔卷起来。他收了调料包扔进垃圾桶,垃圾桶里还有早上那桶方便面的空桶和两只一次性筷子。筷子交叉插在空桶里,木头泡得发白。
他想起高中机房里的那个晚上。
十年前。高二。冬天。机房在实验楼三楼,暖气供不上,窗户漏风,暖气管在墙角只热了一半——热的那一半摸着烫手,凉的那一半摸着和窗框一样冷。他在机房里写QBASIC程序——管道流量计算器,三十行代码。输入管径和流速,程序算流量,Q=πR²×v。圆周率3.14乘半径的平方乘流速等于流量。管子粗一点水就多一点,流速快一点水也多一点。这就是全部——三十行代码,一个公式,一个输入输出。
现在他写的是Aurora。五百零三行代码。但逻辑的内核和那个三十行的管道流量计算器没有本质区别——输入数据,算法处理,输出结果。公式从Q=πR²×v变成了均线交叉+止损逻辑+仓位管理。复杂了——从三十行变成了五百零三行,但还是先定义变量,再让结果自己出来。
他打开笔记本。蓝色钢笔。
十年前写水管计算器——30行代码。今天写Aurora——500行代码。流动的形状一样。
笔尖在"一样"两个字后面停了一下。然后他又写了一行:
止损200行,比策略还多。赚钱的代码短,活下来的代码长。
合上笔记本。笔帽套回去的时候咔嗒了一声——透明胶被按了一下,胶带的边翘了一点,他用拇指把翘起来的边按平了。
Aurora在屏幕上继续跑。数据一秒一秒地来,均线一段一段地算,信号灯灰着——灰色,等待。三百四十七块是七月八号一天的成绩,八百四十七块是六个星期的成绩。利润在账户里积累,一笔一笔,很慢。止损保的是本金——每次亏掉百分之五就止损,账户里永远留下下一次进场的钱。有下一次,就还有可能赚回来。
窗外传来一声汽车喇叭——太远了,听不清是哪条路。楼下的烧烤摊还在开——八月的深圳,夜市要到凌晨两三点才收。烤串的香味从窗缝里钻进来,和空调吹出的凉气搅在一起,变成一种又冷又热又呛又香的味道。
三万零八百四十七块五毛二分。不多。但方向是对的——资金从市场进到账户。算法没有换,数据换了。
他关了台灯。显示器还亮着。Aurora还在跑。灰色的信号灯一闪一闪,在夜里的办公室像一只不闭眼的猫。等着。信号来了就亮——绿色买入,红色卖出。没信号就灰。灰着等。
十年前写管道流量计算器的那台电脑是机房的台式机,十五寸CRT显示器,分辨率800乘600,屏幕上白色的代码一行一行往后排,排到最下面一行的时候自动上滚,把上面几行卷出屏幕外面,和现在Aurora的日志窗口一样——一行一行往后排,排到最下面一行的时候自动上滚,前面那些行看不见了,但它们还在内存里。机房里暖气不够热,穿着校服的手指敲键盘的时候指关节有点僵,但敲下去了就不冷了——手指在动,血也热起来。
十年。从三十行到五百零三行。从Q=πR²×v到均线交叉+四层止损+仓位管理。从机房的暖气片旁边到深圳十一楼的空调旁边。从给排水到量化交易。
流动的形状一样。数据换了。